【问题标题】:IoC/Dependency Injection - Best Practies for n-tier applicationsIoC/依赖注入 - n 层应用程序的最佳实践
【发布时间】:2013-11-26 18:37:41
【问题描述】:

我再次来找你,问一些最佳实践问题

我正在开始一个新项目,我希望能够正确地对其进行测试,因此我求助于 IoC 和依赖注入。我已经对这个概念有了相当多的了解,但是我想问你一些小细节。

我将使用 3 层应用程序架构
ASP.NET -> BLL -> DAL

第一个问题 我的第一个问题是如何最好地解决依赖关系。将它们注入构造函数中,在我看来,在某些情况下,我将拥有具有大量依赖项的 biiig 构造函数,即使在实际代码路径中我只需要其中的几个。 另外我担心的是实例化我可能需要的所有依赖项,但不会正确地实例化,或者可能需要能够实例化较低的东西(我知道你应该从依赖解析器中获取它)? 所以问题:如何在不浪费资源或使初始化缓慢的情况下注入多个依赖项

第二个问题 依赖项将提供给我的 MVC 应用程序中的许多控制器,在这里间接使用依赖项是明智的,BLL 可能也是如此。但是在 DAL 的深处呢?假设除了其他一些数据提供者之外,我还需要使用 CustomerDataProvider 和 OrderDataProvider。是直接实例化,还是这里再使用依赖注入?

第三个问题 最后一个问题,我如何设法将分片合并到所有这些中?我所有的客户端都将在同一个 WebServer 上运行,但它们都有自己的 DB(分片),我也将有一个 Master DB,你如何在 NInject 中适应这一点?

【问题讨论】:

  • @Steven 感谢您的链接。我想对我的具体问题有更深入的回答。但是你的链接,当然值得一读。
  • 至于第三个问题,听起来和IoC无关,而是和实际的数据访问技术有关。
  • @WiktorZychla 不是直接不,而是开箱即用,NInject 中的基本“绑定和解析”,不允许您有条件地更改对象(例如,更改连接字符串)。所以我想知道最好的方法是什么。有人建议将工厂绑定到 IoC 容器,然后在工厂中创建和管理不同的连接。

标签: c# design-patterns dependency-injection ninject


【解决方案1】:

我会得到一本 Mark Seemann 关于 DI 的书。他有一个关于注射什么和不注射什么的部分。他的建议之一是只注入“不稳定”的依赖项。这将缩短构造函数的参数列表。他的博客可能涵盖了这个主题,但我不确定。

【讨论】:

  • 谢谢大卫,我会研究那本书!
  • 是的。毫无疑问,阅读这本书是提高您对依赖注入知识的最佳方式。
猜你喜欢
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2019-05-23
  • 2011-12-30
  • 2010-12-13
  • 1970-01-01
相关资源
最近更新 更多