“领域驱动开发(DDD)所关注的是领域,而不是持久化”, Julie Lerman 最近在瑞典的Øredev 开发者大会上这样说道。
Julie 从 2003 年以来一直是微软最有价值专家,.NET 平台顾问,曾关注数据库编程25 年,然后使用 Entity Framework (EF),但现在受到了关注领域的 DDD 的启发。
她的经验是,很多使用 DDD 的人不关心持久化,数据库是开发最后才会考虑的事。但长远来看,我们仍然需要将数据存入数据库,并且尽管 Julie 关注的是领域,但她仍然希望尽早确定应该什么时候引入持久化。
对于 Julie 来说,DDD 中最重要的概念是边界上下文,它让我们以一种更加结构化的方式在子系统中思考问题,而不是在同一时间考虑应用程序的全部内容,如实体、行为等。在处理顾客服务的时候,可以不用关心与其他子系统(如市场)的交互。我们可能会需要某个标识,或很少的来自其他上下文的信息,但这些大部分都属于一个上下文领域的边界。这意味着我们在考虑持久化的时候,可以只关注一部分实体。
在处理不同的实体(如客户)时,它在不同的上下文中重新定义客户实体,尽管它们都持久化在相同的Customer 表中。她发现一个潜在的扩展是使用不同的表甚至数据库,将这些上下文彻底分离开来。
对Julie 来说,值对象一直是一个混乱的概念。它从DDD 专家那里听到过5 种不同的解释,它们全都正确,并且丰富了她的视野。现在,Julie 认为值对象是没有标识的不可变对象,
一般情况下,Julie 也将领域模型作为数据模型使用,但她发现在一些非常复杂的领域中(如遗留数据库),需要分离的持久化模型。
在今年早些时候,Julie 撰写了三篇文章,讲述了她从数据驱动开发转移到DDD 时所学到的东西。
评论