SOA 系列:实现SOA的解决方案

来源:互联网 发布:java heap stack 编辑:程序博客网 时间:2024/04/26 10:59
SOA的最常见的解决方案是SCA,其次还有BPEL、SDO也勉强可以算做SOA的解决方案之一,因为后两者也是为了系统解耦和集成提供了支持。
SCA是服务组件架构,是SOA思想的最流行的一种实现方式;ESB是SCA思想实现的基础设施。ESB主要作用是集中注册发布服务,为服务与传输协议之间解耦。并非所有的SOA架构都需要ESB,ESB是SCA特有的。当然任何符合ESB特征的解决方式都可以称之为ESB,也不仅仅是SCA内部的。
 
JBI(Java Business Integration Java业务集成,Java业务整合)是SUN公司解决SOA的方案,当然JBI没有得到IBM与BEA的承认(IBM与BEA等公司推荐SCA和SDO)。JBI是一种企业服务总线(Enterprise Service Bus,ESB),使我们能够用Java实现面向服务的架构。企业正转向以面向服务架构(SOA)和网络服务,以提供灵活的IT系统,用一种成本低廉的方式来支持快速变化的商业需求。
  这里先介绍下JBI架构思想,JBI目的主要是在于创建一个可以集成各种组件服务的运行环境,当然这也是一种服务总线思想的体现。
  目前流行的服务容器有Servlet容器、EJB容器、JMS容器。
  1. Servlet容器只能处理以HTTP/SOAP协议传输的消息(接收与响应);
  2. EJB容器只能处理RMI协议传输的消息;
  3. JMS容器则处理的是JMS协议传输的消息;
  它们之间无法进行通讯,如果想集成上面不同类型的容器服务,则必须有一种能融合以上不同容器的新容器出现。JBI就是基于解决这种问题的思路出现的,JBI提供了各种各样的容器绑定组件(Binding Component,称BC),BC专门负责接收各种各样的传输协议的消息与发送请收消息给外部容器。当然JBI还提供其它的功能,要不这纯属一种代理了,就没什么意义;
  JBI提供处理各种业务的组件(即Service Engines组件,称SE)的消息,比如接收到HTTP的消息后需要转发给外部组件EJB,则需要SE组件来进行转换(更准确的说是Transform SE组件)。其实BC与SE之间是无法直接通信的,所有的消息都是通过传输通道(Deliver Channel)传送到NMR(Normalized Message Router),再由NMR通过DC将信息转到SE或BC的
JBI容器
 
BPEL的作用是将一组现有的服务组合起来,从而定义一个新的Web服务。因此,BPEL基本上是一种实现此种组合的语言。组合服务的接口也被描述为WSDL portType的集合,
       按业务流程之间的协作方式可以分为单工作流模式和多工作流模式;
  单工作流模式把一组相关的服务按一定顺序和条件组合执行,完成某项业务,流程执行过程中涉及的服务不属于其他业务流程;
  多工作流模式是两个或两个以上的工作流程并行执行并进行交互的业务流程模式,多工作流模式侧重于业务流程之间的交互。
 
Service Data Objects (SDO)是一种针对在不同的数据源之间使用统一的数据编程模型的规范说明(is a specification for a programming model that unifies data programming across data source types)。
  为通用的应用程序模提供健壮(robust)的支持,是应用程序、工具、框架等更容易的进行数据的增、删、查、改、约束、更新等操作。
  SDO 旨在创建一个统一规范的数据接入层 并 使用一种“易用”的方法,将混杂的数据源整合到工具集和框架中。
  简言之,SDO就是旨在提供这样一种数据对象:它像橡皮泥一样,可以根据实际的数据源决定它的实际表现。而在使用过程中不必考虑其实际类型和构建方法。
 
SDO的基本构成要素  
        1)Data Object :保存具体的数据,包括原始数据以及指向其他数据对象的引用。数据对象也包含了指向元数据的引用,这使得SDO的元数据能够被读取,包括数据的类型,关系和约束等。这和Java中的反射机制类似;
  2)Data Graph :一个概念上的数据集合。具体的讲,数据图是一个有多个树根的数据对象的集合,可以记录所有对数据对象的操作。
  3)Meta Data :元数据使得开发工具或运行环境能够动态地或者静态的查看数据的属性,包括数据的类型,关系和约束等,同时提供了一组与数据源无关的元数据API;
  4)Data Mediator Service:数据访问服务负责与后台的数据源进行通信,完成构造数据图,更新数据图等操作。
 
 SOA是一种服务集成的架构思想,超越具体的技术和架构,又涵盖具体的技术和架构。综上所述,以上概念都是一个理念、一种思想,并非特指代某个现有的实现或解决方案,这是起初接触SOA 容易犯的概念上的错误。
原创粉丝点击