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 ...
随机推荐
- 软件工程——Word-Counter
Python实现Word-Counter 一.前言 Github地址:https://github.com/hzquestion/Word-Counter 二.项目概述 实现一个统计程序,它能正确统计 ...
- 【数据库】MFC ODBC(三)
4.SQL查询 记录集的建立实际上是一个查询过程,SQL的SELECT语句用来查询数据源.在建立记录集时,CRecordset会根据一些参数构造一个SELECT语句来查询数据源,并用查询的结果创建记录 ...
- 安装Windows Installer服务
Windows Installer 5.0.810.500 下载地址: 电信:http://mdl1.mydown.yesky.com/soft/201303/WindowsInstaller.rar ...
- Java内存不足之PermGen space错误探究
一.Java 程序的运行机制与普通程序,如C或C++ 程序的运行机制有很大的区别. 普通程序运行之前必须首先编译成可执行的二进制码或机器码.机器码是与底层的硬件结构相关的,即使书写源代码的时候没有利用 ...
- SSH 获取GET/POST参数
在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息.最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到pos ...
- GTK安装
上面是linux下GTK+配置所需要的库,关于各个库的功能,查看http://www.gtk.org/overview.php,至于库的下载在http://www.gtk.org/download/l ...
- js窗口拖动 模版
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- java语法基础练习
1.阅读示例: EnumTest.java,并运行.分析结果 代码: public class EnumTest { public static void main(String[] args) { ...
- (3)re模块(正则表达式模块)
什么是正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
转载至:https://blog.csdn.net/wo541075754/article/details/75349556 auto-focus 在agenda-group章节,我们知道想要让Age ...