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