但是我可以在不同的层之间传递域对象,以便通过getter访问数据,还是必须使用dto --一个包含特定于视图/用例的数据的缩减域对象。在层周围传递域对象似乎鼓励打破层只能与指定的其他层对话的规则。但另一方面,这就是DDD的重点?如果从域对象获取数据并放入dto中更好,那么控制器应该在哪里发生呢?

发布于 2012-11-05 12:47:24
您应该将域放在所有其他层的旁边,因为它应该100%独立于其他所有层。因此,您应该能够在任何地方使用它。
DDD中的服务只应在两个或多个不同的根聚合需要交互时使用。
至于事务,为什么不直接在UI层中使用TransactionScope呢?这仍然是坚持无知。
我亲自在UI中直接使用存储库(因为DDD中的存储库是DB抽象)
发布于 2012-11-05 11:49:10
就我个人而言,我总是使用视图模型(DTO表示您的视图)。这有助于减少传递给视图的数据量,并避免意外泄露安全数据。
理论上,UI (或多个UI或web服务)应该插入到系统的顶部。例如,如果您正在通过Web服务公开您的系统,您可能还希望以某种方式平缓和减少数据,以避免对您的域实体创建依赖关系(这样您就可以在不破坏外部系统的情况下更改它们),并且再次不要在您的域实体中公开任何if或敏感数据。
我想这将适用于任何开发实践,而不仅仅是DDD。
发布于 2012-11-05 13:17:59
诚然,在规范的分层体系结构中,事情应该尽可能地划分,但我认为将域实体一直传递到UI似乎是可以接受的,特别是在表示层和域层位于同一层的简单应用程序中。它只需要UI有一个对域的引用,这并没有那么令人震惊(相反的方式实际上是有问题的)。
Mark有一个关于这个问题的有趣想法的博客帖子,尽管我不同意他的所有观点。
https://stackoverflow.com/questions/13231075
复制相似问题