如何使用Ninject在长时间运行的进程中最好地处理Sql连接?

时间:2014-07-08 12:15:38

标签: c# azure ninject idbconnection

我们有一个Azure工作者角色(基本上与Windows服务相同),我们将Ninject用于IoC并将IDbConnection注入我们的工作人员。最佳实践表明,您应该在不再使用连接时立即处理连接,而是在可能或可能没有意义的工作人员/服务中。那么在这种情况下处理数据库连接的好方法是什么呢?

我们的选择包括(也许也不限于此):

  • 使用ServiceLocator模式并在我们处理的每封邮件上请求新连接
  • 保持连接(即不做任何事情)

我不喜欢说实话,我希望还有其他解决方案......

1 个答案:

答案 0 :(得分:1)

我将排除ServiceLocator(反)模式。 在我看来,使用Provider<ISomething>的NInject概念将符合您的需要。基本上,提供程序是一种为您提供可以使用的连接的工具,可能在using范围内。如果你想要更加'IoC gotcha'独立,你可以拥有这样一个IConnectionFactory

interface IConnectionFactory{
           IDbConnection Open();
}