面向服务的软件开发之二——SOA编程技术与基础设施

目录
一、SOA

二、SOA编程技术与基础设施



一、面向服务的编程技术

1、两个方面的技术


1、服务的封装、发布技术
1)微软平台
2)JAVA平台

2、服务的组合技术
1)基于消息路由的组合,如ESB、Camel、Spring Integration
2)基于流程编排的组合,BPEL、XPDL
3)基于架构的组合,SCA


2、产业界应用较多的技术:

Web服务开发技术
业务流程语言BPEL
服务组件架构SCA和服务数据对象SDO
企业服务总线ESB与面向服务的集成技术JBI
单Java虚拟机内的面向服务技术 OSGI


2.1业务流程执行语言BPEL
面向服务的工作流语言,已成为OASIS的正式标准
通过对服务的组合/编排,实现业务流程
与XPDL语言相比,BPEL语言有:
结构化的工作流语言,包括顺序、分支和各种流程控制方式。 
可以定义变量,支持各种运算
较强的XML处理能力
与Web Service的交互,如invoke、receive、reply等
异常处理,包括错误条件,事务和补偿 
不含绘图相关信息
没有角色、任务分配等概念,尚不能直接支持人工处理
不直接支持子流程,但可以将其他流程当做服务调用
BPEL4People:支持人工处理
目前,BPEL得到IBM、Oracle等大公司的支持,发展前景看好。XPDL是相对比较成熟的技术,在国内使用较多,但业界的支持力度逐渐变小,有没落迹象。




2.2服务组件架构SCA/SDO
SCA/SDO由Open Service Oriented Architecture collaboration提出的一种组件化的面向服务编程模型,并于2007年正式捐献给OASIS组织。目前,还只出了部分规范的草案。SCA提供了服务组件模型、装配模型和策略框架来支持各种异构应用的封装和集成。SDO定义了SOA应用程序中访问各种异构数据源的方法。可以支持Java、C和C++等平台


2.3ESB与JBI


面向服务的软件开发之二——SOA编程技术与基础设施_第1张图片

ESB的主要优势
预定义的ready-for-use的服务类型
更多地通过配置而不是编码实现集成
动态部署和修改, zero down-time
适合各种规模系统,从小系统到企业级部署
基于标准
对已有系统快速、低代价的整合
灵活适应需求变更

JBI(Java业务集成)
JCP的标准JSR 208(JBI1.0),JSR 312(JBI1.0)
插件式的ESB架构标准,可以动态地安装、卸载以及启停JBI组件。
JBI组件:提供服务或者消费服务的软件实体
组件之间采用标准化的消息进行通信: Normalized Message
组件间不直接通信,而是通过Normalized Message Router (NMR)完成消息的中介
Binding Component(BC):负责与ESB外部的系统进行交互
如:Http组件、Ftp组件、File组件、JMS组件等,实现协议适配和消息的normalize/denormalize
Service Engineering(SE):提供业务逻辑或者消息处理的容器
如:BPEL组件、Camel组件、CXF容器组件、Saxon组件,不直接与ESB外部交互,如果需要交互,需要将消息发送给相应的BC
服务单元:由配置文件、脚本、程序等构成的软件单元,可以被部署在特定JBI组件中,使组件可以提供服务或者消费服务。
服务组合件:由多个相关的服务单元构成的部署包

符合JBI标准的ESB产品
Open ESB
Apache ServiceMix
FUSE ESB (enterprise ServiceMix)
Bostech ChainBuilder ESB
Mule:不直接基于JBI,但提供了与JBI容器的互操作能力

2.4单Java虚拟机内的面向服务技术 OSGI
OSGI(Open Service Gateway Initiative)是一个轻巧的、松耦合的、面向服务的应用程序开发框架。
基于OSGI框架运行在同一个Java虚拟机中,提供了可动态配置的、插件式的系统架构。
Eclipse 3.0 以后的版本,采用了OSGI框架作为其系统架构,从性能、可扩展性、以及对二次开发的支持,都取得巨大的成功。
应用程序的模块被称为Bundles,框架为Bundles提供了类加载,生命周期管理,服务注册等服务。Bundles中可以定义组件以及组件提供的服务。服务可以在OSGI的服务注册中心注册。当其他bundles调用服务时,可以在服务注册中心中动态查找并匹配从而完成调用。
OSGI的优点:
可动态拔插的松耦合的系统架构
OSGI是一个微核的、稳定高效的系统。
可复用性强

二、面向服务的基础设施

SOA基础设施平台
企业服务总线ESB
服务的发布、管理
消息的路由、中介、过滤、转换
BPEL流程引擎
BPEL流程的执行和管理环境
消息队列中间件
可靠的消息传输与交付平台
SCA/SDO运行环境

IBM公司的SOA平台产品
三款ESB产品

侧重于多协议适配和消息转换的WebSphere ESB

侧重于J2EE平台架构的WebSphere Message Broker

侧重于数据安全的DataPower

业务流程引擎WebSphere Process Server

消息中间件IBM MQ Series

Oracle

Oracle SOA Suite中包括

ESB平台

BPEL开发和运行平台

消息中间件Tibco MQ Series

SUN公司
应用服务器GlassFish中整合了

企业服务总线OpenESB

流程引擎SUN BPEL

开发工具NetBeans支持SOA应用程序开发和调试

JBOSS
企业服务总线JBOSS ESB

流程引擎JBPM BPEL

消息中间件JBOSS Messaging

Apache

服务容器

Apache Axis

Apache Axis2

Apache CXF

企业服务总线

Apache ServiceMix

Apache Synapse 

流程引擎Apache ODE

SCA/SDO环境Apache Tuscany 

消息中间件Apache ActiveMQ

普元软件公司

SOA的应用平台EOS

SOA业务流程平台BPS

金蝶中间件有限公司

基于Apusic应用服务器的ESB产品Apusic ESB

远光软件公司与武汉大学共同研发的

SOAWARE 3.0信息集成平台


三、信息集成的层次
数据层集成
集中的数据视图、统一的数据管理

服务层集成
实现异构系统接口的虚拟化
实现资源共享、以及系统的互联互通

流程层集成
实现业务流程的编排,实现多系统的系统工作。


技术方案
常规方案:
ESB(企业服务总线):
实现数据、系统接口的服务化
实现各种通信协议的适配
BPEL引擎:
实现流程的编排与执行、系统的协同共享
MQ:
实现消息的可靠传递和交付
可选方案
基于EIP的集成中间件:轻量级的消息路由、中介
SCA:实现协议适配、服务的组合
SDO:实现异构数据的统一访问


你可能感兴趣的:(软件开发,面向服务)