【问题标题】:How to best handle Sql connections in long running processes with Ninject?如何使用 Ninject 在长时间运行的进程中最好地处理 Sql 连接?
【发布时间】:2014-08-29 04:16:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# azure ninject idbconnection


    【解决方案1】:

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

    interface IConnectionFactory{
               IDbConnection Open();
    }
    

    【讨论】:

    • 当然答案是“添加一层间接/抽象”...非常感谢!可能会使用 Provider 模型,因为我们所有的代码无论如何都绑定到 Ninject... :)
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多