基于ABP实现DDD--领域逻辑和应用逻辑
摘要:本文主要介绍了多应用层的问题,包括原因和实现。通过理解介绍了如何区分领域逻辑和应用逻辑,哪些是正确的实践,哪些是不推荐的或者错误的实践。 一.多应用层的问题 1.多应用层介绍 不知道你们是否会遇到一种情况,通过ABP构建了一个后端的API项目,刚开始是为Web端项目(比如,Vue)提供后端接口服务的
阅读全文
posted @
2022-07-25 00:24
扫地升
阅读(810)
推荐(1) 编辑
基于ABP实现DDD--实体创建和更新
摘要:本文主要介绍了通过构造函数和领域服务创建实体2种方式,后者多用于在创建实体时需要其它业务规则检测的场景。最后介绍了在应用服务层中如何进行实体的更新操作。 一.通过构造函数创建实体 假如Issue的聚合根类为: public class Issue : AggregateRoot<Guid> { pu
阅读全文
posted @
2022-07-24 13:09
扫地升
阅读(622)
推荐(1) 编辑
基于ABP实现DDD--领域服务、应用服务和DTO实践
摘要:什么是领域服务呢?领域服务就是领域对象本身的服务,通常是通过多个聚合以实现单个聚合无法处理的逻辑。 一.领域服务实践 接下来将聚合根Issue中的AssignToAsync()方法[将问题分配给用户],剥离到领域服务当中。如下: // ABP当中的领域服务类通常都是以Manager结尾的 publi
阅读全文
posted @
2022-07-21 08:58
扫地升
阅读(4511)
推荐(8) 编辑
基于ABP实现DDD--仓储实践
摘要:由于软件系统中可能有着不同的数据库,不同的ORM,仓储思想的本质是解耦它们。在ABP中具体的实现仓储接口定义在领域层,实现在基础设施层。仓储接口被领域层(比如领域服务)和应用层用来访问数据库,操作聚合根,聚合根就是业务单元。这篇文章主要分析怎么通过规约将业务逻辑从仓储实现中剥离出来,从而让仓储专注于
阅读全文
posted @
2022-07-18 22:55
扫地升
阅读(838)
推荐(2) 编辑
基于ABP实现DDD--聚合和聚合根实践
摘要:在下面的例子中涉及Repository、Issue、Label、User这4个聚合根,接下来以Issue聚合为例进行分析,其中Issue聚合是由Issue[聚合根]、Comment[实体]、IssueLabel[值对象]组成的集合。 1.单个单元原则 简单理解,一个聚合就是由实体和值对象组成的集合,
阅读全文
posted @
2022-07-15 12:56
扫地升
阅读(245)
推荐(0) 编辑
基于ABP实现DDD--DDD相关概念
摘要:什么是DDD呢?领域驱动设计[DDD]是一种针对复杂需求的软件开发方法。将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节。DDD适用于复杂领域和大规模应用,而不是简单的CRUD应用。它有助于建立一个灵活、模块化和可维护的代码库。 一.DDD中的领域层和应用层相关概念 DDD
阅读全文
posted @
2022-07-15 12:41
扫地升
阅读(248)
推荐(1) 编辑