项目架构实战:分层架构规范的Demo以及微服务架构的演进

请先参考

项目架构规范:阿里规约,MVC架构以及三层架构(一)

https://blog.csdn.net/lin451791119/article/details/106348414

项目架构规范:阿里规约,MVC架构以及三层架构(二)

https://blog.csdn.net/lin451791119/article/details/106378277

项目架构规范:阿里规约,MVC架构以及三层架构(三)

https://blog.csdn.net/lin451791119/article/details/106396958

分层目录要点

  1. 严格区分每层的职责
  2. 严格确定分层的调用链路
  3. 严禁使用map/json等格式做数据传递
  4. 严禁使用BeanUtil.Copy等方法转换

分层目录结构

总体分为应用层、业务领域层和基础设施层

 

应用层

应用层用于接收外部的请求,是整个系统所提供能力的外观,包含API、MQ-Listener等。专用于处理和业务无关的操作,包含验签、参数校验、拦截等处理,不实现业务逻辑通过编排业务领域和外部请求,对外提供细粒度的能力

  • API:接收来自外部的HTTP请求,只做参数校验、业务领域数据组装、业务逻辑编排和响应请求
  • MQ:监听消息队列的请求,不做业务处理
  • Model:用于封装外部的请求参数、封装响应外部参数,与底层数据存储的结构完全无关
  • Assembler:用于Model与业务领域层的Model之间的相互转换工作,例如:使用反射机制自动beanutils相互转换
  • Configuration:全局的配置信息或处理,例如:全局参数校验机制、全局异常处理等

业务领域层

业务领域层主要用于实现业务逻辑,包含业务规则、策略和流程

  • Model:用于接收或响应来自应用层的业务属性,同时可承载Model的行为避免失血模型。业务层只负责业务,与具体的表现形式无关,所以它返回的Model不应该出现与表现形式的耦合。
  • Repository:仓储层用于对持久化通用操作的封装,将领域对象持久化,屏蔽了持久化层的特性
  • Service:处理业务逻辑,对Repository和External的操作编排
  • External:封装对外部的请求,包含了请求的定义、参数等

基础设施层

基础设施层为以上各层提供技术支持,例如持久化操作、公用的操作等

  • Commons:共用的操作类、工具类等
  • Persistence:直接面向DB的操作

命名规范

名称描述所属分层示例备注
Client Request客户端请求入参对象Facade.modelUserRequest 
Client Response客户端请求响应对象Facade.modelUserResponse 
Domain Object领域对象Biz.domainUserDomain 
Value Object值对象Biz.domainUserVO 
Domain Factory领域工厂Biz.domainUserFactory创建Domain Object
Repository仓库Biz.domainUserRepository对Domain Object的持久化
Service业务逻辑Biz.serviceUserService处理业务逻辑
External Request请求外部对象Biz.external.modelUserExtRequest请求外部接口的入参
External Response请求外部对象Biz.external.modelUserExtResponse接收外部接口的响应
Data Object数据库对象Infrastructure.persistence.entityUser 
Dao Object数据库操作对象Infrastructure.persistence.mapperUserMapper 

为什么要分出这个external这个包,是为了以后向微服务架构转型,尤其是Spring+Feign,会带来极大的便利!如果请求远程的服务和服务器提供的服务混杂在一起,整理项目的时候会十分混乱!

分层调用路径

 

目标所属层操作备注
Client RequestDomain ObjectDomain.factory 
Domain ObjectData ObjectDomain.Repository意味着Domain Object可以出现在Factory、Service和Repository层
Domain ObjectClient ResponseFacade.api拿到业务层的返回的Domain Object后,转换成客户端能识别的Client Response
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值