为什么系统要分层如何知晓公司系统中采用的是什么分层架构( 三 )


Manager层可以将原Service层的一些通用能力进行下沉,比如与缓存和存储交互策略,中间件的接入;还可以封装对第三方接口的调用,比如调用支付服务,调用审核服务等RPC接口 。

为什么系统要分层如何知晓公司系统中采用的是什么分层架构

文章插图
通用业务处理层,它有如下特征:
对第三方平台封装的层,预处理返回结果及转化异常信息 。对Service层通用能力的下沉 , 如缓存方案、中间件通用处理 。与DAO层交互 , 对多个DAO的组合复用 。其各层的作用如下:
终端显示层:各端模板渲染并执行显示的层 。当前主要是Velocity渲染,JS渲染,JSP渲染,移动端展示等 。开放接口层:将Service层方法封装成开放接口,同时进行网关安全控制和流量控制等 。Web层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等 。Service层:业务逻辑层 。Manager层:通用业务处理层 。DAO层:数据访问层,与底层 MySQL、Oracle、HBase 等进行数据交互 。外部接口或第三方平台:包括其它部门RPC开放接口,基础平台,其它公司的HTTP接口 。系统工程结构在学习了以上分层架构之后,下面来看一下针对分层在软件系统中的对照关系表:
为什么系统要分层如何知晓公司系统中采用的是什么分层架构

文章插图
以上分层定义仅供参考 。在上表中还多出了对外接口层和接入层 。
对外接口层:所有对外的接口放在这层,不能包含任何业务逻辑,只数据对象的转换和异常的封装 。
接入层:所有外部系统的依赖放在这层,好处是一旦外部系统接口修改,只需要在一处修改即可 。
DDD分层架构DDD是一种处理高度复杂领域的设计思想,试图分离技术实现的复杂性,同时围绕业务概念构建领域模型,提出的一种软件架构设计的方法论 。
DDD分层架构将数据、缓存等都视为基础层,可以被所有层调用;抽离了领域层,负责核心业务逻辑处理,领域层调用外部依赖全部通过接口,以保证领域层的100%单测覆盖率;应用层聚合多个领域层的能力,只做功能的组合、转发,不负责具体业务逻辑 。
我们这里只做DDD分层架构的简单介绍,关于DDD概念不做过多拓展,相关架构模式可专门进行学习一下 。看一下DDD分层的架构图:
为什么系统要分层如何知晓公司系统中采用的是什么分层架构

文章插图
其中对应层的功能介绍如下:
接口层(Interfaces):该层包含与其他系统交互的所有内容,如Web服务器、RESTful接口 。接口层处理传入数据的解释、校验、编解码、序列化操作,同时可以考虑引入专门的DTO(数据转换对象)来协助数据转换;
应用层(Application):该层负责驱动应用程序完成工作流程 。很薄一层,协调多个领域对象(实体、聚合根、领域服务)实现服务编排和组合完成工作流,该层通常不应该包含具体业务逻辑 。该层涉及:其他微服务RPC调用、微服务编排和组合、分布式事务实现、消息驱动事件的驱动、日志记录等 。
领域层(Domain):该层是软件的核心,包含业务逻辑具体实现,包含实体、值对象、聚合、领域服务、仓储接口等领域对象内容,通常该层应该配备图示告知软件是如何工作的;
基础层(Infrastructure):包含网关、缓存、数据库存储、消息中间件、监控、应用程序服务等通用的技术和基础服务 。基础层以不同方式支持到其他三层,促进各层间通信 。配置文件、数据库Schema模式定义以及仓储接口实现都是基础结构的一部分;
DDD分层架构传统三层架构的比较DDD四层架构也基于传统三层架构的 , 看一下它们之间的对照关系: