0

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

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

  • 使用 ServiceLocator 模式并在我们处理的每条消息上请求新连接
  • 保持连接(即什么都不做)

老实说,我不喜欢任何一个,我希望有其他的解决方案......

4

1 回答 1

1

我将排除 ServiceLocator (anti)Pattern。在我看来,使用 NInject 的概念Provider<ISomething>会满足您的需要。基本上,提供者是一种为您返回您可以使用的连接的工厂,可能在一个using范围内。如果您想更加独立于“IoC gotcha”,您可以拥有例如IConnectionFactory这样的:

interface IConnectionFactory{
           IDbConnection Open();
}
于 2014-07-08T12:30:33.227 回答