我有一个微服务系统。管理图书的服务。serviceM管理杂志
它们提供RESTful接口来处理它们的实体。
图书领域和杂志领域——是不同的领域,因为图书和杂志的发行和推广方式完全不同。
仍然有一些情况,一些客户想要处理所有的印刷媒体,作为书籍和杂志的概括:链接到书架上的,管理他们的作者等
这是一个好主意,引入一个可打印的媒体服务,模拟行为,属性,常见的书籍,杂志?
那么一种新的印刷媒体可以被引入到这个泛化中,而不涉及到链接到书架的代码?
换句话说:如何处理领域驱动设计中的继承?
请注意,域不是与资源相关的东西,它是对业务流程进行建模的。
两个方向:
- 因为你的问题,我不太确定你有两个子域名的书籍和杂志。在一个域中,您可以完美地拥有一个Book类和一个继承Media类的Magazine类。
- 你可以使用一个共享内核,用它你可以共享一个子集的域,书和杂志域可以共享(http://ddd.fed.wiki.org/view/shared-kernel)
要进一步了解,您可以阅读Vaugh Vernon的实现领域驱动设计的第2章(域,子域和有界上下文)和第3章(上下文映射)。
Ps:不要忘记在开发任何系统之前与领域专家交谈(没有这些就没有DDD)。
我认为创建一个新的微服务(Experience MS)是一个好主意。
创建一个具有公共领域模型的新微服务,从服务Book和服务Magazine获取数据。这样,就不需要对现有的业务微服务进行任何更改。
根据微服务架构,微服务只能通过该微服务的REST端点可用。