在基于 Entity Framework 的核心业务应用中使用 DDD

  • Jan Stenberg
  • 姚琪琳

2013 年 12 月 5 日

话题:.NET语言 & 开发架构

领域驱动开发(DDD)所关注的是领域,而不是持久化”,Julie Lerman最近在瑞典的Øredev 开发者大会上这样说道

Julie 从 2003 年以来一直是微软最有价值专家,.NET 平台顾问,曾关注数据库编程 25 年,然后使用Entity Framework(EF),但现在受到了关注领域的 DDD 的启发。

她的经验是,很多使用 DDD 的人不关心持久化,数据库是开发最后才会考虑的事。但长远来看,我们仍然需要将数据存入数据库,并且尽管 Julie 关注的是领域,但她仍然希望尽早确定应该什么时候引入持久化。

对于 Julie 来说,DDD 中最重要的概念是边界上下文,它让我们以一种更加结构化的方式在子系统中思考问题,而不是在同一时间考虑应用程序的全部内容,如实体、行为等。在处理顾客服务的时候,可以不用关心与其他子系统(如市场)的交互。我们可能会需要某个标识,或很少的来自其他上下文的信息,但这些大部分都属于一个上下文领域的边界。这意味着我们在考虑持久化的时候,可以只关注一部分实体。

在处理不同的实体(如客户)时,它在不同的上下文中重新定义客户实体,尽管它们都持久化在相同的 Customer 表中。她发现一个潜在的扩展是使用不同的表甚至数据库,将这些上下文彻底分离开来。

对 Julie 来说,值对象一直是一个混乱的概念。它从 DDD 专家那里听到过 5 种不同的解释,它们全都正确,并且丰富了她的视野。现在,Julie 认为值对象是没有标识的不可变对象,

一般情况下,Julie 也将领域模型作为数据模型使用,但她发现在一些非常复杂的领域中(如遗留数据库),需要分离的持久化模型。

在今年早些时候,Julie 撰写了三篇文章,讲述了她从数据驱动开发转移到 DDD 时所学到的东西。

原文英文链接:http://www.infoq.com/news/2013/11/leveraging-ddd-ef

.NET语言 & 开发架构