Document

冯志勇
天津大学计算机学院
2008年10月

编程模型

SCA (Service Component Architecture)服务组
件架构

SDO (Service Data Object)服务数据对象

Use Case (Simplified Bigbank)
2

建立和部署应用软件和解决方案的模式。

定义和代表应用软件的结构和运行
4

定义复杂应用的结构和运行
◦ how to use services
◦ how to aggregate services together

定义的关键要素
◦ how elements are created
◦ how elements are linked together
◦ how the solution is deployed
5

来自基本服务概念的动力:
“服务仅仅是一个抽象的概括了软件功能 .”
“开发者通过聚合服务构建服务,使用服务和开发
解决方案.”
“组成服务转变为综合的解决方案是一个关键的活动 ”
6
7
8
Governance
Integration
SCA Binding & Policy
Model
Business Process
Modeling & Management
Simplified Composition and
Implementation for Services and
Data
•Expose components as
Services regardless of
underlying technology
Development
SDO - Service Data
Object
Interoperability across
Heterogeneous
Environments
•Makes it easy to manage
data exchange across
services with heterogeneous
data formats.
Assembly
SCA Client &
Implementation Model
SCA Assembly Model
•Simplify implementation of
business services by focusing on
business logic not on
infrastructure
•Assemble heterogeneous
components into service
networks
9

SOA模型中服务组件体系结构SCA&服务数据对象
SDO
◦ 基于SOA模型构建解决方案的新技术
◦ 将SOA解决方案分解成合适的元素
◦ 简化面向服务的业务逻辑及其相关联的数据表示
10

服务组件体系结构(SCA)是一个规范,它描述用于
使用 SOA 构建应用程序和系统的模型。它可简化
使用SOA进行的应用程序开发和实现工作。
◦ SCA可简化使用SOA构建的业务应用程序的创建和重用。
◦ SCA提供了构建粗粒度组件的机制,这些粗粒度组件由细
粒度组件组装而成,因而容易被集成。
◦ SCA 将传统中间件编程从业务逻辑中分离出来,从而使程
序员免受其复杂性的困扰

使用SCA
◦ 使得开发人员集中精力编写业务逻辑,而不必将大量的时
间花费在更为底层的技术实现
11

SDO—服务数据对象
◦ 可简化数据访问;
◦ 可简化数据表示;
◦ 提供一致和统一的方式来访问数据,而不管数据的物理访
问方式。
12

通过使用SDO:
◦ 开发者从访问后端数据源的技术细节中解脱出来;
◦ 编程者得益于静态和动态的API支持;
◦ 也得益于非连接编程的支持
13



SCA&SDO可分开使用;
SCA&SDO可一起使用以提供强有力和灵活的SOA
的解决途径;
在SOA模型的实现中,业务组件可表示为SCA组件,
组件之间使用的数据可表示为SDO对象
14

实现应用的实现提供了灵活性。表现为:技术中性;
可重用;合成;动态适应性
◦ 灵活性是soa编程模型最大的优点之一:从业务的角度来
说,灵活性有下面几方面的含义
◦ 技术中立:与实现无关
◦ 重用:服务和业务过程的重用,用清楚地定义和松散的服
务耦合
◦ 组合:通过sca中的服务装配,可以将服务组装在一起。
◦ 对变化的动态适用性:当业务人员提交一个业务流程变化
后,不需要等待很长时间就可以得到程序实现
15

Improved Flexibility
16

提高编程人员的生产效率
◦ 松散耦合的服务模型能够使soa的开发团队中的人员并行工作,互
相之间具有一定的独立性
◦ 服务重用:重用不仅仅增加了服务业务的灵活性,同时也降低了开
发soa应用的成本,提高了系统的开发效率。使用sca可以将一流
资源和新建的组建用进行统一的建模。支持由低向上的应用开发方
式。
◦ 同时自顶向下的开发:soa支持自顶向下的应用开发方式。组建可
以在实现之前就可以进行装配,而组建的实现可以放在开发周期之
后完成。
◦ 改进的组织管理:sca使用模型的概念。模型用来组织组建。
◦ 技术中立:sca和sdo提供了对复杂过程和复杂数据对象的抽象。
隐藏了服务提供者和服务消费者之间的的复杂关联细节。
17

Increased Programmer Productivity
J2EE Solution
SCA Solution
18




有助于提高业务的敏捷性;
将IT构建为组合应用;
关注业务目标和业务过程;
组合应用中粗粒度且松耦合服务
19

SCA models the “A” in SOA -可重用服务组成
的系统
◦ 基于服务的系统的一个编程模型,:
 构造construction
 装配assembly
 部署deployment
◦ 异质性
 元数据驱动
 多语言
 多容器技术
21

一套规范

描述了一个使用面向服务的体系结构建设应用程序
和系统的模型

扩展和补充实施服务的已有办法

建立如Web服务的开放标准,
22

SCA将建立SOA应用的过程分解成两个主要的部分
◦ 组件的实现
 为外部提供服务
 为外部提供服务
◦ 组件的组装
 将服务引用与真实的服务连接起来,使用各组件之间建立真
实而不是虚拟的程序调用与数据传递通道。
23

SCA规范着重强调要将服务的实现和服务的组装与
实现的细节进行解藕
◦ 与底层平台的细节解藕合
◦ 与如何调用服务的具体方式进行解藕合

SCA组件
◦ 在“业务逻辑”层面是进行设计
◦ 使用最少的中间件API
24
25

支持多种编程语言
◦ 面向对象和过程语言
 Java, PHP, C++, COBOL
◦ 以XML为核心技术的语言
 BPEL and XSLT
◦ 描述性语言
 SQL and XQuery
26

SCA还支持多种程序设计风格
◦ 异步程序设计和面向消息的程序设计
◦ 同步程序设计,即调用——返回的程序设计风格
◦ 静态程序设计
◦ 动态程序设计
◦ 基于连接的
◦ 非连接的
27

同时支持多种服务调用方式
◦ Web services
◦ Messaging systems
◦ CORBA IIOP

重点关注服务的申明,不依赖于服务的具体实现技
术
◦ Bindings
◦ Infrastructure capabilities
28
Composition, Visualization and Management
Operations
Architectural Design
Development
SCA
Assembly Model
ESB
Client Model
QoS Container
Service
Registry
Routing
Transports
Policy
Security
SCA
Java
Clustering
Spring
EJB
Transactions
29

一系列文档, 即

组装模型
◦ linking of components through wiring
◦ independent of implementation language

客户端以及服务实现规范
◦ implementation of service components and of
service clients
◦ Java & C++ specifications
◦ BEPL
30

发布的SCA白皮书
 Changes in the SCA Assembly specification since the
0.9 release
 The Recursive Assembly Model
 WS-BPEL and SCA White Paper
 EJB Integration White Paper
 JAX-WS Services Integration
 PHP and SCA White Paper
 SCA Bindings for Web Services, JMS and EIS/JCA
31

SCA规范草案
 SCA Assembly Model V0.96
 SCA Client and Implementation Model for Java (V0.95)
 SCA Client & Implementation for BPEL (V0.95)\
 SCA Client & Implementation for Spring (V0.95)
 SCA Client & Implementation for C++ (V0.95)
 SCA Policy Framework
 SCA Web Service bindings
 SCA JMS Binding
 SCA EIS/JCA Bindings
32

Developers
◦ OSOA (Open SOA Collaboration)
 http://www.osoa.org
33

Supporters
34

提供了一个统一的描述服
务实现的模型

◦ 更容易组成服务网络
◦ 在组装时客户化服务实现

提供了一个业务逻辑层的
服务实现模型
定义了具体的数据转输格
式和协议
◦ 互操作
◦ 独立于编程模型

需要将服务接口显式定义
到WSDL文件中
◦ 没有像JDBC, JCA, JMS…这
样的技术API

支持多种服务绑定方式,
包括Web服务
◦ WSDL,SOAP
◦ RMI, IIOP
◦ Others
35

Scenario 1:
 Integrate 2 EJBs, 1 JavaBean, and two Web Services
into a JSP based web application:
Without SCA
With SCA
Developer hardcodes EJB access,
JavaBean, and Web Service invocation in
their web application
Developer wires EJB access, JavaBean,
and Web Services together using a Visual
Tool.
Specific low-level APIs must be used for
each technology (EJB, JavaBean, Web
Service)
Developer uses one wiring editor for all
components (developer does not need to
use specific APIs) – no low level APIs at all
Tight Coupling: Additional coding required
to replace one EJB with another EJB
Loose Coupling: New components can be
wired into existing applications easily
If one component needs to be invoked
asynchronously, low level coding is
necessary
No additional coding needed to invoke a
component asynchronously
Structure of the composite application is
hard to visualize
Structure of the solution captured in
assembly model
36

Scenario 2:
 Integrate 1 Rule, 1 Web Service, 1 EJB, and 1 CICS
Transaction into a BPEL Business Process:
Without SCA
Developer uses wizards to generate
WSDL for each component
Tight Coupling: Business process must be
modified if a service is replaced by another
service
With SCA
Developer assembles components developed
by other developers or creates business
components using Wizards/Tools. The
assembler doesn’t care how each component is
implemented
If one component needs to be invoked
asynchronously, a complex set of steps are
required to build an asynchronous service.
Loose Coupling: Business process does not
need to be modified if a new service replaces
another service (the new service is simply
rewired into the application)
Integration Developer = Highly skilled
component developer
Simple to invoke a component asynchronously
Integration Developer = A developer who can
build a composite application without low-level
component development Skills
37
Roles
This Person...
Uses
uses this tool…
Tasks
Runtime
to perform this task …
… to build this type of application
…and deploys it to
this runtime
Task: Build/Assemble J2EE Components
Java
Application
Developer
Tools
Service
Component
Developer
POJO
JSF1
EJB1
Web
Service
SCA Composite
Application
Server (w/SCA)
Web
EJB
Container
Container
Task: Build/Assemble Business Processes
State
I/F or BO
Machine
Transform
Business
Process
Server
Process
Business
Process &
Integration
Developer
Tools
Integration
Developer
SCA Composite
Process
Container
Task: Build Mediations
Mediation
Mediation
1
2
SCA Composite
= SCA Component
Adapter
Rule
ESB /
Connection Server
Mediation
Container
38
39
SCA components may be
implemented using a variety of
technologies including POJOs,
BPEL, Spring Beans, EJBs, etc.
System
Composite
Service
A
Reference
Service
A
Reference
Composite C
SDO
Component
A
Component
B
Component
C
Component
D
SDO
Service
Composite
B
Reference
Service
B
•Flexible, powerful service construction
•Flexible, powerful assembly
•Flexible, powerful binding
Services are assembled and “wired”
together. SCA allows wiring to be
done using a diverse bindings such
as WS-* and JMS
40

Contents:
◦ Assembly Model
 Introduction, Overview, Composite, System, Binding,
Extension Model
◦ Appendix 1:
 Packaging and Deployment, XML Schemas, UML Model,
SCA Concepts
◦ Appendix 2:
 Policy, Security, Transactions, Reliable Messaging
41

provides:
提供一个统一的、语言无关的服务提供机制
Java and C++ available now
BPEL and interpretive languages (e.g. XSLT, XQuery)
other languages via extensibility (including .NET)
提供一个与底层技术无关的服务网络建模与组合机制
Service dependencies
Resolution through wiring
提供服务动态配置与管理的机制
Properties
Protocols
Qualities of service
42

Diagrams used to Represent SCA Artifacts
43




一个SCA的组合是一系列SCA组件的逻辑聚合。
一个组合可以包含一个或多个服务组件、服务、引
用或连接。
一个组合还被赋予一系列属性,通过配置这些属性,
可以实现对组合内部组件的配置。
从更高的逻辑层次进行SCA系统建模时,一个组合
还可以被看作是一个服务组件的实现。
46




可以通过定义“Include”来实现对现有服务组合的
复用
SCA服务组合是一个部署的基本单元
部署时,一个服务组合存储成一个以.composite为
扩展名的文本文件,文件遵循XML规范
一个服务组合在XML中使用一个<composite>节
点来表示, .composite文件的格式在SCA规范中
作了详细描述
47
A sample


一个.composite文件中,”composite”节点必须具
有一个“name”属性,属性的值为该服务组合的名
字
“composite”节点中可以有0个或多个
◦
◦
◦
◦
◦
“service”节点
”component”节点
“reference”节点
”wire”节点,
还可以包含0个或多个”include”节点。分别表示该组合使
用了0个或多个服务实例,组件,引用,连接或现有服务
组合的复用。
49
◦ component
Components are configured instances of implementations.
Components provide and consume services.
Components are defined as subelements of a composite in an xxx.composite file.
50
◦ Implementation
Component implementations are concrete implementations of business function
which provide services and/or consume services.
SCA allows you to choose from any one of a wide range of implementation
technologies, such as Java, BPEL or C++.
Services, references and properties are the configurable aspects of an
implementation, SCA refers to them collectively as the component type.
At runtime, an implementation instance is a specific runtime instantiation of
the implementation
51
◦ Interface
Interfaces define one or more business functions.
Currently supports:
Java interfaces
WSDL 1.1 portTypes
WSDL 2.0 interfaces
53
◦ Component Configuration
54
◦ Reference
 represent links to services
 use bindings to describe the access methods
 represented by a reference element
57
◦ Reference
 represent links to services
 use bindings to describe the access methods
 represented by a reference element
58
◦ Reference
59
◦ Service
 used to publish services provided by implementations
 addressable by other components.
61
◦ Service
62
◦ Inclusion
63







一个完整的运行环境,它往往是由一系列分布的互相连接
的运行环境组成的
配置信息往往跟组装的规范没有必然的联系,尽可能的做
的灵活,具有很强的适应性
一个纯粹的概念,没有具体的实体文件和它对应。
由一系列composite文件组成的。
是一个目录或者某种抽象的容器,将composite文件部署
到容器中就构成了system的一部分。
可以看成是一系列include语句,将所有的composite文
件包含进来。
一个system中的composite并不是固定的,可以通过部署
和删除操作来改变整个系统的组成结构。
64
65



Binding被Service和Reference所使用。
Reference使用binding来说明如何去调用一个
service
而service使用binding来说明客户端应该如何来调
用本服务,这跟WSDL中的binding概念一致
66

Different types of bindings:
◦
◦
◦
◦
◦
SCA service
Web service
stateless session EJB
data base stored procedure
EIS service
67

SCA提供一个简单、一致的模型来创建和调用服
务,他具有如下特点。
◦
◦
◦
◦
◦
◦
从协议和中间件中解脱出来,着重关注业务逻辑;
Java和C++规范均可使用用
可以使用业务层面接口来访问服务;
支持迟绑定各种传输
重用服务实现
使用依赖injection, 因此并不需要使用SCA API
68
Business Logic
Assembly
Binding Policy Profiles
Implementation Policy Profiles
Infrastructure
Infrastructure
?
?
JAX-RPC
JAX-WS
JSR109
JSR181
JSR277
JSR-*
J2EE 1.2
J2EE 1.3
J2EE 1.4
J2EE 5
SOAP
WSDL
WS-Addressing
WS-Security
WS-Transaction
WS-Reliable Messaging
WS-*
Focus on the business
logic not the enablement
Service Implementation with SCA
69

Contents (SCA Java version):
◦
◦
◦
◦
◦
◦
基本组件实现模型
基本客户端模型
错误处理
异步编程
Java API
Java 标注
70

Brief Introduction (Java Version)
◦ SCA Java的客户端实现模型制定了一系列Java类和接口用
于实现SCA装配模型中定义的概念。客户端模型可以和已
有的编程模型一起使用,或者构建在已有的编程模型上,
比如Spring和J2SE
71

Brief Introduction (Java Version)
◦ 装配模型概念到Java的映射,例如组件,组件类型,
服务,引用,属性
◦ 实现异步和会话服务在Java的中的实现
◦ 组件生命周期管理在Java中的实现
◦ 指定服务和实现的作用域在Java中的实现
72

Contents (C++ version):
◦
◦
◦
◦
基本的组件实现模型
基本的客户端模型
错误处理
C++ API
73

Specification Documents, API packages,
Sample codes, etc. can be downloaded from
OSOA’s website:
◦ http://www.osoa.org

Apache Tuscany
◦ http://incubator.apache.org/tuscany/home.html
74

SDO规范草案
 Service Data Objects Specifications

sdo的技术报告
 什么是SDO 2.1;
 PHP和SDO白皮书;
 比较SDO和数据访问对象模式;
 比较SDO与EJB 3.0数据持久性
76

SDO是Service Data Object的缩写
◦ 用于访问和更新数据。
◦ 其特点就是对松耦合的数据进行了优化,
◦ 应用乐观锁支持Check in/Check out模型

在SCA中,SDO是推荐使用的数据访问模型,但并不是必
须的
◦ SCA也支持其他的数据访问模型,比如JAX-B(for Java)


SCA和SDO配合使用是最合适的,SDO提供了一套与数据
源无关的API接口
SDO数据访问服务本身也可以认为是SCA的一个组件
77
Relational
Update (Data Graph)
Web services
Any data source
(XML, JMS, JCA, etc.)
Service Data Objects makes it easy to manage data exchange
across services with heterogeneous data formats.
78



SDO的核心规范提供了最基本的API接口用于访问任何类型的的数据
源。
SDO核心规范对底层的的数据源不做任何假设,因此SQL,XPath,
XQuery以及其他任何数据访问语言都可以作为SDO的查询语言。这
也意味着关系数据库,对象数据库和XML数据源都可以作为SDO的后
端存储。
SDO的架构基于无连接数据图( disconnected data architecture )
的概念。在无连接数据图模型中,客户端从数据源接收一个数据图,
更新图中的数据,并将更新的数据传回数据源。通常更新操作是并行
优化执行的,这意味着,如果数据图中任何一个数据在客户端提交之
前已经被更新过,那么这个更新请求就会被拒绝,客户端必须提供相
应的错误处理。
79




1. SDO Core;这个核心规范包含了程序员需要
面对的主要的组件,包括Data object和data
graph。同时这个核心规范也提供了 一套API用
于对数据模型进行操作。这套数据模型和API使得
应用程序可以无差别的对待异构数据源。
2. SDO Data Access Services:这是一个SCA服
务,为客户端提供数据访问接口。这个服务从后
端数据源读取数据构造数据图,并且可以根据数
据图中的变化更新后端数据源。
3. SDO-enabled Tools:这是一系列相关的辅
助工具,包括代码生成器(code generator),
元模型转换器(metamodel convertor),模式
转换器(schema converter),建模工具
(data modeling tool)等
4. SDO-enabled Runtimes and Frameworks:
这是一套运行时环境和框架,和各种SDO组件一
起完成各种任务,比如将数据绑定到UI(useri
nterface)组件上
80
◦ Disconnected data architecture
81
82




Data Object:数据对象保存具体的数据,包括原始数据以
及指向其他数据对象的引用。数据对象也包含了指向元数据
(metadata)的引用,这使得SDO的元数据能够被读取,
包括数据的类型,关系和约束等。这方面和Java中的反射机
制类似。
Data Graph:数据图是一个概念上的数据集合。具体的讲,
数据图是一个有多个树根(multi-rooted)的数据对象的
集合。数据图可以记录所有对数据对象的操作,比如创建,
删除,更新等。
Metadata: 元数据使得开发工具和运行时环境能够动态地或
者静态的查看数据的属性,包括数据的类型,关系和约束等
SDO提供了一组与数据源无关的元数据API
Data Mediator Service:数据访问服务负责与后台的数据
源进行通信,完成构造数据图,更新数据图等操作。
83
84
85




Data object将数据保存为一个属性(property)的集合。这些属性
既可以是原始的数据类型,也可以是指向其他数据对象的引用Data
Object可以通过SDO的元数据API进行内观( introspect),这使得
程序可以在运行时获取数据的类型,关系,约束等信息。
Data object应该至少提供一组动态API用于读取和修改对象,包括对
象中的属性(property)。这组动态API使用XPath表达式在data
graph中定位data object。另一方面,静态的Java接口也可以通过模
型(model)或者模式(schema)生成。
SDO中没有定义静态接口的生成方法,已有的工具可以直接应用到
SDO中,比如JAXB的一些实现。
Data object支持丰富的关系(relationship,其实就是量词),包
括1:1, 1:n, n:m,当对象进行复制删除等操作的时候,这些关系由
Data object负责管理。
86



Data graph表示一个数据集合,具体的讲,它保
存了一个Data object的集合。
Data graph是数据传递的最小单位。Data
graph负责记录数据的改变:包括添加,删除,
更新。可选的,Data graph可以记录数据变更的
整个历史,提供类似版本管理的功能。
最终变更历史会被ChangeSummary模块访问,
并对后端数据源进行相应的更新。
87
88
89

Virtual Data Access
90

Relational Database Access
91

Reading and Writing XML
92

Introduction:
◦ BigBank是一虚拟金融机构,提供商业的和面向客户的服务。BigBank的
客户能够查看帐户信息,转帐和借贷。

Requirements:
◦ 建立一服务查看帐户,可被Web应用和Web服务客户端访问
◦ 将应用分为两个模块,1.帐户模块(account module)来访问遗留系统
中的客户信息, 2.Web前端模块(web front-end module)
◦ 除了能够重用已有组件,还要能够进行独立的开发和测试服务
94

Account module:
95

Account module:
◦ bigbank.accountmodule
 该组件为一个客户帐号服务用于访问遗留系统中用户的帐号
信息,可以通过web服务的协议栈对其进行访问远程帐号服
务组件,将支票,存款以及当前股票信息集中在一起
 contains:
 Account data service component代表了遗留系统,为
Account service提供支票账户,存款账户,股票账户的信息该
账户组件调用一个外部的服务stackquoteservice为股票提供实
时的报价Entry point将Account service发布成一个web服务,
可以通过web服务客户端访问
96

Web front-end module:
97

Web front-end module:
◦ bigbank.webclientmodule
 provides browser-based functionality for logging into
the system and accessing account information.
 contains:
 login service & profile service components
 external account service
 assembly that configures and wires the elements
98

创建 bigbank.accountmodule






Account Data Service Implementation
Account Data Service Component
StockQuote Web Service External Service
Account Service Implementation
Account Service Component
Account Service Web Service Entry Point
99

创建 bigbank.webclientmodule
 Login Service Implementation提供了Login Service的实现,
然后将其定义成一个SCA component
 Profile Service Implementation提供了Profile Service的实
现,然后将其定义成为一个SCA component
 Account Service是一个外部引用,通过Web服务的协议栈访
问。
 Login HTML Page和Login Servlet负责处理用户提交的Web
请求,
 最终Summary JSP通过调用AccountService获取帐户信息,
并将结果通过HTML显示给web用户。
10
0



创建bigbank.accountsubsystem
创建bigbank.webclientsubsystem
模块和子系统部署
10
1
10
2



SOA的编程模型,
SCA和SDO的概念,SCA和SDO是SOA编程模型的
重要组成部分。
应用案例:Bigbank,这个案例基本覆盖了SCA和
SDO的基本概念
10
3
SCA Specification

http://dev2dev.bea.com/technologies/commonj/index.jsp

http://www.ibm.com/developerworks/library/specification/ws-sca/

http://www.iona.com/devcenter/sca/

http://oracle.com/technology/webservices/sca

https://www.sdn.sap.com/

http://www.sybase.com/sca
SDO Specification

http://dev2dev.bea.com/technologies/commonj/index.jsp

http://www.ibm.com/developerworks/library/specification/ws-sdo/

http://oracle.com/technology/webservices/sca

https://www.sdn.sap.com/

http://www.xcalia/xdn/specs/sdo

http:/www.sybase.com/sca
SCA Sample application “Building your first application – Simplified BigBank”

http://dev2dev.bea.com/technologies/commonj/index.jsp

http://www.ibm.com/developerworks/library/specification/ws-sca/

http://www.iona.com/devcenter/sca/

http://oracle.com/technology/webservices/sca

https://www.sdn.sap.com/

http://www.sybase.com/sca
WS-I Basic Profile

http://www.ws-i.org/deliverables/workinggroup.aspx?wg=basicprofile
10
4