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

“领域驱动开发(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

你可能感兴趣的:(在基于Entity Framework的核心业务应用中使用DDD)