技术开发 频道

面向服务架构SOA编程模型简介

    Indigo支持2种主要的服务调用方式:

    携带一组类型参数(最初的Web服务版本)的RPC风格调用(同步和异步)。这种类型的服务调用非常类似传统的方法调用,使用在分布式对象和RPC实现中。
    消息传递风格调用(同步和异步)。这种类型的服务调用类似传统的消息系统(类似本书前面介绍的语义消息传递)。

    根据服务提供的访问类型(RPC vs. 消息传递),它的契约被定义成接口(RPC)或消息(消息传递)契约形式(参见表1)。

    Indigo的另一个基本特性是:引入连接器(提供安全可靠的通信的托管框架)用于访问服务端点。通过将“管道部分”分离进入单独的类(类层次),并在大多数情况下提供“标准”实现,连接器减少了用于构建互操作服务所必须的“管道代码(plumbing code)”,从而简化了“被连接系统”网络的创建。

    Indigo连接器使用很少的概念(端口、消息和信道),使得服务调用独立于传输协议或目标平台。它们中最重要的是信道(channel),它抽象了给(从)端口发送(接收)消息的处理过程。Indigo中定义了2类信道:

    传输信道(Transport channels)用于支持特定的传输协议,如HTTP、TCP、UDP或MSMQ和拓扑结构,如点对点、使用中介(intermediaries)的端到端、对等、发布/订阅。
    协议信道(Protocol channels)用于支持特定的QoS特性,如安全信道加密消息和增加安全头。Indigo使用 WS-*c规范来实现协议信道。坚持标准使得Indigo的实现可以与其他基于WS-*兼容性实现的系统互操作。

    Indigo同样支持组合信道概念——将一个信道置于其他信道之上。如,可以使用将安全协议信道置于HTTP传输信道之上来提供安全的HTTP传输通信。

    Indigo连接器提供了一个构建(Build)为中介提供支持,包括防火墙、代理和应用程序级网关。这些中介是成功实现SOA所必须的很多模式的实现基础,包括消息验证、安全性加强、传输层交换、监视和管理、负载均衡和基于上下文的路由。

    除了支持业务服务创建,Indigo还提供几个系统服务,它们可以被任何业务服务实现使用。这些服务的例子如下:

    联邦认证。这个服务基于WS-Federation,支持企业内部和来自外部边界的身份管理和验证。它的实现在服务和相应的可信凭证之间代理认证。
    事务支持。这个服务基于WS-AtomicTransaction规范,简化了基于服务的事务编程(它支持SQL Server、ADO.NET、MSMQ、分布式事务协调器(DTC)等)。

    JBI编程模型

    Java Community Process利用应用服务器托管应用程序的成功,将它的JBI实现建立在服务容器概念之上。

    就像Java业务集成(IEEE互联网计算)中定义的那样——“JBI是由容器和插件(Plug-in)组成的可插入式架构。这个容器托管使用消息路由进行通信的插件组件。架构上,组件通过一个抽象的服务模型(一个消息传递模型,位于任何特殊协议或消息编码之上的抽象层中)进行交互。"

    在基于JBI的实现中,服务之间并不直接交互。取而代之的是,采用类似EAI实现中广泛应用的消息代理架构,JBI容器扮演在服务之间路由消息的通用中介,(见图1)。

     

    图1 通过JBI协调消息交换

    分离交换的参与者(JBI架构的基础)在服务提供者和消费者之间提供了解耦,以及一个用于协调(mediating)服务通信量(或插入所有额外需要的功能)的明确位置。

    此时,协调器(Mediation)可以支持广泛的功能,从消息传送和安全加强,到基于内容的路由和服务标本标定。

    JBI容器托管了2类不同的插件组件:

    服务引擎(Service Engine,SE)。SE本质上是用来托管JBI环境内部服务提供者和消费者的标准容器f。例如,在JBI环境中经常出现的SE包括数据转换器、业务规则容器和BPEL引擎。
    绑定组件(Binding Component,BC)。BC为JBI环境外部的服务消费者和提供者提供互联性。BC允许集成不提供Java API的组件/应用程序,并使用远程存取技术访问它们。

    组件间的交互利用了基于WSDL 2.0的标准化服务定义。WSDL 2.0定义在服务消费者和提供者之间提供了共享的协议,并作为JBI实现互操作能力的基础。

    除了标准化的服务定义,JBI使用“通用化(normalized)”消息的概念支持全局组件互操作能力。消息通用化将协议与业务特定的上下文映射成一个通用的、可传输风格,这与EAI实现中经常使用的“规范(canonical)”消息表示概念非常类似。

    每个JBI容器存在于一个单独的虚拟机中,并容纳所有的BC和SE,容器提供了一组服务,为SE和BC实现提供操作性支持。

    JBI也定义了基于JMX的标准控制集合,允许外部管理工具执行不同的系统管理任务,也可以管理组件本身。管理支持为以下情形提供了标准机制:

    安装plug-in组件。
    管理plug-in组件的生命周期(启动/停止等。)。
    部署服务器件给组件。

0
相关文章