在过去的几周里,我一直在努力了解DDD CQRS,ES和微服务。 我想我已经单独理解它们但不是一个单元,所以这就是为什么我有一些误解,我希望澄清。
首先,微服务和DDD之间的关系是什么,你可以做一个没有其他的吗? 其次,Bounded Contexts最终会转化为微服务吗?
答案 0 :(得分:4)
微服务和DDD之间没有任何关系...是的,你绝对可以做到一个没有另一个。 有界上下文是域级和微服务它是一个实现/基础架构/架构,如果你想要它们可以相关......
Domain Driven Design是Eric Evans在2003年引入的一套战术和战略设计原则......用于解决软件的复杂性
Microservices是一个用于将应用程序设计为可独立部署的服务套件的架构
CQRS和事件采购是实现域驱动设计的一种方式(可以看作是DDD中的构建块),但它们可以像其他构建块一样在DDD之外使用。
答案 1 :(得分:1)
尽管我同意@rad的回答微软最近发布了一本关于微服务和asp.net核心的电子书,他们成功地将微服务和DDD结合起来。
请参阅https://www.microsoft.com/net/download/thank-you/microservices-architecture-ebook
答案 2 :(得分:1)
我认为微服务和DDD有不同的起源,但我们需要两者。了解如何:
DDD说明如何围绕业务领域打破和设计您的软件
微服务公司表示,要在较小的独立服务中划分和设计您的业务领域以进行扩展
现在,如果仔细观察,请谈谈中断和将软件设计成更小的部分,服务(缩放)方面的微服务和有界上下文(设计)方面的DDD。
此外,微服务需要一致性,这只能是最终的,DDD战术策略有助于设计最终一致的系统
要解决一个大的业务问题,我们需要DDD和微服务,并且需要找到它们之间的良好关系。
从我的角度来看,没有微服务可以跨越有界的上下文,也有一个有界的上下文可能有多个微服务。微服务之间的dependecny主要受有界上下文之间的映射控制
答案 3 :(得分:0)
它们之间没有关系。您可以在没有ddd,cqrs或es的情况下进行微服务。 它们具有不同的用途,而微服务体系结构侧重于高可用性,可伸缩性和其他方面的关注点,更多地关注实际业务需求,而DDD则关注于编码风格。 CQRS与微服务同样受到关注。