课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
领域驱动设计是我们在学习软件开发的时候会接触到的一种软件开发模式,而今天我们就通过案例分析来聊聊领域驱动设计模型的层次问题。
1、基础设施层
基础设施层主要为其他层提供通用的技术能力,比如,应用的消息发送、领域持久化等。在实际的项目应用中,本层主要用于持久化数据的读取和写入,我们可以在这一层,将需要持久化的领域对象序列化到指定的存储介质中,比如:数据库、Hbase、MongoDB、ES等,同理,亦可从这些存储介质中取出数据并组装成领域对象。在这一层,一般会采用仓储机制实现领域持久化能力。
2、领域层
领域层,亦称模型层,属于业务系统中核心的一层,整个系统中几乎所有的业务逻辑均会在该层实现。本层主要包含领域模型和领域服务。
(1)领域模型
领域模型用来抽象复杂的业务逻辑,将其转换为便于理解的概念图模型,一般由实体和值对象构成。它与数据模型的不同点在于:数据模型描述的是对象的持久化方式,而领域模型表述的是领域中各个类,以及各类之间的关系。
(2)领域服务
领域服务可以认为是领域模型的一种补充,因为在实际建模过程中,一些概念本质上是一些操作,它们会涉及到多个领域对象,并且需要协调这些领域对象来完成这个操作,如果强行将这个操作归类到某个对象,那么这个对象就会承担一些本不属于它的职责,进而出现对象职责不明确的现象,此时,就需要领域服务来承载这些操作,用来串联多个领域对象。比如,在线索管理项目中,线索详情页信息是由“线索基础信息”、“标签信息”、“来源信息”、“线索处理日志信息”等构成的,我们在建模时,考虑到合理性将四者定义为了四个单独的实体,此时就出现了问题,线索详情获取时,完整的线索信息怎么聚合,该放在哪里?考虑到四者信息领域相关性,我们便引入了领域服务,用来承载线索信息聚合操作。
3、应用层
应用层用来提供应用服务,主要负责业务用例的编排和组装,它和领域服务的主要区别,个人观点是:是否处理业务逻辑。具体介绍的话,就是协调领域层与用户界面层之间的关系,对外为用户界面层提供各种应用功能,对内调用领域层的领域对象或领域服务完成各种业务编排、组装。
4、用户界面层
用户界面层主要负责用户信息的展示,具体来说就是:请求应用层获取用户所需要展现的数据,以及发送命令给应用层要求其执行某个用户命令。在实际应用中,本层是可以不存在的,比如,在教育团队早期的项目中,前端是通过http的方式调用后端服务的,我们在这一层通过提供REST服务的方式与前端交互,之后,统一采用了RPC调用的方式,便弱化了这一层:在该层声明二方服务接口与前端node层交互,然后在应用层作具体的接口实现。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!