
DDD领域驱动设计
文章平均质量分 63
技术专栏从实战出发,通过DDD领域设计知识讲解-运行环境搭建-项目案例实战和源代码分析,让初学者快速掌握DDD和微服务应用开发。在技术专栏中,涉及到DDD领域模型设计、CQRS命令查询职责分离架构、六边形架构、Spring Boot、Spring Data JPA... 等等。
软件架构
这个作者很懒,什么都没留下…
展开
-
COLA 4.x和DDD项目实践精粹
在《COLA 4.x架构入门和项目实践》专栏基础之上,对项目开发实践进行了提炼和总结;同时,针对其中的一些知识点进行扩展和延伸。专栏介绍领域驱动设计(Domain Driven Design - DDD)起源于2003年Eric Evans出版《领域驱动设计》。领域驱动设计DDD最大的好处是将业务语义显现化,把原先晦涩难懂的业务算法逻辑,通过领域对象、统一语言将领域概念清晰的显性化表达出来。如果整个系统都采用DDD进行领域建模,不仅代码的可读性和系统的可维护性会大大提升,系统之间原创 2021-10-30 00:03:08 · 4184 阅读 · 2 评论 -
阿里DDD项目最佳实践-COLA 架构总览
DDD分层架构、六边形架构、洋葱圈架构、以及 COLA 架构的核心职责就是要做核心业务逻辑和技术细节的分离和解耦。在架构思想上,COLA 主张像六边形架构那样,使用端口-适配器去解耦技术细节;主张像洋葱圈架构那样,以领域为核心,并通过依赖倒置反转领域层的依赖方向。最终形成如下图所示的组件关系。换一个视角,从 COLA 应用处理响应一个请求的过程来看。COLA 使用了 CQRS 来分离命令和查询的职责,使用扩展点和元数据来提升应用的扩展性。整个处理流程如下图所示:《COLA 4..原创 2021-09-21 15:16:57 · 4048 阅读 · 0 评论 -
领域模型的核心本质是什么?
在指导软件设计时,我们需要对业务知识进行提炼和精简,建立一个所谓的模型来指导设计开发。而 DDD 的真正价值就是在描述该如何建立这个能够指导开发的 "领域模型"。Domain-Driven Design 其实是一种简称,其真正想表达的是 Domain Model Driven Design,即领域模型驱动设计。领域模型并不是某个模型图,而是这种图所要传达的思想。也就是说,领域模型并不拘泥于形式,重要的是它能够传递经过提炼后的业务知识的抽象与精炼。它可以是一幅图,也可以是一段代码,甚至可以是一句.原创 2021-09-11 10:20:19 · 304 阅读 · 0 评论 -
基于阿里开源的COLA架构和DDD领域驱动设计构建货物运输系统
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。COLA既是框架,也是架构。COLA架构融合了常见的DDD代码模型,可以帮助开发人员快速实践并落地DDD领域建模的应用项目。货物运输系统(Cargo Tracker Application)是领域驱动设计(DDD)的经典示例。Eric Evans(DDD之父)在他的书中引入了货物运输系原创 2021-09-10 13:23:21 · 2550 阅读 · 0 评论 -
领域驱动设计DDD中领域模型到底是什么?
DDD中的模型是指体现出应用系统的业务逻辑和状态的对象,是从具体业务(或领域)中提取出来的,因此又叫做领域模型。领域建模的输出是领域模型,领域模型是比自然语言更清晰的描述方式,以图形化的方式组织各种概念,有助于人对复杂信息的理解。领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。没有所谓唯一正确的领域模型。所有模型都是我们对试图要理解的领域的近似表示。领域模型主要是原创 2021-08-30 23:22:21 · 712 阅读 · 0 评论 -
Axon框架快速入门和DDD项目实践
Axon 框架是基于JVM平台的开源产品,由Allard Buijze于2009年创立。2017年7月,成立了一家独立公司AxonIQ,专门与Axon产品合作。Axon 框架的程序遵循基于领域驱动设计(DDD)思想、命令查询职责分离 (CQRS)、事件驱动架构(Event Driven Architecture,EDA)的架构模式。这些原则的结合,使基于Axon的应用程序更加健壮、适应性更强。本专栏基于Axon开源框架、DDD领域驱动设计思想、CQRS读写分离和事件溯源(Event Sourcing原创 2021-08-19 21:28:10 · 2787 阅读 · 0 评论 -
基于DDD领域建模思想、COLA架构和CQRS模式快速实现装卸微服务应用
我们已经基于COLA架构创建了装卸服务(handlingms)的骨架代码,然后创建好了领域模型和数据模型。本文将按照数据流的顺序,分别在各个模块的包结构中,实现业务逻辑和代码落地。一、二方库client模块二方库client模块不是功能独立的层,client模块包含的代码应该是常见的服务接口Facade和DTO数据传输对象,如API、DTO、领域事件(Domain Event)、Command和Query对象等等。如上图所示,HandlingActivityRegist.原创 2021-08-14 11:32:05 · 1443 阅读 · 0 评论 -
为什么说开源的COLA既是架构也是框架?
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到COLA 4.0。COLA既是架构,也是框架。COLA框架继承了DDD的设计思想。COLA 开源地址:https://github.com/alibaba/COLA一、为什么说COLA是架构?在架构设计上,COLA主张像六边形架构那样,使用端口-适配器去解耦技术细节;主张像洋葱架构那样,以领域.原创 2021-08-11 23:20:33 · 1094 阅读 · 0 评论 -
基于DDD领域建模思想、COLA开源架构和CQRS模式设计和构建货物运输系统
2003年,DDD(领域驱动设计)这一软件开发的方法与愿景经由建模专家 Eric Evans 的经典著作Domain-Driven Design: Tackling Complexity in the Heart of Software 正式面世,当即获得了广泛关注和高度评价。18 年间,网上越来越多关于 DDD的文章和讨论。为什么我们现在还不停地讨论 DDD?为什么DDD仍然如此重要?领域驱动设计常以战略设计与战术设计来将整个领域展现得淋漓尽致,其作用范围既面向业务也面向技术。从战略角度去规划系统原创 2021-08-07 15:43:16 · 1371 阅读 · 0 评论 -
领域驱动设计DDD和CQRS架构模式落地实践
在领域驱动架构中,通常会将查询和命令操作分开,我们称之为CQRS(命令查询职责分离Command Query Responsibility Segregation)。这张图是来自Martin Fowler大师的文章CQRS(https://www.martinfowler.com/bliki/CQRS.html)。上图中读模块Query Model和写模块Command Model只是逻辑分离,物理层面还是使用了同一个数据库。我们可以进一步将数据库改成读库和写库做到物理分离,这时候就需要同步读写库。原创 2021-08-01 13:16:09 · 641 阅读 · 0 评论 -
DDD开源COLA应用架构-实现分离业务逻辑和技术细节
COLA(Clean Object-oriented & Layered Architecture)架构是阿里团队自主研发的应用架构,目前已经开源( https://github.com/alibaba/COLA )。在COLA的设计中,充分汲取了经典架构的优秀思想。除此之外,阿里补充了规范设计和扩展设计,并且使用Archetype的方式,将架构固化下来,以便可以快速地在开发中使用。分层设计(Layered Architecture)COLA的分层是一种改良了的.原创 2021-07-27 20:18:56 · 2408 阅读 · 0 评论 -
Spring Cloud Alibaba微服务实战
Spring Cloud Alibaba微服务实战技术专栏,从项目实践出发,包括Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Log日志、分布式全局唯一ID、DDD领域驱动设计等等技术内容,可帮助你对Spring Cloud 微服务技术栈有更加全面和直观的了解。相信你通过本专栏的练习和实践,能够学以致用,提升微服务应用的开发能力。技术专栏中具体章节内容如下所示:1. Spring Cloud和Spring Cloud Alibaba微服务框架的关系.原创 2021-07-21 22:44:39 · 1535 阅读 · 4 评论 -
如何基于COLA架构快速实现一个CRUD操作
COLA 是 Clean Object-oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的DDD开源项目。COLA是一套用于帮助开发人员快速实践DDD落地的项目架构。目前COLA已经发展到COLA 4.0。在COLA架构中,比如我们想创建一个User,一套完整的调用链大概如下图所示:1. 前端发起Command请求,经过CommandBus分发给对应Command命令处理程序(在COLA 4.0版本中,Comman原创 2021-07-21 13:06:25 · 1615 阅读 · 1 评论 -
基于COLA架构创建运输微服务应用和DDD领域建模
基于COLA架构(Clean Object-oriented and Layered Architecture,整洁面向对象分层架构)和DDD(Domain Driven Design,领域驱动设计)思想,我们初步完成了包裹预订服务的开发,包括包裹预订和包裹查询服务等等。接下来,继续进行DDD经典项目的开发工作。本文将创建运输微服务routingms,该服务负责与货物路线相关的所有操作,包括获取路线的行程、维护航线(Maintain Voyages)等等。创建该项目的目的,是为了演示通过防腐层(ACL)原创 2021-07-13 13:12:57 · 1545 阅读 · 1 评论 -
Axon框架快速入门和DDD项目实践
专栏简介使用Axon框架基于DDD领域驱动设计、CQRS读写分离和事件溯源(Event Sourcing)来实现货物运输系统(Cargo Tracker Application)专栏介绍Axon Framework 通过支持开发者应用命令查询职责分离(CQRS)架构模式,来帮助构建可伸缩、可扩展和可维护的应用程序。它通过提供最重要的构建块来实现,如聚合、仓储以及事件总线(事件的调度机制)等等。此外,Axon提供了对注解的支持,它允许你构建聚合和事件监听器而不用将你的代码捆绑到Axon特有的逻原创 2021-07-10 12:49:10 · 1291 阅读 · 1 评论 -
DDD领域驱动设计架构模式:防腐层(Anti-corruption layer)
在微服务(Microservices)架构实践中,架构设计借用了DDD中的一些概念和技术,比如一个微服务对应DDD中的一个限界上下文(Bounded Context);在微服务设计中应该首先识别出DDD中的聚合根(Aggregate Root);还有在微服务之间集成时采用DDD中的防腐层(Anti-Corruption Layer, ACL)。本文介绍了防腐层相关的概念和应用场景。一、防腐层(Anticorruption Layer)简介防腐层(Anticorruption Layer):一原创 2021-07-10 11:23:14 · 6998 阅读 · 2 评论 -
DDD领域驱动设计-货物运输系统
《DDD领域驱动设计-货物运输系统》技术专栏从实战出发,通过DDD领域设计知识讲解-运行环境搭建-项目案例实战和源代码分析,让初学者快速掌握DDD和微服务应用开发。在技术专栏中,涉及到DDD领域模型设计、CQRS命令查询职责分离架构、EDA架构、六边形架构、Spring Boot、Spring Data JPA、Spring Cloud Stream和RabbitMQ等等知识点。欢迎访问和交流。...原创 2021-07-04 18:41:27 · 778 阅读 · 0 评论 -
CQRS架构和Axon框架入门实践
CQRS(Command Query ResponsibilitySeparation,命令查询职责分离)最早来自于Betrand Meyer(Eiffel语言之父,OCP提出者)提出的概念。其基本思想在于,任何一个对象的方法可以分为两大类: 命令(Command):不返回任何结果(void),但会改变对象的状态。 查询(Query):返回结果,但是不会改变对象的状态,对系统没有副作用。 CQRS 中的命令这方面最重要的部分包括: 命令(Command),它负责捕获用户的意图.原创 2021-07-04 11:38:00 · 448 阅读 · 1 评论 -
领域驱动设计(DDD)中的领域模型到底是什么?
DDD是一种软件开发模式,目的是为了解构复杂的业务需求,降低不同工种间的沟通障碍,实现结构清晰、可复用、易维护的软件。《DDD领域驱动设计-货物运输系统》技术专栏从实战出发,通过DDD领域设计知识讲解-运行环境搭建-项目案例实战和源代码分析,让初学者快速掌握DDD和微服务应用开发。在技术专栏中,涉及到DDD领域模型设计、CQRS命令查询职责分离架构、EDA架构、六边形架构、Spring Boot、Spring Data JPA、Spring Cloud Stream和RabbitMQ等等知识点。欢迎原创 2021-07-02 19:13:12 · 790 阅读 · 1 评论 -
2021 年 InfoQ 最新趋势报告:架构与设计
下图是2021 年 InfoQ 趋势报告:架构与设计,我们看看技术采用曲线图,可以分为5部分用户类型: 创新者(Innovators) 早期采用者(Early Adopters) 早期多数使用者(Early Majority) 晚期多数使用者(Late Majority) 后知后觉(图中没有显示的长尾部分) 我们可以看到其中标识出来的部分,包括Domain Driven Design(领域驱动设计)和Microservices(微服务)。DDD 的本原创 2021-06-30 10:26:40 · 297 阅读 · 0 评论 -
COLA 4.0应用架构和DDD经典项目实践:货物运输系统
DDD (Domain-Driven Design),即领域驱动设计是思考问题的方法论,用于对实际问题建模,它以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,然后将这些概念设计成一个领域模型。由领域模型驱动软件设计,用代码来实现该领域模型。所以,DDD 的核心是建立正确的领域模型。COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,是来自阿里技术专家的开源项目。目前COLA已经发展到C原创 2021-06-25 19:48:45 · 5969 阅读 · 1 评论