软件架构分层方法论


在阿里的编码规范中工程结构的应用分层如下:

image.png image.png

Manager 层(补充)

可以将原先Service层的一些通用能力下沉到这一层,比如与缓存和存储交互策略,中间件的接入。业务逻辑放在manager,service来编排manager的原子服务。

也可在这一层封装对第三方接口的调用,比如调用支付服务,调用审核服务等

该分层架构相比MVC主要就是增加了Manager层,它与Service层的关系:Manager层提供原子的服务接口,Service层负责依据业务逻辑来编排原子接口。

  • 业务逻辑就是你的产品逻辑,比如创建用户要具体做什么。

  • manager层的原子服务指的是实现单一功能的服务。

  • 事务应该在service层

外部接口或第三方平台

包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口

例如,Manager层提供创建用户和获取用户信息的接口,Service层负责将这两个接口组装起来。这样就把原先散布在表现层的业务逻辑都统一至Service层,每层边界就清晰了。

比如做一个接口,可将实现放在service层。之后公司内部调用逻辑可放在web层。而哪一天公司要开放这个接口,可直接新抽象一层(一个新的服务),即开放平台层!这样的好处是,可以将本司使用和第三方使用做隔离。比如在提供服务时,为了保证自家接口性能,对开放平台层做限流处理。

传统公司很多是分层部署的,比如保险和金融。service和dao部署在比较严密的网络区域,controller层部署在一个较宽松的网络区域,对外提供服务。等于在网络上增加了一个缓冲区,来保证服务的安全;而且可以通过单向网络规范层级调用,controller可以调用服务层,而服务层是不能调用web层的。

如果将数据访问层单独部署,比如拆分为单独的rpc服务,当然这样拆分粒度比较细。controller就是对外的门面,调用单独的服务层

可以为后期服务运维降低成本

可以提高数据访问层的复用度(数据访问层对外提供API,其他层的应用通过API方式与数据库进行交互),三来可以屏蔽各个数据库实现的具体细节。

参考:

https://www.cnblogs.com/liran123/p/13336730.html

https://zhuanlan.zhihu.com/p/259400685

微信扫描二维码,关注后回复,获取精华资料!

1、回复「书单」:免费获取百本「豆瓣」高分好书。
2、回复「赚钱」:领取实用的36个赚钱小项目。
3、回复「TED」:送你100场TED最受欢迎的演讲,感受最顶尖的思想。
4、回复「学习」:免费获赠英语7000单词速记法(价值200元,很好用),四六级轻松过;
5、回复「PPT」:送你500套好看又实用的PPT模板,让你的PPT颜值爆表]
6、回复「88」:java精品案例,微服务架构Springboot项目实战

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×