![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DDD
文章平均质量分 88
是刘彦宏吖
1.我能做什么 2.我想要的 ---全新的选择 我能干什么?当你不能知道要做什么的时候?就把现在的事做好!
知识零碎、浅尝辄止,未成体系、温故知新、夯实基础、努力学习、积累量变、期待质变。
掌握人、技术、方法的不断协调与相互作用,才能事半功倍。悟以往之不谏,知来者之可追。
展开
-
DDD领域驱动设计模式结构图面向接口编程
在刚接触资源库(Repository)时,第一反应便是这就是个 DAO 层,访问数据库,然后吧啦吧啦,但是,当接触的越久,越发认识到第一反应是错的,资源库更多的是对资源的管理,而不仅仅是数据库中的数据,数据库可以作为资源的一部分,但不是全部,我们习惯将对外部系统的调用称为外部资源的获取,这也是将外部系统作为资源的一部分。而在考虑基础设施层中具体实现时,可根据需要选择适合的工具,以此来管理和操作资源。原创 2023-11-13 22:55:59 · 198 阅读 · 0 评论 -
DDD CQRS架构和传统架构的优缺点比较
DDD CQRS架构和传统架构的优缺点比较前言CQRS架构由于本身只是一个读写分离的思想,实现方式多种多样。比如数据存储不分离,仅仅只是代码层面读写分离,也是CQRS的体现;然后数据存储的读写分离,C端负责数据存储,Q端负责数据查询,Q端的数据通过C端产生的Event来同步,这种也是CQRS架构的一种实现。今天我讨论的CQRS架构就是指这种实现。另外很重要的一点,C端我们还会引入Event Sourcing+In Memory这两种架构思想,我认为这两种思想和CQRS架构可以完美的结合,发挥CQRS这个原创 2022-12-30 18:33:18 · 1064 阅读 · 0 评论 -
ApplicationService需要遵循以下原则:
最后谈一个比较难的问题,就是找聚合根。其实大家可能觉得,定义一个聚合根应该很简单,根据业务来就是了,比如用户、订单、商品、库存等等。但有时候我们很容易把聚合根定义得很大,因为无论聚合根多大,它都能够很好地解释。有个建模界的笑话是:我定义了一个“宇宙类”,它可以包含所有模型。聚合根太大可能会有问题,比如代码过多、测试用例过多、性能不好等等。很有可能做着做着一个聚合根就膨胀了,这个时候你们尝试去拆分它,会发现并非像最开始现象的那样不能拆分。只是要找到合适的“借口”,要拆得有理有据。转载 2022-12-30 18:17:17 · 304 阅读 · 0 评论 -
EFCore调优
关于同步状态: 当从数据库进行查询数据时,上下文便捕获了每个实体属性的快照(数据库值,原始值,当前值),当调用 SaveChanges 时,在内部会自动调用> DetectChanges 方法,此方法将扫描上下文中所有实体,并比较当 前属性值和存储在快照中的原始属性值,如果被找到的属性值发生了改变,此时EF将会与数据库进行交互,进行数据更新。EFCore中有一个重大改进,就是批处理,比如向数据库中增加n条数据(n>3),会组合成一次请求访问数据库(而在以前的EF中,不是批处理,增加几条,则会访问几次)。原创 2022-10-11 10:40:47 · 587 阅读 · 0 评论 -
.NET Core 开发实战
.NET Core 开发实战2.1 工程结构概览:定义应用分层及依赖关系分层• 领域模型层• 基础设施层• 应用层• 共享层总结• 领域模型专注业务的设计,不依赖仓储等基础设施层• 基础设施的仓储层仅负责领域模型的取出和存储• 使用 CQRS 模式设计应用层• Web API 是面向前端的交互的接口,避免依赖领域模型• 将共享代码设计为共享包,使用私有 NuGet 仓库分发管理2.2 定义 Entity:区分领域模型的内在逻辑和外在行为要点• 将领域模型字段的修改设置为私有转载 2022-05-18 10:00:32 · 2236 阅读 · 0 评论 -
领域驱动设计(DDD)在有赞教育线索资源管理的实践
领域驱动设计(DDD)在有赞教育线索资源管理的实践二、领域驱动基础概念介绍在介绍DDD相关基础概念前,我先说明下为什么要使用DDD?在非DDD设计思路下的项目,我们一般先根据需求做数据库表的设计,然后根据表结构设计推导出相应的实体对象,这样的实体对象是数据模型转换的结果。此时,这些对象只是数据的载体,是没有行为的。在这种设计模式下,业务流程实现上仍旧是面向过程式,是一种以数据为中心的过程式思想,其开发过程可以理解为是对数据移动、处理和实现的过程。而如果采用DDD的思想去设计,我们将建立一个基于面向对象设转载 2022-05-18 09:54:27 · 254 阅读 · 0 评论 -
DDD 实践手册(1~6)
DDD 实践手册(1.Get Started)近几年随着微服务的流行,领域驱动设计(Domain-Driven Design) 重新回到了主流视野中。我自己最早是在大约 2003 ~ 2004 年左右了解到 DDD 的概念,之后一些金融行业的业务系统中尝试运用了 DDD 的理念进行系统设计,期间的确感受到了 DDD 与其他架构设计不同之处,但也遇到了不少问题。之后的几年中,我的工作内容逐渐转移到了互联网行业以及与数据相关的工作,在项目中也不太有机会使用 DDD。不过凑巧的是最近的一个项目中,我重新回到了我原创 2022-05-18 09:52:50 · 907 阅读 · 0 评论 -
DDD概念
领域驱动设计领域驱动设计由 Eric Evans 于 2003 年首次提出,是一种软件设计策略,旨在将复杂领域(现实世界的问题)简化为可扩展和可维护的软件解决方案。DDD是一套完整而系统的设计方法,它可以帮你建立一套从战略设计到战术设计的标准设计过程,让你的中台和微服务设计思路更加清晰,设计过程更加规范。DDD方法体系中有很多的设计思想、原则与模式,深刻理解后可以帮你提高微服务架构的设计能力。在使用 DDD 进行微服务设计时,用到了很多解耦策略来实现领域模型和微服务设计的“高内聚,低耦合”。下面我们一原创 2022-05-18 09:52:17 · 524 阅读 · 0 评论 -
02 | 领域、子域、核心域、通用域和支撑域
如何理解领域和子域?我们先看一下汉语词典中对领域的解释:“领域是从事一种专门活动或事业的范围、部类或部门。”百度百科对领域的解释:“领域具体指一种特定的范围或区域。”两个解释有一个共同点——范围。对了!领域就是用来确定范围的,范围即边界,这也是 DDD 在设计中不断强调边界的原因。在研究和解决业务问题时,DDD 会按照一定的规则将业务领域进行细分,当领域细分到一定的程度后,DDD 会将问题范围限定在特定的边界内,在这个边界内建立领域模型,进而用代码实现该领域模型,解决相应的业务问题。简言之,DDD 的领域就转载 2022-05-18 09:51:42 · 1694 阅读 · 0 评论 -
01 | 领域驱动设计:微服务设计为什么要选择DDD?
01 | 领域驱动设计:微服务设计为什么要选择DDD?软件架构模式的演进在进入今天的主题之前,我们先来了解下背景。我们知道,这些年来随着设备和新技术的发展,软件的架构模式发生了很大的变化。软件架构模式大体来说经历了从单机、集中式到分布式微服务架构三个阶段的演进。随着分布式技术的快速兴起,我们已经进入到了微服务架构时代。我们先来分析一下软件架构模式演进的三个阶段。第一阶段是单机架构:采用面向过程的设计方法,系统包括客户端 UI 层和数据库两层,采用 C/S 架构模式,整个系统围绕数据库驱动设计和开发,转载 2022-05-18 09:50:22 · 314 阅读 · 0 评论 -
实施领域驱动设计(Implementing Domain Driven Design翻译)
实施领域驱动设计(Implementing Domain Driven Design翻译)引言介绍这是实现领域驱动的实用指南设计(DDD)。虽然实现细节依赖于ABP 框架基础设施,但是核心概念、原则和模式适用于任何类型的解决方案,即使它不是.NET 解决方案。目标本书的目标是:●介绍和解释DDD 架构、概念、原则、模式和构建块。●解释ABP框架提供的框架结构和解决方案结构●引入显式规则来实现 DDD 模式和通过具体示例的给出最佳实践●展示ABP 框架为您提供以适当的方式实施 DDD 的基础翻译 2022-05-18 09:59:31 · 1557 阅读 · 0 评论 -
DDD 的应用层支持(应用服务)
DDD 的应用层支持(应用服务)原创 2022-05-18 09:33:47 · 568 阅读 · 0 评论 -
基于DDD的abp模式的新框架
1)ABP框架应用项目的介绍而基于基础ABP框架扩展出来的ABP应用项目,则简单很多,我们也是在需要用到不同组件的时候,才考虑引入对应的基础模块进行使用,一般来说,主要还是基于仓储管理实现基于数据库的应用,因此我们主要对微软的实体框架的相关内容了解清楚即可。我们先从一个关系图来了解下框架下的领域驱动模块中的各个类之间的关系。先以领域层,也就是项目中的EventCloud.Core里面的内容进行分析。2)领域对象层的代码分析首先,我们需要了解领域对象和数据库之间的关系的类,也就是领域实体信息,这个原创 2022-05-18 09:30:47 · 762 阅读 · 0 评论 -
04 | 实体和值对象:从领域模型的基础单元看系统设计16 | 视图:如何实现服务和数据在微服务各层的协作?
16 | 视图:如何实现服务和数据在微服务各层的协作?04 | 实体和值对象:从领域模型的基础单元看系统设计今天我们来学习 DDD 战术设计中的两个重要概念:实体和值对象。这两个概念都是领域模型中的领域对象。它们在领域模型中起什么作用,战术设计时如何将它们映射到代码和数据模型中去?就是我们这一讲重点要关注的问题。另外,在战略设计向战术设计过渡的这个过程中,理解和区分实体和值对象在不同阶段的形态是很重要的,毕竟阶段不同,它们的形态也会发生变化,这与我们的设计和代码实现密切相关。接下来,我们就分别看看实体和转载 2022-05-18 09:29:12 · 237 阅读 · 0 评论