C# 如何决定在域或应用程序项目中使用什么;DDD“;解决方案
我正在学习应用于.NET解决方案的DDD和以域为中心的体系结构设计 然而,我正在为如何实现它而挣扎 我最近想到了一些例子:C# 如何决定在域或应用程序项目中使用什么;DDD“;解决方案,c#,.net,domain-driven-design,C#,.net,Domain Driven Design,我正在学习应用于.NET解决方案的DDD和以域为中心的体系结构设计 然而,我正在为如何实现它而挣扎 我最近想到了一些例子: 将excel文件过滤/转换为另一种json/xml文件,并按照一些业务规则进行格式化,无论是控制台应用程序还是WebAPI 计算某些火车站的能量部署或距离 如何确定进入应用程序“层”和域“层”的内容 我读到: 域层包含执行业务规则的所有代码 它应该是技术无关的(比如特定的数据库-sql,无sql-或协议-HTTP,REST)和框架无关的。这意味
- 将excel文件过滤/转换为另一种json/xml文件,并按照一些业务规则进行格式化,无论是控制台应用程序还是WebAPI
- 计算某些火车站的能量部署或距离
I/O
(从任何文件读取或写入)。它接收作为方法参数所需的所有数据。对我来说,将基础结构或应用程序层作为参数传递给聚合方法调用也是不好的,即使它隐藏在域接口
后面,因为它可以执行I/O
它不应该依赖于任何其他层。这意味着没有从其他层导入
或使用
(或在编程语言中使用的任何编程语言结构)
应用程序层是从存储库加载聚合的薄层,它调用聚合上的相应方法,然后将聚合持久化到存储库。它基本上将域与基础结构粘合在一起。谢谢您的回答。我开始明白了。假设我正在读取一个csv文件并检查两个给定列的总和,如果超过某个阈值,则连接另外两个列。然后,读取csv文件将完全在基础架构/应用程序层中(不是那么薄?)?规范模式(检查两个值是否高于给定阈值)和连接将位于域层?@Nolwenn读取文件将位于基础结构中。检查和连接将在域层中进行。这在很大程度上取决于您的详细信息,我不确定,但最有可能的是,您的聚合不会在意数据来自csv文件,它会将其视为矢量列表,而不是域/业务层之上的应用程序层?然后我假设它将表示层与业务层连接起来,而不是将业务层与基础架构连接起来!你能澄清一下吗?@binte你所描述的是严格的分层架构,我一般不推荐它。在一个宽松的体系结构中,应用层可以(也应该)调用域和基础结构,以便将它们粘合在一起。