spring SOA architecture
在谈这个之前,还得再说下SOA和平台。SOA做两件事情,一个是解耦并识别可重用的服务,一个是对服务进行灵活组装和编排满足业务需求,SOA核心是业务和技术的解耦,服务和能力的复用。而在IT领域的平台平台的概念目前基本上有三种,一种是基于快速开发目的技术平台,第二种是基于业务逻辑复用的业务平台。第三种平台基于系统自维护,自扩展的应用平台。技术平台和业务平台都是软件开发人员使用的平台,而应用平台则是应用软件用户使用的平台。
SOA本身是一个平台
首先要认识到SOA产品本身就是一个集成平台,为了完成数据集成,应用集成和流程集成,我们需要一个基础平台来集中统一的完成这个事情。因此SOA集成平台重点则是将服务集成和服务组装的能力全部管理起来,从这个概念上理解自然涉及到SOA最核心的UDDI,ESB和BPEL等功能。这些集成的特性和功能完全是在各个业务系统外的,又是大家都需要的基础公共功能,则应该纳入到平台集中管理。
SOA称之为平台的原因则是它提供了业务系统都需要的通用基础架构和技术,这种能力是大家都需要的公共基础能力。但是如果我们买入一个SOA套装产品,这个产品可能刚开始没有任何服务接入,也无法提供任何服务能力,那么这个产品本身就是一个技术平台。如果后面我们将数据服务,业务服务,流程服务全部识别,开发后发布到平台上,那么SOA平台本身就是一个专属某个业务域的业务平台。
平台本身要考虑SOA化
平台的核心是它是一个公共的基础能力提供中心,平台本身已经集中了所有可复用的能力,开发框架和技术。通过平台我们可以快速的开发平台和应用。
在软件开发里面我们比较关注技术平台,而技术平台简单理解就是所有业务系统标准的技术能力的抽象和封装形成了一个不承载具体业务的空框架。这个空框架不仅仅是简单的技术开发框架,而是融入了更多的基础服务能力。
基础服务能力包括两个层面,一个是纯粹技术方面的基础服务能力,包括日志,异常,消息,事务,国际化,缓存等内容。一个是业务抽象后和业务无关的技术能力,包括通用权限模型,通用流程模型,邮件短信组件,常用UI组件。有了这些,你会发现技术平台本身就是一个完完整整可以独立运行起来的应用,除了没有具体业务功能外其他一应俱全。
基于该平台我们可以开发业务应用,那如果平台本身是基于SOA架构的,那么开发的应用自然也就满足SOA架构风格。一个应用功能应该包括资源层,技术组件,服务组件层,流程层等。一个应用功能在实现业务过程中能够看到业务和技术实现是剥离和松耦合的。一个应用它本身是基于在技术平台上开发的多个业务组件构成的,业务组件间本身松耦合,业务组件间通过服务进行交互。
基于平台开发的业务应用,本身业务组件之间可能基于ESB总线方式进行消息交换,我们可以联想下Java里面的IOC控制反转模式,和通过ESB总线进行交互的思路是很类似的,只有这样才能够实现组件之间进一步的解耦。
传统的很多快速软件开发平台是完全不能符合SOA架构风格要求的,因为基于某些快速开发平台开发出来的应用本身就是紧耦合和封闭的应用。而基于SOA架构风格的平台开发出来的应用本身就是完全组件化和服务化的应用,应用内部SOA化和松耦合,应用和应用之间也松耦合,应用本身可复用的能力很容易通过服务方式暴露出来。
技术平台和业务平台
首先要说明技术平台和业务平台都是开发人员关注的平台,而应用平台可能是最终用户关注的平台。可以看到技术平台和业务平台的划分正好体现了业务和技术本身的一次解耦。
技术平台只关注和业务完全无关的技术本身,将各种技术能力组件化和服务化,提供各种通用的基础服务和技术服务。技术平台提供一套完整的开发框架和开发环境,同时也提供一套完整的执行环境。技术平台既为产品服务,也为业务平台服务。
而细分到某个专业的业务域后可能出现业务平台,业务平台也可以叫做产品平台,比如电信的BOSS平台,网管平台都是很常见的业务平台。那业务平台和技术平台最大的不同是业务平台本身提供了开发多个产品都可复用的业务组件和业务能力。业务平台本身是对多个同类产品通用业务能力的抽取,提炼和下沉。
应用产品->产品平台->技术平台,正好体现了可复用能力的逐层下移,下移的目的只有一个即最大限度的复用,而复用的好处是对通用能力统一管理和统一维护。我们可以试想下,如果没有这种平台,当我们面对N个产品开发对应N套产品开发源代码的时候,对用通用功能的修改调整和升级将是一件巨大的麻烦。
spring SOA architecture的更多相关文章
- Spring Security Architecture and Implementation(架构和实现)学习笔记
Spring Security 关于spring-security的官网文档学习笔记,主要是第8章 Architecture and Implementation(架构和实现)内容 参考: https ...
- (一)Spring’s MVC Architecture
Spring’s MVC module Spring’s MVC module is based on front controller design pattern followed by MVC ...
- Architecture And Framework
高屋建瓴 From Up to Down. Outside into inside. Interface-Oriented Framework with dynamic configuration. ...
- Diagram of Spring 3.0 module dependencies--转载
原文地址:http://www.ogrigas.eu/spring/2009/12/diagram-of-spring-3-0-module-dependencies As Spring 3.0.0. ...
- Service Oriented Architecture and WCF 【转】
http://www.codeproject.com/Articles/515253/Service-Oriented-Architecture-and-WCF Introduction This a ...
- Spring Security验证流程剖析及自定义验证方法
Spring Security的本质 Spring Security本质上是一连串的Filter, 然后又以一个独立的Filter的形式插入到Filter Chain里,其名为FilterChainP ...
- Spring Security 实战:QQ登录实现
准备工作 1.在 QQ互联 申请成为开发者,并创建应用,得到APP ID 和 APP Key.2.了解QQ登录时的 网站应用接入流程.(必须看完看懂) 为了方便各位测试,直接把我自己申请的贡献出来:A ...
- Spring Security(三十二):10. Core Services
Now that we have a high-level overview of the Spring Security architecture and its core classes, let ...
- Spring Security(一):官网向导翻译
原文出自 https://spring.io/guides/topicals/spring-security-architecture Spring Security Architecture ...
随机推荐
- mysql 索引原理及查询优化 -转载
转载自 mysql 索引原理及查询优化 https://www.cnblogs.com/panfb/p/8043681.html 潘红伟 mysql 索引原理及查询优化 一 介绍 为何要有索引? ...
- Django(二)创建app,设置相关后台
location 最后一个文件夹名就是project名,我用了DjangoProject. Application 是自动加入的APP名字,我用了DjangoTest 1.添加APP在pycharm的 ...
- 亚马逊Kindle正式进入中国
6月7日下午消息,亚马逊Kindle今天下午4点正式发售.其中,Kindle电子阅读器和Kindle Fire平板电脑同步销售.Paperwhite售价最低849元,Kindle Fire HD售价最 ...
- JSP--TOMCAT-MYSQL web页面添加
addStudent.jsp如下<%@ page language="java" import="java.util.*" pageEncoding=&q ...
- python3:xlrd、xlwt、xlutils处理excel文件
1.xlrd读取excel 请参考上篇博客https://www.cnblogs.com/shapeL/p/9075843.html 2.xlwt生成excel 安装下载:pip install xl ...
- Magento如何设置产品的打折或者优惠价格
促销是商家的必备武器,手段可以说是花样繁多.其中最有效最具吸引力的就是优惠券了.那么在Magento中如何添加优惠券呢? 修改位置:后台--促销--购物车价格规则 1.点击右上角的 添加新规则 按钮. ...
- mac 常用开发软件列表
toolbox app jetbrains系开发工具箱,包含了phpstorm idea等开发工具 Postman 接口调试工具,有插件版和单独的app两种.类似paw Sublime 文本编辑器,类 ...
- 辞树的QAQ水题(字符串统计,思维)
思路:统计一串字符有多少个'A',并分别统计出每个'A'前后有多少'Q'.然后让每个'A'前后的'Q'相乘并相加就能得出结果了. 注意:数据的类型,卡了int,要用long long. 还有就是在pc ...
- php7 安装swoole4.0.4
下载 https://codeload.github.com/swoole/swoole-src/tar.gz/swoole-4.0.4 tar zxvf swoole-4.0.4 mv swoole ...
- POJ3669解题报告(bfs)
POJ3669http://poj.org/problem?id=3669 很明显是一道bfs的题目 由于陨石的降临具有时刻性,所以地图是随时间变化的, 所以可以使用结构体来存储陨石下落的时刻以及位置 ...