Oracle的SOA方案的一个现实驱动力来自于在收购了多家应用厂商后,Oracle需要使用一个先进的架构和平台灵活无缝地把这些应用集成起来,这个架构就是Fusion Architecture,这个架构从理念上的确融合了以前Siebel和Peoplesoft的一些先进思想,同时,这个平台也将是Oracle的下一代融合应用产品的基础技术平台。当然这个平台的核心思想是面向服务,我们将会介绍Oracle的一系列的SOA的基础概念以及Oracle会如何使用这个平台来整合Oracle的应用产品。
SOA标准简介
SOA的起源和核心都在于Web服务,简单来说,Web服务就是使用封装的XML消息在两个通话方之间进行交流的一种方式,SOA使用了大量的通用协议来完成所谓面向服务架构的工作,如下图:
消息:SOA使用XML来传递消息,XML消息的封装使用SOAP简单对象协议进行封装。
传输协议:封装后的XML消息使用HTTP,JMS或SMTP协议进行传输。
Web服务描述:Web服务的一个重要功能是如何描述Web服务,从而使第三方可以很容易的调用该服务。Web服务的描述使用WSDL语言(也是XML格式)进行描述。
UDDI则是公共服务注册和发布的一个中心,本意是一个企业的所有服务都可以在这里注册和发布,以利于寻找所需要的服务。
而要把多个Web服务串起来完成一定的功能就是BPEL4WS的主要目的,一个最简单的就是网上购物的时候必须调用银行的支付服务,支付成功才能进行货物的交付。更加复杂的例子就是可能完成一个商业流程需要调用到多个系统的不同功能,如order2cash流程,包含了如何从CRM系统的订单服务,一直到财务系统里检查客户的信用,以及在物流系统里做发运,最终形成发票的跨多个系统的一个流程,这些就是BPEL需要关注的最主要的场景。
Web服务的质量服务(Qos)主要是从web服务的可靠性,Web服务使用的安全性,Web服务如何处理分布式交易,Web服务如何跨越多个endpoint共享上下文等方面的一些协议来规范Web服务。
Oracle SOA套件简介
Oracle的SOA技术产品叫SOA套件(Oracle SOA Suite),不仅可以运行在Oracle自己的J2EE平台,还可以运行于其他中间件厂商(BEA,IBM)的中间件平台。需要注意的是,Oracle的融合中间件架构并不仅仅包含SOA套件,而且还包含了一系列其他的产品。
以下是SOA套件的一个结构图:
Jdeveloper是和Oracle产品紧密联系的一个免费的开发工具,如果是要使用Oracle的平台进行开发,没有什么开发工具能够比Jdeveloper更加方便和高效了,Jdeveloper已经包含了大部分常见Oracle产品开发所需要类库,也有一个图形的,能够自动提示和完成语句的助手以及一个非常重要的能够跟踪到产品内部的调试环境等。无论是进行普通J2EE开发,还是BPEL/ESB开发任务,都能够使用Jdeveloper很好完成。
Oracle 的BPEL Process Manager是包含了常见的web服务流程化开发的所有通用组件,还包含了人机交互工作流的开发机制以及提供了大量的进行各种系统连接到Web服务环境的适配器(如数据库,FTP服务器,商业打包应用Oracle 11i,SAP等)。而ESB则是作为把各种应用包括传统应用暴露成web服务接入SOA环境以及虚拟化接入系统的一个平台,当一个系统接入ESB后,则可以在不改变BPEL流程的情况下把一个系统换成另一个系统。
Web Service Manager(WSM)是一个专门针对Web服务安全设计的产品,提供了一个企业Web服务的安全和认证的统一的接口和平台,所有的Web服务可以先注册到该平台,然后由WSM把该服务发布出去(可以换成另一个服务名),这样当无论什么用户需要访问该Web服务的时候,都需要经过WSM这种统一的认证和授权才能够访问到该服务,这就解决了各个厂商不同中间件平台上各自独立的Web服务的安全的管理模式。
另一个产品BAM则是一个实时监控业务的平台,该产品有一个非常华丽的外观(据说看过该产品界面的用户都会被吸引住),提供实时的商业智能的功能和根据实时的业务情况(可以定义阈值)进行反应(调用一个Web服务)的功能。