【发布时间】:2010-10-03 21:15:55
【问题描述】:
我有一个 3 层 .NET 服务应用程序,它遵循标准方法:
Frontend -> Object Model / Business Logic -> Data Access
我一直在尝试学习依赖注入,到目前为止发现它很棒(使用 Autofac)。 3 层中的每一层都需要创建各种各样的对象,有时还需要额外的配置等。看起来 DI 容器应该是解决这个问题的理想之选,但我在查看它与系统其他部分的关系时遇到了一些问题。
目前我在前端有一个配置 DI 容器的类。它基本上是一大堆代码,上面写着container.Register<SomeType>() 等等。
问题是,它正在为所有 3 层配置容器,因此必须对数据访问层有相当深入的了解。在我的前端拥有这样知识的代码会在我脑海中敲响警钟,因为将应用程序分成几层是为了避免这种确切的情况。
更糟糕的是,我的数据访问层不仅仅是 SQL 服务器,它是一个愚蠢的比特桶,而是由许多复杂的 COM 互操作和 P/Invoke 调用组成,因此对 DI 有相当大的影响配置。
我已经考虑过将其分解——可能每层有一个容器,或者在每一层都有一个“设置”类,它与全局 DI 容器对话以注册它自己的位,但我不确定是否这将导致比它解决的问题更多...
如果有人能分享他们在多层应用中使用 DI 的经验,我将不胜感激。
谢谢,猎户座。
【问题讨论】:
-
你有类似服务层的东西吗?以便您的前端在业务对象之前与它进行交互。
-
我不确定我是否理解你所说的“服务层”......“服务”现在是一个被滥用的通用术语:-(
标签: .net dependency-injection n-tier-architecture