我有一个3层的.NET服务应用程序,遵循标准方法:
Frontend -> Object Model / Business Logic -> Data Access
我一直在努力学习依赖注入,到目前为止已经发现它很棒(使用Autofac).3层中的每一层都需要创建各种各样的对象,有时需要额外的配置/等.似乎DI容器应该是理想的解决方案,但是我遇到了一些问题,看看它应该与系统的其他部分相关.
目前我在前端有一个配置DI容器的类.它基本上是一大堆代码说container.Register
等等.
问题是,它正在为所有3层配置容器,因此必须具有对数据访问层的相当侵入性的知识.在我的前端有这样的知识的代码在我的头脑中引起了警钟,因为将应用程序分成层级的关键是避免这种情况.
由于我的数据访问层不只是SQL服务器是一个笨拙的桶,而是由许多复杂的COM互操作和P/Invoke调用组成,所以这也变得更糟,因此对DI有相当大的影响组态.
我已经考虑过打破它 - 可能每层有一个容器,或者每层都有一个"Setup"类与全局DI容器对话以注册它自己的位,但我不确定这是否会导致比它解决的问题更多......
如果有人可以分享他们使用DI与多层应用程序的经验,我将非常感激.
谢谢,猎户座.