小编spo*_*ner的帖子

存储库模式,共享连接

我发现了很多存储库模式的例子,所有这些都显示了存储库管理它自己的连接生命周期.我想知道人们如何处理他们希望在多个存储库之间共享单个连接的情况?

我问的主要原因是因为当我使用TransactionScope创建一个事务时,我真的不希望它升级到DTC事务.虽然设置简单,但它似乎有点重量级.

我在想的是使用类似于TransactionScope的东西来管理连接生命周期.但是,似乎是将数据访问链接到业务流程一点点.我的意思是:

//As DataScope will handle connections, then repositories will be created from them
//in order to share the connection.
using(DataScope scope = new DataScope())
{
   scope.GetRepository<CustomerRepository>.FindById(10)
}
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net repository-pattern

4
推荐指数
1
解决办法
1724
查看次数

MEF应该用于生产应用吗?

我目前需要提供一种在我的应用程序中添加可扩展性的方法.我目前正在寻找MEF和MAF.

MEF提供了一种更简单的编程模型,并且更适合我们的使用场景,因为我们只想将插件加载到单个AppDomain中 - 这是由于系统的架构方式.使用几行代码的MAF也可以实现同样的目的.

但是,我想知道MEF是否应该用于生产系统,因为它的预览状态?

.net mef

4
推荐指数
1
解决办法
875
查看次数

使用ThreadPool线程与长时间运行的ADO.NET查询.这可扩展吗?

我们目前正在增强一个ASP.NET应用程序,可以对许多产品执行引用.

目前,现有的引用引擎基本上是一个大的存储过程(每次调用2-3秒),然后是在过程调用之后运行的少量业务逻辑.

我们正在考虑对每个产品进行多线程调用,以加快一组报价.

我们当前的方法是将每个产品报价工作封装在ThreadPool线程中.这似乎表现得更好,但我有点担心虽然它在少数用户中表现良好,但它能在生产环境中很好地扩展吗?

请注意,目前我们没有使用异步ADO.NET方法.

注意:我们调用ThreadPool的代码具有对请求进行排队的限制,因此我们一次只能使用ThreadPool中可配置数量的线程.我们也不需要在同一页面上等待报价结果,我们允许用户前进并检查更新(报价结果页面使用AJAX来检查结果).

进一步说明:首选解决方案是使用消息队列,因为报价服务是单向操作.但是,该项目的时间表并没有为我们提供时间.

与此同时,我们将修改实现以使用ADO.NET的异步方法(因为这是进程的所有长期运行方面),节省了使用ThreadPool线程的需要.

asp.net ado.net multithreading threadpool

2
推荐指数
1
解决办法
1837
查看次数