gpt4 book ai didi

c# - 关于域模型及其可见性的问题

转载 作者:太空狗 更新时间:2023-10-29 21:55:54 24 4
gpt4 key购买 nike

我参与了一场关于领域模型可见性的有趣辩论,想知道这里的人是否有任何好的指导。

  • 根据我对 MDA 的理解,我们不需要在整个应用程序层中公开领域模型
  • 原因是对域模型的任何更改都会对整个应用程序产生影响
  • 明智的做法是公开轻量级对象 (DTO),它们是领域模型的一个小子集,用于抽象实际模型
  • 另一方面,对域模型的任何更改都意味着更改整个应用程序中的各种 DTO 以使更改可见,而如果我们确实公开域模型,则更改位于单个位置

希望看到一些对此的评论和想法。

感谢所有帮助!

最佳答案

不,这不是 MDA 的目的。它是关于将自己与特定平台隔离开来,使用更高级别的符号(UML 及其 Action 语言)来指定系统的行为。

是否应该公开域模型取决于应用程序。对于经常使用该应用程序的用户(想想你的 IDE),那么领域模型就很清楚了,你可以直接操作该领域中的对象。但对于偶尔使用的应用(想想机场的值机亭),应用应该引导用户完成整个工作流程。

即使您要屏蔽域对象,也不一定需要 DTO;这取决于域对象是否与呈现 UI 的层位于同一进程空间中。需要 DTO 的架构不太擅长适应新需求,因为它们违反了 DRY 原则。

事实上,完全可以从直接公开的域对象中构建企业应用程序;这是 Naked Objects 模式的目标。有几个开源框架可以实现这一点,包括原始的 Naked Objects Framework(在 Java 上)。还有 .NET 的商业等效项。

有关领域对象的更多一般性讨论,我建议您查看 Evans 的书领域驱动设计。在雅虎上还有一个活跃的新闻组。

完全披露:我是 NOF for Java 的提交者,没有直接参与 .NET 版本。

关于c# - 关于域模型及其可见性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com