随笔分类 - DDD领域驱动设计
DDD领域驱动设计
摘要:
本技术专栏在《COLA 4.x架构入门和项目实践》基础之上,对基于COLA架构的项目开发实践进行了提炼和总结;同时,针对其中的一些知识点进行扩展和延伸,包括COLA架构、CQRS模式、代码落地实践和建议规则、领域事件多种实现方式、聚合根工厂模式、MapStruct实体映射工具开发实践等等。
阅读全文

摘要:
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA 4.0。关于COLA架构详细入门和示例应用项目,可以访问《COLA 4.x架构入门和项目实践》技术专栏。
阅读全文

摘要:
《COLA 4.x架构入门和项目实践》技术专栏首先介绍了COLA框架的使用入门,以及与IDEA开发工具的集成等等;然后基于COLA架构,创建DDD经典示例项目-货物运输系统,详细介绍了DDD领域建模、适配层、应用层、领域层和基础设施层的代码开发、防腐层(ACL)设计与实现、领域事件(Domain Event)入门实践、以及基于Kafka消息中间件的消息发布和订阅等等。内容由浅入深,从开发实战出发,逐步掌握基于COLA架构和DDD领域建模思想构建复杂业务应用系统。
阅读全文

摘要:
Martin Fowler大神1963年出生在英格兰的沃尔索耳,并在94年移居到了美国。
而在软件开发领域,大名鼎鼎的敏捷开发方法论,就是他首创的。
除了被公认为全球知名的面向对象分析设计、UML、模式等方面的专家,现在还担任ThoughtWorks公司的首席科学家。
阅读全文

摘要:
在指导软件设计时,我们需要对业务知识进行提炼和精简,建立一个所谓的模型来指导设计开发。而 DDD 的真正价值就是在描述该如何建立这个能够指导开发的 "领域模型"。Domain-Driven Design 其实是一种简称,其真正想表达的是 Domain Model Driven Design,即领域模型驱动设计。
阅读全文

摘要:
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。
COLA既是框架,也是架构。COLA架构融合了常见的DDD代码模型,可以帮助开发人员快速实践并落地DDD领域建模的应用项目。
阅读全文

摘要:
Axon 框架是基于JVM平台的开源产品,由Allard Buijze于2009年创立。2017年7月,成立了一家独立公司AxonIQ,专门与Axon产品合作。
Axon 框架的程序遵循基于领域驱动设计(DDD)思想、命令查询职责分离 (CQRS)、事件驱动架构(Event Driven Architecture,EDA)的架构模式。这些原则的结合,使基于Axon的应用程序更加健壮、适应性更强。
阅读全文

摘要:
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。
COLA既是架构,也是框架。COLA框架继承了DDD的设计思想。
阅读全文

摘要:
技术专栏首先介绍了COLA框架的使用入门,以及与IDEA开发工具的集成等等;然后基于COLA架构,创建DDD经典示例项目-货物运输系统,详细介绍了DDD领域建模、适配层、应用层、领域层和基础设施层的代码开发、防腐层(ACL)设计与实现、领域事件(Domain Event)入门实践、以及基于Kafka消息中间件的消息发布和订阅等等。内容由浅入深,从开发实战出发,逐步掌握基于COLA架构和DDD领域建模思想构建复杂业务应用系统。
阅读全文

摘要:
在领域驱动架构中,通常会将查询和命令操作分开,我们称之为CQRS(命令查询职责分离Command Query Responsibility Segregation)。这张图是来自Martin Fowler大师的文章CQRS(https://www.martinfowler.com/bliki/CQRS.html)。
上图中读模块Query Model和写模块Command Model只是逻辑分离,物理层面还是使用了同一个数据库。我们可以进一步将数据库改成读库和写库做到物理分离,这时候就需要同步读写库。
阅读全文

摘要:
COLA(Clean Object-oriented & Layered Architecture)架构是阿里团队自主研发的应用架构,目前已经开源( https://github.com/alibaba/COLA )。
在COLA的设计中,充分汲取了经典架构的优秀思想。除此之外,阿里补充了规范设计和扩展设计,并且使用Archetype的方式,将架构固化下来,以便可以快速地在开发中使用。
阅读全文

摘要:
什么是Spring Cloud Alibaba?
是阿里巴巴结合自身微服务实践,开源的微服务全家桶。在Spring Cloud项目中孵化,2019年8月1日在Alibaba仓库发布了第一个毕业版本。在国内已逐渐成为Spring Cloud第二代的标准实现。在业界广泛使用,已有很多成功案例。
阅读全文

摘要:
基于COLA架构(Clean Object-oriented and Layered Architecture,整洁面向对象分层架构)和DDD(Domain Driven Design,领域驱动设计)思想,我们初步完成了包裹预订服务的开发,包括包裹预订和包裹查询服务等等。接下来,继续进行DDD经典项目的开发工作。本文将创建运输微服务routingms,该服务负责与货物路线相关的所有操作,包括获取路线的行程、维护航线(Maintain Voyages)等等。
阅读全文

摘要:
在微服务(Microservices)架构实践中,架构设计借用了DDD中的一些概念和技术,比如一个微服务对应DDD中的一个限界上下文(Bounded Context);在微服务设计中应该首先识别出DDD中的聚合根(Aggregate Root);还有在微服务之间集成时采用DDD中的防腐层(Anti-Corruption Layer, ACL)。
本文介绍了防腐层相关的概念和应用场景。
阅读全文

摘要:
CQRS(Command Query Responsibility Separation,命令查询职责分离)最早来自于Betrand Meyer(Eiffel语言之父,OCP提出者)提出的概念。其基本思想在于,任何一个对象的方法可以分为两大类:
命令(Command):不返回任何结果(void),但会改变对象的状态。
查询(Query):返回结果,但是不会改变对象的状态,对系统没有副作用。
阅读全文

摘要:
下图是2021 年 InfoQ 趋势报告:架构与设计,我们看看技术采用曲线图,可以分为5部分用户类型:
创新者(Innovators)
早期采用者(Early Adopters)
早期多数使用者(Early Majority)
晚期多数使用者(Late Majority)
后知后觉(图中没有显示的长尾部分)
阅读全文

摘要:
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。
COLA既是框架,也是架构。COLA架构融合了常见的DDD代码模型,可以帮助开发人员快速实践并落地DDD领域建模的应用项目。
阅读全文
