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. 基礎:作為閉合服務的功能性的實現(xiàn)-----> 服務柵欄
Rekursive Komposition von Diensten zu Dienstaggregaten. 將服務遞歸合成為服務組(服務單元)。
Aufbau eines Dienstinventars. 服務清單的構造
也就是說, 將一個復雜的問題分解成很多的簡單的小的問題, 然后利用已存在的服務的清單將能解決上述小問題的小服務合成為大的服務以解決能解決復雜問題的復雜服務。這就是SOA的最核心構想。
為此就需要Web Service(Web服務)的各種技術(第4章--核心為WSDL)以及將Web Service合成為Business process(商業(yè)過程)的技術(第五章--核心為BPEL)。甚至是進一步合成為Transaction(事務)的技術(第六章--核心為WS-Transaction)。
下圖為Rollenmodell in einer SOA(SOA角色模型)
圖一 Rollenmodell in einer SOA(SOA角色模型) 第一步:服務供應者向服務中間人公開其提供的服務。即說明使用接口及服務功能。(WSDL)
第二步:服務用戶向服務中間人搜尋所需服務。(UDDI)
第三步:在服務供應者和服務用戶之間建立聯(lián)結。
第四步:服務在服務用戶使用時被調用。(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服務的出現(xiàn)
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.
通過網(wǎng)絡連接的計算機使用的技術也各不相同。所以為了支持計算機間的相互協(xié)作而誕生了一套技術Web Service。其中核心的技術包括HTTP、XML、SOAP以及WSDL等。
圖三:Web Services Technology Stack(Web服務技術堆棧示意圖) 包括: XML用于描述數(shù)據(jù)、TCP/IP作為互聯(lián)網(wǎng)協(xié)議族、HTTP和SMTP用于數(shù)據(jù)傳輸協(xié)議、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(節(jié)點所扮演的角色--none, next or ultimateReceiver), mustUnderstand(說明是否托運的節(jié)點需要理解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 中說明的是傳輸協(xié)議和數(shù)據(jù)類型。而在operation中說明了Transport Optionen, 包括說明SOAP協(xié)議細節(jié)的部分以及說明輸入輸出消息的部分(例如:<input><soap:body use="literal"></soap:body></input>)。
再接著在WSDL中往上走就到了portType的部分了。而這也是具體(也就是現(xiàn)實中的location)和抽象(也就是接口說明)部分的分界處。一個接口可以有多個Operation。一個Operation對應了一個程序編程中的功能。portType也可以有多個。類似與binding在portType中也有operation。但是這里是說明消息結構而不是傳輸operation。
而operation中的每個消息結構部分則都和再上面的一個message部分相關聯(lián)。在各個message部分中則有一個part元素作為子元素。由此根據(jù)屬性而了解名字和其值。下面是個具體的例子。
<message ><part element="tns:getTempResponse"></part></message>
其中“element="tns:getTempResponse"”部分能根據(jù)名字對應的在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中的商業(yè)流程
Ziele des Kapitels
Verstaendnis entwickelt haben für 理解
– Gesch?0?1ftsprozesse und Workflow-Management-Systeme 商業(yè)流程以及工作流管理系統(tǒng)
– Integration von Gesch?0?1ftsprozessen 商業(yè)流程的集成
– Zusammenhang zwischen SOA und Gesch?0?1ftsprozessmanagement SOA和商業(yè)流程管理的關聯(lián)
– 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.
商業(yè)流程是目標指向按時間和邏輯排序的一系列任務。其中這些任務可以被多個組織或者組織單元分步以及分布式的執(zhí)行。如下圖所示。
圖四:Beispiel eines Geschaeftsprozesses(商業(yè)流程的例子)
圖五: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服務的集成的商業(yè)流程的建模及執(zhí)行。
– 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
數(shù)據(jù)處理:表現(xiàn), 變量, 值的分配, 函數(shù)
Aktivitaeten: Basisaktivitaeten,Strukturierte Aktivitaeten zur Steuerung des Kontrollflusses
行為:基礎行為, 用于控制流的控制的結構行為
Kommunikationsbeziehungen: Partnerbeziehungen, Aufruf von Webservices, Korrelationsmengen
通信關系: 伙伴關系, 調用Web服務, 關聯(lián)集合
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以保持流程狀態(tài)的可能性。通常消息的保存是發(fā)生在收到或者發(fā)送去伙伴的時候。當然變量也可以僅僅是為了保持狀態(tài)而永遠不發(fā)去給伙伴。一共有三種變量:WSDL message type, XML Schema simple type and XML Schema element. 具體如下:
<variables>
<variable
messageType="qname"
type="qname"
element="qname"/>
<variables>
messageType, type or element等屬性可以被用于具體描述變量的類型。分別對應于以上三種變量。
從一個變量中拷貝數(shù)據(jù)到另外一個在商業(yè)流程中發(fā)生的很頻繁。數(shù)據(jù)的拷貝可以通過分配來實現(xiàn)。 當然這也可以用于拷貝數(shù)據(jù)到一個新的變量中或者從一個parterLink到一個變量中。例如:
<assign>
<copy>
<from variable="ncname" part="ncname"/>
<to variable="ncname" part="ncname"/>
</copy>
</assign>
基礎行為包括:Invoke, Receive, Reply, Signaling faults, Waiting and Doing nothing.
控制行為包括:.
因為商業(yè)流程是和多個服務通信的而且這些服務還可能和其它的服務相聯(lián)系。此外Web服務之間的通信是無狀態(tài)的。所以確�?偸呛驼_的服務實例交互是很重要的。為此在BPEL中需要用到correlation(關聯(lián)集)。關聯(lián)集提供了通過增加一個辨識變量而確保和同一個服務的實例交互的可能性。即在WSDL中增加property和propertyAlias兩項并且在BPEL中增加correlationSets一項。
BPEL 用scopes將流程分解成許多部分。而每個scopes都可以有各自自己的變量。在scope中也可以生成新的scope。而每個scope都提供了一個compensation handler(賠償處理器), 一個 fault handler(故障處理器) 和 一個event handler(事件處理器)。
至此BPEL的基礎介紹就此完成。
在練習課中我們使用的是netbeans的glassfish做的。其實在整個過程中,上述的描述都可以通過圖形化的操作來實現(xiàn)。并不會很復雜。
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博士編寫。
|