
文章插图
SOA架构分层重点就是要体现出独立的服务层,注意不是画服务总线,这里可以单独画出具体提供哪些业务服务能力,技术服务能力 。在采用SOA架构进行开发的时候,整体业务系统拆分为4个组件,10类服务域,5类流程,那么在构建的时候重点就是将上述组件,服务域和流程类体现出来 。
对于参考SOA架构来进行的构图,参考如下:

文章插图
这里的数据层最好改为标准的组件层,更加贴近SOA架构模型 。在图中的服务层已经可以看到一个个独立的API服务接口 。如果服务接口数据大,一般只会划分到服务域,比如用户中心服务,采购类服务等 。在这种方式下构图参考如下:

文章插图
在上图中结合了云和SOA两种架构融合在一起,对于上图中的服务层实际可以理解为组件资源层和服务接口层的融合 。更好的构图方式应该是拆分为标准的中台资源层-服务层-应用层 。
云和SOA架构融合

文章插图
注意对于云分层架构重点强调的是基础设施,平台和应用三层架构 。而对于SOA架构强调的是资源,服务和应用三层 。而对于对于传统的应用系统的构建一般又包括了IT基础设施,技术平台,数据库,中间件和应用 。再到应用系统本身的分层架构可能又是标准的三层架构模式等 。
这些架构分层方法都帮助我们进一步融合分层架构模式 。
架构分层有很多方法,包括基础设施层,平台层,组件层,支撑层,服务层,应用层,数据层,展现层等 。多种分发导致分层模型反而出现歧义和模糊 。
在这里我们从技术架构和应用架构两个层面来谈,技术架构沿用云计算的三层模型;而对于应用架构则采用eTOM模型标准的资源,服务,应用三层模型 。那么两种分层架构模型的融合则是一个完整的云和SOA融合的分层架构模型 。
即云计算的三层中,每一个层次本身又可以进一步拆分为资源,服务和应用三层 。
拿IaaS层来说,最底层的物理资源虚拟机等是属于资源层内容,通过IaaS层资源能力提供API接口作为技术服务进行能力开放,即是服务层;最终基于资源能力,构建了一个公有云的面向公众的运营服务平台,本身又属于应用层的内容 。而对于SaaS层,则底层的业务组件是资源,抽象的API接口是服务层,最终的前端业务或流程是应用功能实现 。
应用架构分层回到单个应用的架构分层,谈得最多的就是常说的三层架构模式 。在软件架构中,经典三层架构自顶向下由用户界面层(User Interface Layer)、业务逻辑层(Business Logic Layer)与数据访问层(Data Access Layer)组成 。
在整个实现过程中,可能还会增加独立的Facade层,或独立的API接口服务提供层,统一的DTO数据传输对象层等,但是这些都不影响整体的三层逻辑结构 。

文章插图
三层架构本身也和一个业务功能实现的完整对应,在数据访问层处理数据获取和持久化操作,在业务逻辑层对业务规则进行处理,在界面展现层进行相应的前端展现和用户交互 。
而谈到领域建模的时候,又引入了领域模型中的分层架构,如下:

文章插图
领域驱动设计在经典三层架构的基础上做了进一步改良,在用户界面层与业务逻辑层之间引入了新的一层,即应用层(Application Layer) 。同时,一些层次的命名也发生了变化 。将业务逻辑层更名为领域层自然是题中应有之义,而将数据访问层更名为基础设施层(Infrastructure Layer),则突破了之前数据库管理系统的限制,扩大了这个负责封装技术复杂度的基础层次的内涵 。
当然,也有融合了领域模型和传统三架构思路后的技术架构如下:

文章插图
领域层和业务逻辑层
在领域建模的一个核心是领域模型,领域模型不再是一个个独立的数据库表或数据对象,而是一个业务对象或领域对象 。因此领域层是面向领域对象而设计实现,而业务规则能力本身也是属于领域对象对外提供的能力接口 。即业务规则本身也是领域对象暴露的能力 。
推荐阅读
- 细数软件架构中的解耦
- 再谈领域驱动设计
- 如何去除360以及其他软件的捆绑广告
- 礼品盒设计制作有哪些方法
- 远程控制软件哪个好,试试Win10远程桌面,不会让你失望
- 如何绕过win7系统开机密码,进入系统安装特殊软件
- 聊聊几个程序员经常用的作图软件
- Linux主流架构运维工作简单剖析
- 一文看懂微服务架构之注册中心Consul、Nacos
- ERP的权限管理的操作与设计
