面向成功,实现梦想!

一起分享,一起成长,共创辉煌!
构客网首页  博客  论坛

 
  SOA我有话说
  本文的标签
SCA (收录6197篇)SOA我有话说 (收录205篇)SOA服务构造与实现 (收录46篇)
  用户信息
 
帐号:  新手必读
密码: 保存密码
 
  分类列表
全部类别(24 篇)
我的文章(24 篇)
  按月归档
2008年-04月(24 篇)
  SOA2007 - SOA实践
我们何时迈向SOA
——SOA在中国的整体发展现状究竟如何?
我们如何迈向SOA
——中国企业如何迈出实施SOA的第一步?
我们应采用何种技术
——SOA国际标准SCA/SDO的具体内涵?
我们还需要何种技能
——SOA将如何改变系统架构设计以及项目管理过程?

SCA概念小结

发布时间:2008年05月02日 作者:liang_ma

阅读次数:1004次 类别:我的文章 永久链接 Trackback 3条评论
参加SOA我有话说
SCA涉及到的概念进行了小结...

 

2.2 SCA概念
2.2.1 绑定(Binding)
    绑定(bindings)被服务(services)和引用(references)使用。引用(reference)使用绑定来描述一个访问机制,此机制用来调用它们连接的服务。服务使用绑定来也描述一个访问机制,客户端必须用此机制来调用服务。
SCA支持多种不同的绑定类型。示例中包括SCA serviceWeb servicestateless session EJBdata base stored procedureEIS serviceSCA提供了一个扩展机制,通过这个扩展机制,SCA运行时可以增加对附加绑定类型的支持。
2.2.2 组件(Component)
SCA组件是SCA 实现(implementations)的配置了的实例,它提供和消费服务。SCA允许多种不同的实现技术,如Java、BPEL、C++。SCA定义了一个扩展机制,此机制允许引进新的实现类型。当前的这个规范没有颁布(mandate)SCA运行时支持的实现技术,卖主(vendors)可以选择支持那些对其重要的实现技术。一个单一的SCA实现可以被多个组件使用,其中的每一个组件都有不同的配置。
    组件有一个指向实现的引用,它是实现的一个实例、一个属性值的集合、一个服务引用值的集合。属性值定义了组件的属性的值与组件的实现中定义的一样。引用值定义了它所指向的服务,与实现里定义的一样。这些值可以是一个特殊组件的特殊服务,或包含构件的一个引用。
2.2.3 服务(Service)
    SCA服务用来声明一个实现(implementation)的可到达的服务。对于构件,服务由构件里的组件的服务提供,或由构件定义的引用提供。后面这种情况允许服务以新地址或新绑定重新发布。这样的服务可以认为是一个点,在这点上,消息从外部的客户端进入到构件或实现。
    一个服务代表一个实现的操作集合,这些操作被设计供其它实现使用,或在别处使用(如公共Web服务可供其它组织使用)。一个服务提供的操作由一个接口提供,这些操作与服务客户端所需的操作一致。一个实现可以包含多个服务,单独访问此实现的服务是可能的。
    服务可由很多种形式提供,如SCA远程服务、Web服务、无状态会话EJB的服务、EIS服务等等。服务使用绑定来描述它们发布的方式。SCA提供一个扩展机制,此机制使得为新的服务类型引入新的绑定方式成为可能。
 
2.2.3.1 远程服务(Remotable Service)
    在松散耦合SOA架构中,远程服务被设计为远程发布。比如,SCA实现的SCA服务可以定义工业标准(industry-standard)网络服务的实现。远程服务对参数和返回结构使用值传递(pass-by-value)语义。
    如果一个服务由WSDL port type定义,或者由带有@Remotable注解的Java接口定义,那么此服务是远程服务。
2.2.3.2 本地服务(Local Service)
    在紧耦合架构中,本地服务是这样设计的,它仅能被并发地部署在同一个操作系统进程里的其它实现在本地使用。
本地服务可以使用by-reference调用惯例,或使用一个与远程发布矛盾的细谷粒(fine-grained)交互类型。它们也可以使用特殊技术(technology-specific)的数据类型(data-types)。
目前,只有Java接口中不带@Remotable注解的接口是本地接口。
2.2.4 引用(Reference)
SCA引用代表一个实现对一个服务(此服务由其它实现提供)的依赖,这里被使用的服务通过配置被指定。换句话说,一个引用是一个实现(implementation)在其业务功能执行期间可以调用的服务。引用被表征为一个接口(references are typed by an interface)。
    对于构件来说,构件引用可以被此构件里的组件访问,就像访问此构件里的一个组件提供的任何服务一样。在配置组件时,构件引用可以被作为连线(来自组件引用)的目标来使用。
    一个构件引用通常用来访问服务,比如由另一个SCA构件提供的一个SCA服务、一个Web服务、一个无状态会话EJB、一个数据库存储程序或一个EIS服务等等。引用使用绑定(bindings)来描述用于访问服务的方法。SCA提供了一个扩展机制,此机制允许引入引用的新的绑定类型。
2.2.5 实现(Implementation)
    实现(implementation)用来描述一个软件技术块,如一个Java类、BPEL过程、XSLT 转换(transform)或C++类,这个块用来实现一个面向服务应用的一个或多个服务。
    实现(implementation)定义了可变点(points of variability),包括可被设定值的属性和对其它服务的引用。可变点被使用此实现的组件配置。这个规范用实现的componentType来表示它的可配置方面。
2.2.6 接口(Interface)
    接口定义了一个或多个业务功能。这些业务功能由服务提供,通过引用被组件使用。服务通过它们实现的接口来定义。SCA目前支持两种接口类型体系:
l         Java interface
l         WSDL portTypes
    SCA同样提供了一个扩展机制,通过此机制SCA运行时可以增加对其它接口类型体系的支持。
    接口可以是双向的(bi-directional)。一个双向服务拥有一些服务操作,这些操作必须由一个服务通信(communication)的每个结尾提供。当客户机上一个特殊服务需要一个回调(callback)接口时,在这种情况下才使用双向接口。这个回调接口在处理来自客户机的服务请求过程中被调用。
2.2.7构件(Composite)
一个SCA构件是一个SCA域的基本组成单元。一个SCA构件是一个组合,它包括组件(Component)、服务(Service)、引用(Reference)以及连接它们的连线(Wire)。构件通常把元素贡献给一个SCA域。
    一个构件有下面的特征:
l         它可以作为一个组件实现来使用。当以这种方式使用时,构件会为组件可见性定义一个界。构件里声明的组件不能直接从此构件的外面被引用。
l         它可以被用来定义一个部署单元。构件通常把业务逻辑部件贡献给一个SCA域。
2.2.8构件包含(Composite Inclusion)
    通过使用inclusion,一个构件可以作为另一个构件定义的一部分。这将使得大构件的团队开发变得容易。这些被包含的构件在部署时被合并到使用它们的构件里,形成一个单一的合乎逻辑的构件。
    构件通过使用<include…/>元素来包含其它构件。SCA域以一个类似的方式使用构件,通过部署构件文件到一个特定的位置。
2.2.9属性(Property)
    属性(properties)允许在实现的外面设定数据的值。这个数据值可以通过组件提供,也可能来自包含它的构件的属性。
    每一个属性通过实现定义。属性可以直接通过实现语言(implementation language)或实现的注解或通过一个conponentType文件来定义,这里的实现语言是可允许使用的语言。一个属性可以是一个简单的数据类型或一个复杂的数据类型。对于复杂的数据类型,首先使用XML模式来定义数据类型。
2.2.10域(Domain)
    一个SCA域代表一个服务集合,这个集合提供业务功能的一个范围(area)且被一个单一组织控制。举个例子,对于某个业务的账目部门,SCA域可能覆盖所有与财务相关的功能,它可能包含一系列构件来处理账目的特定区域,如其中的一个处理顾客账目,另一个处理应付款。
    一个域指定了由一个或多个构件文件提供的实例(instantiation)、配置(configuration)、组件集合的连接。这个域像构件一样,也拥有服务和引用。域同样也包含连接组件、服务和引用的连线。
2.2.11连线(Wire)
    SCA连线把服务引用和服务连接到一起。
    在一个构件里,连线有效的源是组件引用和构件服务。连线有效的目标是组件服务和构件引用。
    当使用included构件时,连线的源和目标不一定在同一个构件(如包含此连线的构件)里声明。源和目标可以通过其它的included构件定义。目标也可以是SCA域外面的。

本文参加了“SOA中国的关键任务”博客大赢家,评论文章即可参与活动,赢取万元奖金!

 评论 查看全部评论
 
love_soa 于 2008-09-12
比较经典的总结!
 
bsspirit 于 2008-06-27
不错
 
牛者恒牛 于 2008-05-04