ABP入门教程(四)初探领域驱动设计
ABP项目的分层
.Application 为应用层:构建服务
.Core 为领域层:定义实体,定义实体功能,实现实体功能,定义仓储接口
.EntityFrameworkCore 为数据库处理(EF层):实体与数据表的对应与配置,实现仓储接口
.Web.Core 为控制层:负责把应用服务自动解析为Controller
.Web.Host 为程序入口:系统配置(数据库连接,系统端口,日志框架等)
ABP项目开发中重要的角色和职责
实体: Entity : 与数据库对应
仓储: Repository : 操作实体, 实现基本的增删改查, 实现复杂的数据处理逻辑
领域服务: Manager : 调用Repository, 实现领域功能
应用服务: Service : 调用Repository和Manager以提供复杂的应用服务
领域驱动设计原理
个人理解的领域驱动设计的落地原理是:
1,领域层定义实体,并实现实体的功能
例如,一个用户有多个角色,一个角色有多个菜单的权限
用户有GetRole()功能获取用户的全部角色, 角色有GetMenu()功能获取角色的菜单
2,应用层调用领域层各实体的功能组成服务
例如开发“获取用户菜单“这个服务
- 先调用用户的GetRole()功能获取用户全部的角色,
- 再循环调用角色的GetMenu()功能得到用户的全部菜单
领域驱动设计实现过程
所以在APB中领域驱动的实现过程是:
1,在领域层定义实体Entity
2,在领域层定义仓储接口,在EF层实现仓储
3,在领域层实现实体的功能: xxxManager
4,在服务层调用xxxManager的各个方法组成服务
ABP的几个概念
Entity与数据库表对应,只包含基本的字段定义(命名,类型,主键,外键,长度限制等)
一个Manager只专注对应Entity可以实现的功能
一个应用服务往往需要多个Manager的功能组合在一起来实现
ABP入门教程(四)初探领域驱动设计相关推荐
- 初探领域驱动设计(1)为复杂业务而生
概述 领域驱动设计也就是3D(Domain-Driven Design)已经有了10年的历史,我相信很多人或多或少都听说过这个名词,但是有多少人真正懂得如何去运用它,或者把它运用好呢?于是有人说,DD ...
- ddd java repository_初探领域驱动设计(2)Repository在DDD中的应用
概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...
- ABP学习实践(十六)--领域驱动设计(DDD)回顾
ABP框架并没有实现领域驱动设计(DDD)的所有思想,但是并不妨碍用领域驱动的思想去理解ABP库框架. 1.领域驱动设计(DDD)与微服务(MicroService)的关系? 领域驱动设计(DDD)是 ...
- 初探领域驱动设计(Domain Driven Design)
前言: 我个人在学习DDD的过程中,早期翻找各种资料的时候,看到了很多名词:战略设计.战术设计.聚合根.实体.值对象.界限上下文...这些繁多的名词定义配合上几乎少的可怜的实战例子,让我在翻阅了大量资 ...
- 【吐血推荐】领域驱动设计学习输出
一.Hello DDD 刚开始接触学习「DDD - 领域驱动」的时候,我被各种新颖的概念所吸引:「领域」.「领域驱动」.「子域」.「聚合」.「聚合根」.「值对象」.「通用语言」.....总之一大堆有关 ...
- 领域驱动设计(DDD)架构演进和DDD的几种典型架构介绍(图文详解)
我们生活中都听说了DDD,也了解了DDD,那么怎么将一个新项目从头开始按照DDD的过程进行划分与架构设计呢? 一.专业术语 各种服务 IAAS:基础设施服务,Infrastructure-as-a-s ...
- 领域驱动设计,让程序员心中有码(二)
引子,软件工程没有银弹 上一篇博文领域驱动设计,让程序员心中有码,抛出了一个问题,领域驱动设计真的是万能的良方吗?对于这个问题,大家的答案无疑是一致的,作为一种非常受软件行业欢迎的软件思想,领域 ...
- 领域驱动设计详解:是什么、为什么、怎么做?
简介:什么是领域驱动设计?传统分层架构在实际开发中存在哪些问题?业务开发人员如何设计并搭建自己的领域模型?阿里文娱技术专家战獒将为大家一一解答,并分享文娱在领域驱动设计上的实践. 一 什么是领域驱动设 ...
- 阿里资深架构师推荐 -- 如果正确的开启领域驱动设计
简介: 什么是领域驱动设计?传统分层架构在实际开发中存在哪些问题?业务开发人员如何设计并搭建自己的领域模型?阿里文娱技术专家战獒将为大家一一解答,并分享文娱在领域驱动设计上的实践. 一 什么是领域驱动 ...
最新文章
- Python OpenCV学习笔记之:图像读取,显示及保存
- Spring冲刺计划会议
- 基本套接字总结(@function)
- 自己实现苹果安装app动画
- 萌宝出街,熊孩子逆袭小小“时髦精”
- spark应用程序转换_Spark—RDD编程常用转换算子代码实例
- reactJS -- 13 JSX样式与CSS的互转
- java图像在背景图移动_java – 在Swing中移动背景图像
- C# 连接 Sqlserver2005 Analysis Service的总结
- python pyecharts map不显示_pyecharts 地图不显示问题
- 关于Python3的namedtuple问题
- 设计模式学习与应用——单例模式
- Python数据分析与挖掘实战总结
- FPGA入门学习——流水灯
- 【转】OC门与线与逻辑(含逻辑图)
- EasyNVR无插件网页摄像机直播流媒体服务器对接海康8700平台视频出现RTSP视频无法接入的问题解决
- Java 根据身份证号获取性别、年龄、出生日期等信息
- 【操作系统原理-2014年清华陈渝老师】索引
- 开题报告、论文摘要、摘要翻译、论文结论怎么写?
- vue中element国际化语言切换