SCA
(Service Component Architecture)编程模型
1).
使用服务组件的客户端可以选择使用WSDL接口或Java接口。
服务组件提供给别的服务调用的入口叫Interface(接口)。而服务组件本身可能也需要调用别的服务,这个调用出口叫Reference(引用)。无论是接口还是引用,其调用规范都是WSDL或Java接口。
2).SCA
服务组件与传统组件的主要区别在于:
1
. 服务组件往往是粗粒度的,而传统组件以细粒度居多。
2
. 服务组件的接口是标准的,主要是WSDL接口,而传统组件常以具体API形式出现。
3
. 服务组件的实现与语言是无关的,而传统组件常绑定某种特定的语言。
4
. 服务组件可以通过组件容器提供QoS的服务,而传统组件完全由程序代码直接控制。
3).
服务模块(Module)
服务模块(简称模块)由一个或多个具有内在业务联系的服务组件构成。把多少服务组件放在一个模块中,或者把哪些服务组件放在一起主要取决于业务需求和部署上灵活性的要求
4).
导入(Import)和导出(Export)
两个特殊的"端点",一个是导入(Import),它的作用是使得模块中的服务组件可以调用模块外部的服务。另一个是导出(Export),它的作用是使得模块外部的应用可以调用模块中的服务组件。
导入端点提供了四种绑定方式,包括:JMS绑定,Web Service绑定,SCA绑定和无状态会话BEAN的绑定。导出端点提供了三种绑定方式,包括:JMS绑定,Web Service绑定和SCA绑定。
5).
共享库(Library)
共享库包含的内容只有:数据定义,接口定义,数据映射和关系。与模块最大的区别使共享库不包含服务组件,因此也就不包含业务逻辑
6).Standalone Reference
模块中的服务组件是不能直接被外部Java代码使用的,Standalone Reference(端点)就是为了让外部的Java代码能够使用模块中的服务组件。这个端点只有引用(Reference),而没有接口(Interface)。这个引用可以调用相应的服务组件。
7).
同步调用和异步调用
面对是基于粗粒度的服务组件,面对的是一些需要比较长时间才能有响应的应用场景,那么我们就需要一种非阻塞式调用方式,即异步调用方式。
SCA
编程模式提供了三种方式的异步调用,它们分别是:
1
. 单向调用方式。
2
. 延迟响应方式。
3
. 请求回调方式。
8).SCA
客户端的两种调用方式
从接口的角度,SCA的客户端编程模型有两种方式:
1
. 静态调用方式
2
. 动态调用方式
9).
接口类型与调用方式
实际上客户端采用哪种调用方式是与接口类型有密切的关系。当提供的接口类型是WSDL类型的,那么客户端的调用方式只能是动态调用方式。由于WSDL是SCA模型中主要的接口方式,这样就导致动态调用方式在SCA编程模型中非常普遍。但是如果提供的接口类型时Java类型的,那么客户端的调用方式可以是动态调用方式,也可以是静态调用方式。