在使用 DI 容器的应用程序中管理项目引用

本文关键字:应用程序 管理 项目 引用 DI | 更新日期: 2023-09-27 18:34:14

我最近读到了关于领域驱动设计的文章。最后,我遇到了我的项目应该具有的结构。结构如下:

  1. MyApp.Domain,其中包含实体和存储库接口。
  2. MyApp.Domain.Services包含服务。
  3. 我的应用基础设施
  4. MyApp.Persistence 包含存储库实现
  5. MyApp.Application 包含视图模型和服务
  6. MyApp.Site

现在,我只需要将MyApp.DomainMyApp.Application引用到我的网站。另一方面,如果我想将 Unity 用作 Ioc。问题是,我是否应该参考MyApp.Domain.ServicesMyApp.Persistence?为了注册类型?

谢谢

在使用 DI 容器的应用程序中管理项目引用

否则你的"应用程序"怎么知道你的业务对象,如果你不告诉它,他们是在哪个程序集注册的?

如果您正在寻找一种更基于"插件"的方法,那么情况就不同了。

如果谈到插件(不确定 Unity 是如何做到的(但我让它工作的唯一方法(在合理的努力下(是单位自动法克模块

您仍然需要一个注册程序集的位置并有一个类似于"文件系统观察器"的东西,可以监视新.dll的拍打并加载它们等。

练习 DDD 时常见的体系结构是 Onion 体系结构。 主要是因为它对典型的 n 层架构进行了一些改进,几乎没有任何缺点。

它允许您的域和域模型成为软件的核心。 域服务层通常依赖于持久性层。 在洋葱架构中,这是翻转的,持久性层保存对域服务/模型的引用。 要访问持久性层,持久性层中密钥类的接口保存在域层中,并使用 IoC 来连接实例化。

首先,为什么要创建六个不同的项目?它们只是虚构的分离。如果你是唯一的开发者,你不信任自己吗?如果你是多个开发人员,你的沟通是否如此糟糕,以至于你无法就依赖关系的发展方向达成一致?

良好的分离来自于团队内部的沟通和交谈,而不是因为你创建了多个项目(添加参考真的很容易(。

如果要确保代码保持良好质量,请引入代码审查,使用内置的分析工具测量质量,或者只是编写单元测试。

因此,项目引用不是问题,也从来都不是。以易于运行和维护应用程序的方式添加引用。

如果您认真对待DDD,请忘记项目结构。其实没那么重要。了解方法以及 DDD 中的重要内容。购买埃里克·埃文斯(Eric Evans(的蓝皮书。