ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

书籍推荐:《实现领域驱动设计》DDD书籍概览及百度云免费下载

2021-10-03 20:01:33  阅读:248  来源: 互联网

标签:架构 概览 领域 设计 上下文 书籍 限界 DDD


作者简介

Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程。90年代初期,便在领域建模中应用了领域驱动设计。

作者的初衷很屌

本书中的绝大多数例子都是使用Java语言编写的。我本来可以使用C#的,但是我有意识地使用了JAVA。
首先,我认为Java社区正在抛弃好的软件设计和开发实践。xxxxxx, 所以我想鼓励Java社区重新回到领域建模中来。(此外,在.NET社区中已经有很好的DDD资源了,如Jimmy Nilsson的《领域驱动设计与模式实战》)

书籍概览

第一章:DDD入门

介绍DDD的好处,以及如何尽可能多的去实现DDD。在应对复杂的软件系统时,DDD可以为你的项目和团队带来什么。

第二章:领域、子域和限界上下文

介绍领域、子域和限界上下文是什么?我们为什么要用它们,如何使用。

第三章:上下文映射图

上下文映射图帮助我们理解业务领域、模型间的边界,一级这些模型之间的集成方式。

第四章:架构

介绍分层架构的其他方式,如六边形架构、面向服务架构、REST、CQRS、事件驱动(管道和过滤器、长时处理过程、事件源)

第五章:实体

介绍DDD的战术模型中,很多优秀的实体设计例子。

第六章:值对象

介绍如何设计以领域为中心的测试,如何实现值对象。

第七章:领域服务

学习何时应该使用领域服务而不是实体或值对象,以及如何使用领域服务来处理业务逻辑和技术上的集成。

第八章:领域事件

了解领域事件为何如此有用,以及使用领域事件的不同方法。

第九章:模块

学习如何在不同的项目中使用模块

第十章:聚合

如何利用聚合在不同的小规模对象集群间创建一致性边界,从而降低模型的复杂性。

第十一章:工厂

介绍DDD中实现工厂的技巧。

第十二章:资源库

学习如何利用ORM来实现资源库,一种采用基于网格的分布式缓存,另一种采用NoSQL的键值对存储。

集成限界上下文

如何通过上下文映射图来集成不同的模型。

应用程序

学习客户端如何使用模型,如何传递数据,如何使用DTO将数据在模型与用户界面之间传输。

如何阅读这本书

首先掌握以下这些概念:

通用语言:

通用语言(Ubiquitous Language)作用域某个限界上下文,它对领域建模是非常重要的。

战略建模:

界限上下文是一种概念上的边界,领域模型变工作于其中。同事,限界上下文为通用语言提供了一套环境,项目成员通过通用语言来表达软件模型,如下

限界上下文和通用语言

在战略设计的过程中,你将发现上下文映射图是非常有用的。你的团队将使用上下文映射图来理解项目的范围。如下

上下文映射图展示界限上下文之间的关系

架构

六边形架构风格,领域模型位于软件的中心

战术建模

战术设计的一个重要模式是聚合,聚合可以由单个实体组成,也可以由一组实体和值对象组成。必须在聚合的整个生命周期中保证事务上的一致性。
聚合实例通过资源库进行持久化,另外,对聚合的查找和获取也通过资源库完成

另两个聚合类型,他们拥有各自的事务一致性边界

领域服务

在领域模型中,有些业务操作并不能自然地放在实体或值对象上,此时我们可以使用无状态的领域服务(domain service)

领域服务执行特定于领域的操作,其中可能涉及到多个领域对象

领域事件

表示领域模型中发生的重要事件。有多种方式可以对领域事件进行建模,在对聚合进行命令操作时,聚合本身将发布领域事件。

领域事件可以由聚合发布

模块

模块中包含的领域对象应该是内聚在一起的。

一个模块包含并组织内聚字啊一起的领域对象

读书笔记

  1. 实现领域驱动设计(DDD)学习-领域服务、领域事件、模块、聚合、工厂、资源库

     

  2. 实现领域驱动设计(DDD)-值对象的特征、使用及实现

3.实现领域驱动设计(DDD)中对实体的设计及使用

4.领域驱动设计(DDD)架构整理(分层架构、六边形架构、SOA架构、REST、CRQS、事件驱动架构等)

5.理解DDD中的限界上下文,整理自实现领域驱动设计

6.DDD中的领域、子域和限界上下文的说明

7.DDD(Domain-Driven Design)领域驱动设计入门说明及示例

阅读感受

首先,阅读这本书的初衷是为了解决当时面试时的一个疑惑。

(当时对领域建模完全没有概念)

面试官问了一些当时自己不懂的技术之后继续追问..

面试官:“你知道领域建模是什么吗?”

我:    “知道,就是根据业务进行项目的搭建、包划分、业务编写。”

面试官:“那领域建模有哪些方法呢?”

我:    “对业务要有很深的理解,然后又对应的处理方式....”

面试官:“那具体是有哪些方法呢?领域建模是有一些基本方式的”

我:    “对业务有很深的把握就好了吧,具体方法我不知道..”

面试官:“哦,我知道了...  ”

... 两天后

面试官回复:“技术有点差,不适合我们的核心代码开发,走业务线呢可能也不满足条件...”

现在如果有人问我领域模型是什么的话,我估计能简单回答下,更加得心应手、熟练的应用还是要靠实际的业务来支撑吧。

读完这本书之后,感觉到作者的目的其实很明确。将我们实际开发过程中碰到的一些高层次问题进行了规则化处理。关于服务的架构方式、实体和对象的建立、集成服务的处理都用一种‘通用语言’进行设计。只要有实际开发经验的人,基本上都能从书中找到一些我们在开发当时碰到问题的影子。

它并不是很深奥的技术书籍,而是将我们开发中的术语、流程、方式进行通用化、规则化的整理。可能是一些概念上的东西需要推敲、实例论证才会好理解一点。

对于各阶段的程序员来说都是很有帮助的,欢迎下载阅读

《实现领域驱动设计》百度云下载

链接: https://pan.baidu.com/s/1IMwMGtIsuakZL5RC85uIBQ 提取码: sxkb

标签:架构,概览,领域,设计,上下文,书籍,限界,DDD
来源: https://www.cnblogs.com/yulinfu/p/15364875.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有