我正在学习应用于.NET解决方案的DDD和以域为中心的体系结构设计。
但是,我在如何实现它方面有些挣扎。
最近我想到了一些例子:
如何确定应用程序“层”和域“层”中包含什么?
我读到
答案 0 :(得分:2)
域层包含执行业务规则的所有代码。
它应该与技术无关(例如特定的数据库-sql,无sql-或协议-HTTP,REST)和框架无关。这意味着无论聚合是持久存储在SQL数据库还是NoSQL数据库中,其外观都是相同的,它是通过HTTP控制器或控制台应用程序调用的。
应该为pure,没有副作用。这意味着它不应执行任何I/O
(从任何文件读取或写入)。它接收所有需要的数据作为方法参数。对我来说,将基础结构或应用程序层作为参数传递给Aggregate方法调用也是不好的,即使它隐藏在域interface
后面,因为它可以执行I/O
。
它不应依赖于其他任何层。这意味着没有其他层的imports
或use
(或您在编程语言中使用的任何编程语言构造)。
应用程序层是一个薄层,用于从存储库加载聚合,它在聚合上调用相应的方法,然后将聚合持久化到存储库。它基本上将域与基础结构粘合在一起。
答案 1 :(得分:0)
在 DDD 架构中,所有业务逻辑和规则都应该在域层内。应用层负责通过访问域层来引用业务逻辑,并通过基础设施层进行数据库更新。所以很明显,如果您要添加业务规则或逻辑,它应该是域层