代码之家  ›  专栏  ›  技术社区  ›  DaJackal

域驱动设计与模型驱动架构

  •  37
  • DaJackal  · 技术社区  · 14 年前

    我很好奇,领域驱动设计和模型驱动架构之间有什么区别?我觉得他们有一些相似之处。

    你能启发我吗?

    谢谢

    3 回复  |  直到 8 年前
        1
  •  34
  •   Razvan Dumitru    8 年前

    不要不同意上面大多数的观点,尽管它可能值得扩展一点。

    DDD中最重要的一个概念是关注问题领域。把对技术的迷恋放在一边,主要集中在你试图解决的问题的建模上。因此,将Ajax、窗体、数据库、框架等放到后台,并首先确保您有一个完整、准确的问题模型。(当然,您仍然需要体系结构组件——但是它们明显地服从于模型)。DDD称之为“无所不在的语言”——一种用领域专家和开发人员共同使用和理解的术语表示的模型。一种模型,其中类、方法等的名称取自问题域。

    DDD并不要求/如何/您捕获该模型,尽管本书暗示要使用OO语言来实现这一点。

    MDA首先分享了建模问题域的相同概念(PIM,平台独立模型)。与DDD不同,它建议使用UML创建该模型。但其目的是相同的:理解问题域,而不使用(软件)体系结构问题来污染它。

    MDA的PSM(平台特定模型)与在DDD中应用体系结构模式(例如聚合、存储库等)有点类似。同样,尽管在细节上有所不同,但两者都旨在解决将“纯”问题域模型转换为完整软件系统的问题。

    综上所述,我认为它们在两个方面是相似的:

    1. 模型的中心性(如@rui所说),特别是/域/模型。
    2. 将体系结构模式应用于模型以实现目标系统。

    Hth.

        2
  •  5
  •   Rui Curado    14 年前

    域驱动设计(DDD)和模型驱动体系结构(MDA)的根源都是模型驱动工程(MDE),如果仅限于软件开发领域,则也称为模型驱动软件开发(MDSD)。见维基百科: http://en.wikipedia.org/wiki/Model-driven_development

    所有落在MDE伞下的方法都有一个共同点:模型。这个模型是如何实现的取决于具体的MDE风格。

    丙二醛被认为过于复杂。有些人认为DDD过于抽象。我个人最喜欢的MDE实现是DSM和ABSE(维基百科文章中没有列出)。

        3
  •  3
  •   Aravind Yarram    14 年前

    DDD是从业务角度接近软件解决方案,目的是使设计尽可能接近真实世界。这更像是一门艺术,而不是工程学。

    MDA解决了不同的问题。详细信息如下: http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

    推荐文章