oracle service bus

学习Service Bus的第一个问题一定是,ALSB或者说OSB能做什么,或者说为什么需要OSB,对于这个问题的疑问在于在所谓的service-enable企业里,既然已经有了所谓的拥有建立Web Service的平台(如Weblogic应用服务器),那我们还缺什么东西呢?

OSB里对于这些疑问的第一个回答是:如果一个应用直接面对各个平台和应用服务器上创建的Web Service进行重用,会面临的一种情况是,当Web服务所在的平台有所变动(如IP地址),则所有调用该服务的应用都需要进行改动,所以OSB的第一个功能是“虚拟化企业里的服务”,也就是所有的服务会由OSB里的一个虚拟端点来表示,而应用只需要连接在OSB里的虚拟服务端点,由OSB在运行的时候来定位实际的服务在哪里,我个人以为这个观点并不能够让人信服,因为如果企业里使用一个Service Registry的话,对于服务的定位本身就是动态的,服务地址的改变可以由Service Registry进行反应。当然,无论是OSB来做这个虚拟化,还是Service Registry来做这个虚拟化,总需要有一个产品来做这个事情!


而另一种对于OSB的描述可能更让人信服,就是OSB的目的就是Connect,Enrich&Transform,Distribute:

Connect的含义是OSB会提供多种协议的接入方式,如对于数据库,OSB会提供比如DBAdapter的接入的手段,对于JMS,OSB会提供JMS Adapter接入的手段,甚至对于ERP等应用产品,OSB也会提供相应的接入的手段,当然反过来也一样,也就是说OSB同样也可以针对以上的多种协议和数据源进行输出,所以Connect的一个含义是,“多协议接入,多协议输出”,这种含义也隐含着OSB可以进行协议转换,比如接入是email的SMTP协议,输出是http协议,而OSB需要处理SMTP到http协议的转换,阐述这个含义的一张图是:


而Transform的另一个含义是应用A的输出是某一种格式,但是并不符合应用B的输入格式,则OSB需要对于格式也进行转换,让应用A也能够和应用B进行对话。
Distribute的含义则是OSB可以根据预先定义的规则去找到相应的服务,如符合规则A,则把消息发到服务Svc1,符合规则B,则把消息发到服务Svc2。

在所有这些描述中,实际上OSB的核心是一个消息处理引擎,对于应用的服务请求(典型的如SOAP消息),按照正确的规则去了解消息的内容,处理之后把消息发给正确的处理者,然后需要记录处理的结果(中间结果),再协调请求者和被请求者的关系,在两个或者多个本来没有设计为互相调用的服务间提供互相调用并监控他们的相互调用。

因为一般而言在一个企业里总会使用IT发展不同时期的产品,它们可能都使用了不同的技术和协议,而这些不同时期的产品的相互对话是现代企业有效利用信息技术的一个必然结果,所以就出现了Service Bus这种可以和各种协议和技术打交道的产品,这就好像是为说不同语言人之间提供的一个翻译器,从而使沟通成为可能,并且为选择以后的产品提供了一个必须符合的最低标准!

http://www.iniu.net/iwork/2008/11/oracle-service-bus.html

你可能感兴趣的:(oracle,应用服务器,weblogic,jms,企业应用)