1. Ueberblick über Serviceorientierte Architekturen 面向服务架构的总览
Ziele des Kapitels 本章目标
Idee "SOA“ verstehen & SOA-Definition geben koennen 能够理解SOA的思路以及定义
SOA-Eigenschaften beschreiben koennen 能够描述SOA的性质
Ueberblick über den Inhalt
Nichttechnische Grundlagen
Ziele von Serviceorientierung
Entwicklung des SOA-Gedankens
Definition und Merkmale einer SOA
Servicekategorien
Programmieren im SOA-Umfeld
Rollen und Aktionen in einer SOA
SOA :
Paradigma zur Verwaltung und Nutzung von verteilten Kompetenzen, die sich unter der Kontrolle von verschiedenen Eigentümern befinden koennen.
一种用于管理和使用分布的模块的模式,其中模块可能是由不同组织所控制的。
Serviceorientierte Loe2sungslogik:
Basis: Realisierung von Funktionalitaet als in sich abgeschlossene Dienste ----> Servicekapselung. 基础:作为闭合服务的功能性的实现-----> 服务栅栏
Rekursive Komposition von Diensten zu Dienstaggregaten. 将服务递归合成为服务组(服务单元)。
Aufbau eines Dienstinventars. 服务清单的构造
也就是说, 将一个复杂的问题分解成很多的简单的小的问题, 然后利用已存在的服务的清单将能解决上述小问题的小服务合成为大的服务以解决能解决复杂问题的复杂服务。这就是SOA的最核心构想。
为此就需要Web Service(Web服务)的各种技术(第4章--核心为WSDL)以及将Web Service合成为Business process(商业过程)的技术(第五章--核心为BPEL)。甚至是进一步合成为Transaction(事务)的技术(第六章--核心为WS-Transaction)。
下图为Rollenmodell in einer SOA(SOA角色模型)
图一 Rollenmodell in einer SOA(SOA角色模型) 第一步:服务供应者向服务中间人公开其提供的服务。即说明使用接口及服务功能。(WSDL)
第二步:服务用户向服务中间人搜寻所需服务。(UDDI)
第三步:在服务供应者和服务用户之间建立联结。
第四步:服务在服务用户使用时被调用。(JAVA RMI / WSDL)
下图为Servicekategorien und ihre charakteristischen Merkmale (服务分类及其特点)
图二:Servicekategorien und ihre charakteristischen Merkmale (服务分类及其特点)
第一类(最底层):基础服务。
第二类(中间层):聚合服务。(使用WSDL技术)
第三类(最上层):过程服务。(使用BPEL技术)
2. Serviceorientierte Organisation
SOA ist keine rein technische L?0?2sung – wenn es keine gemeinsamen Anstrengungen im technischen und im organisatorischen Bereich gibt, wird ein SOA-Projekt nicht umzusetzen sein.
SOA不是一个纯粹的技术解决方案。当技术的和组织的两大领域不能形成合力时就不会形成SOA项目。
但是因为本课程为计算机课程, 所以只集中于技术问题的讨论。
3. Grundlage von Web Services
Ziel des Kapitels
Verstehen, warum Web Services entstanden sind 理解为什么有Web服务的出现
Den Standardisierungsprozess nachvollziehen koennen und die wichtigsten Entscheidungen verstehen 回顾标准产生的过程并理解最重要的决定
Die wichtigsten Technologien nennen und kurz beschreiben koennen 说出最重要的各种技术并能简单的描述
Ablaeufe zu Web-Service-Interaktionen verstehen 理解Web服务交互的过程
Web Service:
A Web service is a software system designed to support interoperable machine-to-machineinteraction over a network. It has an interfacedescribed in a machine-processable format(specifically WSDL). Other systems interact with the Web service in a manner prescribed by itsdescription using SOAP messages, typicallyconveyed using HTTP with an XML serializationin conjunction with other Web-related standards.
通过网络连接的计算机使用的技术也各不相同。所以为了支持计算机间的相互协作而诞生了一套技术Web Service。其中核心的技术包括HTTP、XML、SOAP以及WSDL等。
图三:Web Services Technology Stack(Web服务技术堆栈示意图) 包括: XML用于描述数据、TCP/IP作为互联网协议族、HTTP和SMTP用于数据传输协议、SOAP用于与应用无关的消息打包格式、WSDL用于描述Web服务的接口、UDDI用于公开和搜索Web服务。此外还附带管理和安全技术。
4. Basic-Infrastruktur:XML, SOAP, WSDL, UDDI
XML als zentrales Datenformat erlaubt es, hierarchische Strukturen zu repraesentieren.
XML Schema beschreibt XML Grammatiken formal.
Das XML Schema bietet folgende Moeglichkeiten: 1) Definition von Elementen und Attributen sowie Zuweisung von komplexen, simplen und XML-Schema-Datentypen. 2) Definition von komplexen Datentypen. 3) Erweiterung von Datentypen.
Jedes Schema ist einem Namespace zugeordnet.
SOAP : Anwendungsunabhaengiges Nachrichtenformat zum Austausch von Webservice-Nachrichten zwischen Webservice-Endpunkten.
SOAP-Header-Attribute : role(节点所扮演的角色--none, next or ultimateReceiver), mustUnderstand(说明是否托运的节点需要理解SOAP的HEAD), relay
WSDL: Web Service Description Language.
WSDL是一种IDL(Interface Definition Language)。类似的IDL还有CORBA IDL和JAVA RMI。
图六:Allgemeine Struktur von WSDL (WSDL的常见结构) 图六中深色部分是Konkrekter Teil(具体部分) 而浅色部分为Abstrakter Teil(抽象部分)。更进一步的说明见图七。
如图七所示从右到左是图六的具体说明。
首先是最右边的Service中的PORT中说明了可以调用该WS的具体地址。其中PORT可以有多个(所以用*标注), 而每个PORT只能有一个地址(所以用1标注)。
而后是binding(装订)为每个Port说明是如何装订的。其下有两种子元素(Kindelementen)——SOAP Binding 和 operation。在SOAP Binding 中说明的是传输协议和数据类型。而在operation中说明了Transport Optionen, 包括说明SOAP协议细节的部分以及说明输入输出消息的部分(例如:<input><soap:body use="literal"></soap:body></input>)。
再接着在WSDL中往上走就到了portType的部分了。而这也是具体(也就是现实中的location)和抽象(也就是接口说明)部分的分界处。一个接口可以有多个Operation。一个Operation对应了一个程序编程中的功能。portType也可以有多个。类似与binding在portType中也有operation。但是这里是说明消息结构而不是传输operation。
而operation中的每个消息结构部分则都和再上面的一个message部分相关联。在各个message部分中则有一个part元素作为子元素。由此根据属性而了解名字和其值。下面是个具体的例子。
<message ><part element="tns:getTempResponse"></part></message>
其中“element="tns:getTempResponse"”部分能根据名字对应的在XML Schema中找到。
再往上就到了Type部分。其中也可以有多个Schema。在Type中说明了各Schema的位置。
至此就完整了定义了一个Web服务的接口。
UDDI:Universal Description Discovery and Integration
UDDI用于公布和搜寻Web服务。其是基于目录的。包括White Pages(白页)、Yellow Pages(黄页)和Green Pages(绿页)。白页类似于电话簿、黄页是分类广告而绿页则提供技术信息。
5. Geschaeftsprozesse in SOAs SOA中的商业流程
Ziele des Kapitels
Verstaendnis entwickelt haben für 理解
– Gesch?0?1ftsprozesse und Workflow-Management-Systeme 商业流程以及工作流管理系统
– Integration von Gesch?0?1ftsprozessen 商业流程的集成
– Zusammenhang zwischen SOA und Gesch?0?1ftsprozessmanagement SOA和商业流程管理的关联
– Konzept von Orchestrierung und Choreographie 作曲法和编舞法的概念
– Die Sprache BPEL in den Grundzuegen BPEL语言的基本特点
BPEL-Beispiele in den Grundzügen lesen koennen 能读BPEL的例子
Geschaeftsprozess:
Ein Geschaeftsprozess ist eine zielgerichtete, zeitlich logische Abfolge von Aufgaben, die von mehreren Organisationen oder Organisationseinheiten arbeitsteilig, verteiltausgeführt werden kann.
商业流程是目标指向按时间和逻辑排序的一系列任务。其中这些任务可以被多个组织或者组织单元分步以及分布式的执行。如下图所示。
图四:Beispiel eines Geschaeftsprozesses(商业流程的例子)
图五:Aggregation von Diensten zu Prozessen (将服务集成为流程) 图5中左图为作曲法(Orchestrierung),即描述的是本流程内的逻辑。图5中右图为编舞法(Choreographie),即描述的是服务/流程的相互合作关系。
WS-BPEL: Web Services Business Process Execution Language
Technologie
– XML-Sprache zur Modellierung und Ausführung von Geschaeftsprozessen als Aggregation von Web Services
XML-语言用于作为Web服务的集成的商业流程的建模及执行。
– Basiert auf bekannten Prinzipien der Workflowverarbeitung 建立在著名的工作流工艺的原则基础上。
– Setzt massiv auf XML und Web Service Technologien 大量使用XML和Web服务技术
BPEL的元素(BPEL实际上是XML文件。):
Data Handling: Ausdrücke, Variablen, Wertzuweisungen, Funktionen
数据处理:表现, 变量, 值的分配, 函数
Aktivitaeten: Basisaktivitaeten,Strukturierte Aktivitaeten zur Steuerung des Kontrollflusses
行为:基础行为, 用于控制流的控制的结构行为
Kommunikationsbeziehungen: Partnerbeziehungen, Aufruf von Webservices, Korrelationsmengen
通信关系: 伙伴关系, 调用Web服务, 关联集合
Behandlung von Ereignissen
事件的处理
Behandlung von Ausnahmen: Fehlerbehandlung, Kompensation
例外的处理:错误处理, 赔偿
下面具体说明:
一个BPEL的流程总是开始与一个process元素。在其中有至少一个activity。其既可以是基础行为也可以是结构行为。
<process >
activity
</process>
BPEL的使用中一个重要的部分就是和其伙伴通过Web服务如何通信的描述。为了连接这些伙伴就使得如何明确说明伙伴间的关系变得很重要了。每一个涉及到和BPEL流程交互的伙伴都不得不有一个描述如何通信的WSDL文件。在BPEL中每个相关的Web服务都被建模为partnerLink。包括唯一的名字、类型以及myrole和partnerRole。其中myrole和partnerRole分别说明了本流程的角色以及伙伴的角色。
<partnerLinks>
<partnerLink partnerLinkType="qname"
myrole="ncname" partnerRole="ncname">
</partnerLink>
</partnerLinks>
在BPEL中也可以使用变量。而一个变量也往往和WSDL中获取的Message相连。如果类似于这样的Message的话
<message >
<part type="xsd:string"/>
<part type="xsd:string"/>
<part type="xsd:string"/>
</message>
那在BPEL中则是这样的:
<variable messageType="creditInfo"/>
Variables 变量提供保存messages以保持流程状态的可能性。通常消息的保存是发生在收到或者发送去伙伴的时候。当然变量也可以仅仅是为了保持状态而永远不发去给伙伴。一共有三种变量:WSDL message type, XML Schema simple type and XML Schema element. 具体如下:
<variables>
<variable
messageType="qname"
type="qname"
element="qname"/>
<variables>
messageType, type or element等属性可以被用于具体描述变量的类型。分别对应于以上三种变量。
从一个变量中拷贝数据到另外一个在商业流程中发生的很频繁。数据的拷贝可以通过分配来实现。 当然这也可以用于拷贝数据到一个新的变量中或者从一个parterLink到一个变量中。例如:
<assign>
<copy>
<from variable="ncname" part="ncname"/>
<to variable="ncname" part="ncname"/>
</copy>
</assign>
基础行为包括:Invoke, Receive, Reply, Signaling faults, Waiting and Doing nothing.
控制行为包括:.
因为商业流程是和多个服务通信的而且这些服务还可能和其它的服务相联系。此外Web服务之间的通信是无状态的。所以确保总是和正确的服务实例交互是很重要的。为此在BPEL中需要用到correlation(关联集)。关联集提供了通过增加一个辨识变量而确保和同一个服务的实例交互的可能性。即在WSDL中增加property和propertyAlias两项并且在BPEL中增加correlationSets一项。
BPEL 用scopes将流程分解成许多部分。而每个scopes都可以有各自自己的变量。在scope中也可以生成新的scope。而每个scope都提供了一个compensation handler(赔偿处理器), 一个 fault handler(故障处理器) 和 一个event handler(事件处理器)。
至此BPEL的基础介绍就此完成。
在练习课中我们使用的是netbeans的glassfish做的。其实在整个过程中,上述的描述都可以通过图形化的操作来实现。并不会很复杂。
6. Transaktion
交易基本上可以说是有确定结果的任务步骤的集合。每个步骤通常有“成功”或者“失败”两种结果。而交易的成功与否则取决于每个步骤的成功与否。
WS-Coordination
WS-Atomic Transaction
WS-Business Activity
ACID标准
7. Sicherheit
8. SOA im Kontext von Sensornetz
9. Alternative Umsetzungstechnologien
10. SOA für medizintechnische Geraete
版权说明:绝大部分的材料来源于吕贝克大学ITM学院开设的SOA课程的讲义。由Nils Glombitza博士编写。
|