SOA体系架构

1.SOA概念

1.1 简介

SOAService-oriented Architecture 面向服务体系架构, 是一种设计方法和思路,并不是一种具体的技术。它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。因此它与很多已有的软件技术比如面向对象技术,是互补的而非互斥的。它们分别面向不同的应用场景,用来满足不同的特定需求。

1.2 使用范围

 需求决定同时也限制功能。SOA主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。

1.3 Internet环境的特点

Ø 大量异构系统并存,计算机硬件工作方式不同,操作系统不同、编程语言也不同; 

Ø 大量、频繁的数据传输仍然速度缓慢并且不稳定; 

Ø 版本升级无法完成,我们根本就无法知道互联网上有哪些机器直接或者间接的使用某个服务。 

1.4 SOA基本特征

1.4.1独立的功能实体 

Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET RemotingEJBCOM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。 

SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)SOA中都起到至关重要的作用。 

1.4.2大数据量低频率访问 

对于.NET RemotingEJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。

1.4.3基于文本的消息传递

由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COMCORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。 

此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。 

1.5 总结:

SOA(面向服务的体系结构,Service-Oriented Architecture),是一种架构模型,用于指导分布式系统的构建。它倡导一种理念---不同技术不同平台开发出来的系统组件能够快速地、自由地组合起来,以满足用户的需要,而这些组件彼此之间又是互相独立的,每个组件能在不依赖于其它的条件下完成一定的功能。

SOA核心思想:服务。服务屏蔽了企业内外部的业务细节,由服务规范描述,并通过已发布的接口进行访问。服务间是独立的、可互操作性的、松耦合的、可互相调用的。

2.WEB服务

2.1 简介

WEB服务是SOA的一种技术实现。

SOA是技术和经验积累起来的成果。SOA所倡导的松耦合性、灵活性、厂商平台无关性等指导思想很多年前就被提出,比如CORBADCOMJ2EE等技术都能用来实现SOA,但是都没有成为实现SOA的主流技术,很大的一个原因是这些技术都依赖于具体的平台厂商,缺乏统一的标准来实现这些思想。WEB服务技术为SOA系统的构建奠定了良好的技术基础,它所具有的平台无关、标准中立的特点,使其成为现今构建SOA系统的首选技术。

2.2 基本架构

基本的web服务架构包含了SOAPWSDLUDDI等支持服务请求者与服务提供者进行交互,以及用于web服务发现的规范。

服务提供者通常用WSDL来描述它所提供的web服务,然后将该WSDL描述发布;

服务请求者可以通过UDDI或其它注册库来获取WSDL描述,并通过向服务提供者发送一个SOAP消息来请求执行服务。

2.3 web服务特征

2.3.1独立的功能实体

通过UDDI的目录查找,我们可以动态改变一个服务的提供方而无需影响客户端的应用程序配置。所有的访问都通过SOAP访问进行,只要WSDL接口封装良好,外界客户端是根本没有办法直接访问服务器端的数据的。 

2.3.2大数据量低频率访问

通过使用WSDL和基于文本(Literal)SOAP请求,我们可以实现能一次性接收大量数据的接口。

2.3.3基于文本的消息传递

Web Service所有的通讯是通过SOAP进行的,而SOAP是基于XML的,不同版本之间可以使用不同的DTD或者XML Schema加以辨别和区分。因此只需要我们为不同的版本提供不同的处理就可以轻松实现版本控制的目标。 

2.4 体系架构(标准)

CORBADCOMJ2EE都能实现SOA,但没有成为主流技术,因为依赖于具体平台和厂商,缺乏统一的标准。Web服务技术所具有的平台无关、标准中立等特点,成为现今构建SOA系统的首选技术。因此WEB服务的技术体系是依据标准的发展而来的。

2.4.1四种架构体系

四种架构体系本质都一样,只是从不同的角度进行分析,4种都可以作为参考帮助理解,后文以后面两种为参考。

2.4.2web服务标准

2.4.2.1 体系结构分析

2.4.2.1.1基础层:

包括XML及相关标准 以及网络传输协议。 是所有技术标准的构建基础。

Ø XML及相关标准:是SOA的基石。规定了服务之间以及服务内部数据交换的格式和结构、保障消息数据的完整性和有效性、提供不同数据表达之间互相通信的格式,同时提供xml文档和信息内嵌的加密数据和数字签名格式、为所有web服务安全技术建立的提供基础。

Ø 网络传输标准:数据传输是SOA系统最基本的需求之一。SOA系统是分布式系统,需要传输大量数据,网络传输标准解决了如何连接,如何验证,如何发送,接收数据以及如何报告错误等问题。

2.4.2.1.2架构层

web服务架构的核心,涉及soa的设计、开发、组装、测试、部署、治理等各个环节。

Ø 消息传递标准:系统内部各组成部分间需要不断相互交换消息,以达到协调完成业务任务的目标。消息传递标准提供了在分布式环境中交换信息的框架,定义了消息格式、消息交换模式、保证SOA系统能可靠、及时的传递消息。

Ø 服务描述和发现标准:定义一组服务,用于支持web服务提供者、web服务消费者以及可应用于访问这些服务的技术接口描述和发现。

Ø 可靠性标准:稳定、鲁棒等服务质量因素,可靠消息传递允许在出现软件组件、系统或网络故障时可靠的分布式应用程序间交付消息。

Ø 事务性标准:利用传统事务机制提供的协调行为来控制应用程序的操作和输出。

Ø 安全性标准:提供安全通信的方法。

Ø 互操作性标准:SOAweb服务技术规范很多,不同的规范可能来自不同的标准化组织,存在着不能完全互联互通的问题,互操作性规范来确保开发可互操作的web服务。

Ø 表示层标准:相同的业务流程和业务数据在不同平台不同终端上往往要求以不同的表现形式展现给用户,表示层标准将下层的内容以多样化的形态提供给上层的终端用户。

Ø 业务流程标准:规范了将众多业务服务有效地组织来满足业务逻辑的需求。

Ø 集成开发标准:产品的具体实现(包括基础服务实现、服务组装实现)需要开发标准指导。整合现有的各种已有资源需要全局的标准化服务组件以及协议接口作为支撑。

Ø 服务管理标准:用于发现他们存在的问题、了解服务的状况、性能,并对服务进行控制和配置。

Ø 质量保证标准:包括可用性、稳定性、可维护性多方面因素。

2.4.2.1.3应用层

包含特定行业或特定类型应用的规则和要求。

2.4.2.2 组成部分关系分析

Ø 基础层

XMLHTTP相关标准(网络传输标准)是支撑SOA技术的重要基础。

XML作为目前数据交换的公共语言,是架构层所有SOA标准的基础,提供了不同平台及应用软件通过网络可进行交互的数据内容和结构描述格式。

XML相关技术:XML SchemaXSLTXML signatureXML EncryptionSOA架构层中的关键消息传递、web服务安全等标准提供了直接构建和引用基础。

基础层中HTTP为代表的网络传输标准,是SOA消息传递标准的基础。

Ø 架构层

架构层的SOA技术标准以WS_*核心。

消息传递标准构筑在传输标准之上,它以传输标准作为载体进行工作。消息传递标准之上是服务描述和发现相关标准,这三个部分构成了SOA的基本框架。

可靠、安全、事务三个部分的标准与服务描述、发现相关标准结合起来,一定程度上对基本的服务描写、发现标准的补充,满足SOA实际应用的要求。

互操作性标准将SOA标准中二义性进行重新定义,在语义上确保交互的一致性,以实现不同实现平台的互操作。是SOA标准体系的基础组成部分,利用它支撑构建比较完善的SOA系统。

架构层业务流程标准建立起业务与服务的桥梁,开发标准指导SOA系统的实施。他们都是以构筑在标准体系基础组成部分之上的服务为对象,因此它们需要基础组成部分标准对他们的支持。

架构层质量保证标准是SOA构建后重要的评估手段。

Ø 应用层

应用层标准是针对各行业制定的指南性标准,基于应用行业以及企业具体要求及规则,对应各类SOA相关标准的具体应用。

2.4.2.3 具体标准技术

XML及相关标准:

XML:可扩展标记语言

XKMSXML密钥管理

XML signatureXML签名

XML-EncryptionXML加密

XACML:可扩充访问控制标记语言

XrML:可扩展版权标记语言

DSS:数字签名服务

网络传输标准:

HTTP:超文本传输协议

BEEP:块可扩展交换协议

消息传递标准:

SOAP:简单对象访问协议

SOAP MTOMSOAP消息传输优化机制

WEB服务寻址

WS-EventingWeb服务事件

WEB服务通知包括的:

WS-base notificationweb服务基本通知

WS-Brokers notificationweb服务代理通知

WS-Topicsweb服务主题。

WS-Message deliveryweb服务信息传送

服务描述和发现标准:

UDDI:统一描述、发现和集成协议

WSDLweb服务描述语言

Web services semanticsweb服务语义

OWL-Sweb服务的语义标记

Web服务元数据交换

Web服务策略

断言语言

Web服务策略框架

Web服务策略制定者指导方针

Web服务策略附件

Web服务转移

Web服务资源框架

Web服务资源特性规范

Web服务资源生命周期

Web服务基本故障

Web服务服务组

WS-RTWeb服务资源转移

可靠性标准:

WS-Reliabilityweb服务可靠性

Web服务可靠消息传递

WS-RXweb服务可靠×××换标准

WS-RMweb服务可靠消息传递策略断言

事务性标准:

WS-Transactionweb服务事务处理

WS-Coordinationweb服务协调

WS-AT:web服务原子事务

WS-BAweb服务业务活动

WS-CAFweb服务合成应用框架

WS-CTXweb服务上下文

WS-CFweb服务协调框架

WS-TXMweb服务事务管理标准

WS-ACIDweb服务互操作的两个阶段提交协议

WS-LRAweb服务长期运作动作

WS-BPweb服务业务流程

安全性标准:

Web服务联合语言

Web服务联合--主动请求者概要

Web服务联合--被动请求者概要

Web服务安全

web服务安全对话语言

Web服务安全补遗

Web服务安全kerberos绑定

Web服务安全策略

Web服务秘密

Web服务认证

Web服务信任

安全性断言标记语言

互操作性标准:

WS-I Basic Profileweb服务互操作性基本概要

WS-I Basci Secure Profileweb服务互操作性基本安全概要

WS-I Reliable Secure Profileweb服务互操作性可靠安全概要

表示层标准:

XFormsXForms表单

WSRP:远程Portlet web服务

业务流程标准:

BPMN:业务流程建模标注

WS-BPELweb服务业务流程执行语言

WS-BPEL扩展:用于人工交互的web服务业务流程执行语言扩展

WS-CDLweb服务编排描述语言

集成开发标准:

SOA RMSOA参考模型

Web服务遗留储备

SCA:服务组件架构

SDO:服务数据对象

服务管理标准:

WSDMweb服务分布式管理

Web服务管理系列规范1

Web服务管理概念

Wen服务管理表示

质量保证标准:

WSQMweb服务质量模型

应用标准:

ebXML系列标准:

ebXML BPebXML业务流程

ebXML CPPAebXML协作模式及共识

ebXML RIMebXML注册信息模型

ebXML RSebXML注册服务

ebXML MSGebXML通讯服务

3.学习资源

技术

资料

备注

SOAweb服务)

Web服务:原理和技术

SOA标准体系白皮书 V1.0

http://www.ibm.com/developerworks/cn/webservices/

IBM专题

http://whithin.blog.51cto.com/690417/137284

http://jianghui.blog.51cto.com/793304/160728