本節書摘來自異步社群《soa web service合約設計與版本化》一書中的第1章1.7節本書的組織結構,作者【美】thomas erl , 等,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
1.7 本書的組織結構
soa web service合約設計與版本化
本書的第1章和第2章分别提供了概述性内容與案例研究的背景資訊。其餘的章節被分成了如下4部分:
第1部分 基本服務合約設計;
第2部分 進階服務合約設計;
第3部分 服務合約版本化;
第4部分 附錄。
1.7.1 第1部分:基本服務合約設計
第3章 soa基礎與web服務合約
我們一開始先介紹了和soa、面向服務與總體的面向服務計算相關的關鍵術語和概念,因為它們同web服務合約設計是密切相關的。
第4章 web服務合約剖析
本介紹性章節從邏輯和實體兩個視角提供了對于web服務合約結構的生動探讨。它關注的是建立一個概念模型,用來講解構成一個web服務合約的各種組成部分,以及使這些部分能夠一起工作的機制。
然後讨論了與抽象和具體描述有關的概念,以及它們與消息、操作和端口類型(接口)定義之間的關系,還有不同的消息組成部分,例如主體、報頭和報頭故障。同樣會講解的還包括綁定、服務和端口(端點)的内容,以及它們與消息組成部分(主體、報頭和報頭故障)、信封結構和其他内容之間的關系。
本章并沒有包含任何代碼示例,而隻是在讨論了抽象的基礎知識之後,開始介紹用來建構web服務合約的實際技術。最後一個小節使用一組指導原則來結束了本章内容。
第5章 關于命名空間的簡明指南
作為基于xml的web服務架構的有機組成部分,定制的和預定義的命名空間都會被使用到,以確定本書中所談到的所有技術可以一起和諧地工作。是以,在我們讨論用來建構web服務合約的實際技術語言之前,我們首先提供了一個關于命名空間的非正式的、但卻很深入的教程。
由于對許多it人員來說,命名空間的話題總是會非常容易造成困惑,是以本章花了較多的筆墨且使用直白的語言介紹命名空間的概念和應用。本章提供了大量的示例和觀點,進而為你學習後續章節中讨論到的任何命名空間相關的問題都做好充分的準備。
第6章 基本xml schema:類型和消息結構基礎
現在我們開始介紹合約設計的詳細内容,本章專門用于講解基本的xml schema話題,這些内容都對web服務合約的消息設計有關。這裡的重點是複合類型與簡單類型之上的不同限制種類。本章還提供了關于xml schema類型如何可以使用類型繼承特性來進行定制和擴充。
本章正式啟動了案例研究,介紹了通過應用xml schema特性而得到解決的問題集合。這裡所探讨的例子最終會導緻建立一系列的xml schema類型,這些會在後續章節中的消息定義中用到。
第7章 基本wsdl(一):抽象描述設計
在這一章中,我們讨論了web服務描述語言(wsdl)1.1中與構成抽象服務描述的各個部分的設計與構造相關的各個方面。這包括了xml schema類型與消息定義的關聯,如何把消息組織成操作定義,以及把操作分組成端口類型定義。本章還介紹了報頭的建立,以及如何使用不同的命名空間來使不同的技術可以在一個wsdl文檔内共存。
通過一系列非正式的案例研究示例,本章建立了一個完整的抽象描述,并且把在第6章中定義的xml schema類型結合了進來。
第8章 基本wsdl(二):具體描述設計
本章轉到具體描述的設計與開發,這部分wsdl文檔把抽象描述綁定到實際的傳輸和消息協定之上,并且為之配置設定一個或多個實體網絡位址。
本章介紹了所有主要的wsdl 1.1語言元素,它們被用來建立這種綁定,包括服務和端口定義,以及重要的綁定結構自身的内容。大量的内容被專門用于探讨這些内置的wsdl元素如何進一步被輔以使用來自其他語言(例如soap)的可擴充性元素。另外還介紹了如何把報頭和報頭故障部分綁定到實際的soap消息區域。
本章繼續了前面的案例研究示例,并建立了一個包括抽象和具體描述的完整wsdl定義。
第9章 基本wsdl 2.0:新特性與設計選項
本書還全面介紹了wsdl 2.0标準,包括新的功能與在wsdl 1.1語言之上所做的一些文法上的修改。通過一系列例子,本章針對抽象和具體描述來介紹了wsdl 1.1與2.0之間的差別,并且随後給出了第8章中的wsdl文檔的完整wsdl 2.0版本。
第10章 基本ws-policy:表達、斷言與附加項
通過建立政策斷言與政策表達式,ws-policy語言提供了不同的手段來擴充你可以用wsdl與xml schema建立的技術接口。
本章介紹了政策如何被定義與表示,以及随後關聯(附加)到不同的wsdl文檔組成部分之上的方法。内容包括政策主題、政策可替代項、組合政策,以及嵌套的和外部附加選項。
本章的示例同樣得到了一個修改過的wsdl定義,其中包含了一個簡單的、附加的政策表達式。
第11章 基本消息設計:soap信封結構、故障消息與報頭處理
現在,我們把注意力轉到當消息在傳送到web服務與從web服務發出的時候,用來表示消息在“連線上”存在結構的soap技術語言。雖然本書隻是專門用于介紹web服務合約的,但是了解消息是如何被處理的對于我們更有效地設計它們也非常重要。
本章中的一個主要話題是soap報頭塊在運作時的使用,以及在執行“指定目标處理”的時候,當報頭塊被設計來隻能由一個消息路徑上的特定程式通路和使用時,會涉及的各種角色與選項。
注意本章并不涉及soap通信架構,或與web服務合約的設計不直接相關的任何其他話題。
1.7.2 第2部分:進階服務合約設計
第12章 進階xml schema(一):消息靈活性、類型繼承與組合
一個web服務需要交換各種不同消息,每個消息都有它自己的獨特需求。本章是專門用來講解進階xml schema話題的兩章中的第一章,探讨通配符、擴充桶與内容模型分組的使用,并介紹使用這xml schema功能來适應不同類型的web服務消息設計的各種技術。
然後,本章繼續介紹了類型繼承與組合,并進一步讨論了跨模式的繼承,它作為一個概念,可能會與跨服務的繼承産生不同的影響。具體來說,本章的這個部分提供了一些例子來詳細解釋抽象模式如何建立,以及模式通常可以如何進行擴充。
最後,本章提供了關于支援crud風格的web服務操作的消息設計的讨論,并分别介紹add、get、delete和update消息的設計,以及常見的粒度級别。
第13章 進階xml schema(二):可複用性、關系設計與業界模式
在不同web服務之間共享模式的能力,對于建立分離的模式與合約架構層是非常根本的要求。本章深入講解模式可以被劃分為多個可複用子產品的不同選項,并且可以随後被不同模式(最終,可以被不同的wsdl定義)來包含或導入。另外還讨論與示範了一個公共模式庫的建立。
随後是專門用來解釋如何使用xml schema功能來對關系資料結構進行簡化,以及如何添加叙述性的内容來輔助基本的模式内容。本章最後講解了預定義的産業模式的使用與結合,以及一些例子與技巧。
第14章 進階wsdl(一):子產品化、可擴充性、mep與異步
本章中介紹并示範了wsdl 1.1和2.0的子產品化功能與技術,以及與非傳遞性限制相關的問題,這也與跨wsdl定義之間的xml schema定義的複用有關。并且比較了wsdl中的導入和包含的使用,以及wsdl 2.0的接口繼承設計選項。
緊接着是對于不同wsdl可擴充性元素的講解,以及如何在wsdl定義結構之内使用與定位它們,并強調介紹了wsdl綁定結構。
随後的小節讨論了特殊的消息交換模式(包括wsdl 1.1的向外的mep,與wsdl 2.0的 robust in-only mep),以及涉及http、soap和smtp的異步消息交換的各種進階技術。最後,本章用一節篇幅專門介紹ws-bpel相關的可擴充性元素,以及對于如何來準備最終會被ws-bpel流程定義組裝的wsdl定義的推薦做法。
第15章 進階wsdl(二):消息分發、服務執行個體辨別和非soap的http綁定
本章講解了各種進階的wsdl技術,包括wsdl 2.0新功能的使用,支援更寬泛的消息耦合。專門有一個小節介紹消息分發設計問題,以及關于如何利用soap動作取值,來支援基于分發目的對wsdl定義進行解釋的指導原則。
其他的話題包括web服務執行個體辨別與建立報頭塊的不同方法,包括報頭故障擴充的使用。最後,介紹并示範了在wsdl 1.1和2.0中不用soap把wsdl綁定到http上的方法。
第16章 進階ws-policy(一):政策集中化與嵌套、參數化和可忽略的斷言
本章繼續第10章中開始介紹的ws-policy架構,深入講解各種架構相關的問題,包括政策集中化設計模式的應用,以及把不同政策定義文檔關聯到wsdl定義上的不同方法。
其後的内容是示範如何使用嵌套的和參數化的政策表達式,然後給出關于可忽略政策斷言的詳細介紹,其中包括與可選斷言的比較。本章最後是對于支援并發合約的web服務合約的一個概覽。
第17章 進階ws-policy(二):定制政策斷言設計、運作時表示與相容性
本章介紹建立定制政策斷言背後的設計過程與注意事項。不同的例子用來示範不同類型的斷言,并進一步講解了定制政策的優缺點。專門有一節用于讨論同定制政策斷言詞彙表相關的問題。
本章後面探讨了運作時表示(即政策文法),提供了對于政策表達式和可替代項如何被精化成規範化表示的方法。最後,介紹了一個交集算法,用來識别在服務提供者與消費者政策之間的相容性。
第18章 進階消息設計(一):ws-addressing詞彙表
ws-addressing提供了用來擴充基本soa消息設計的産業标準手段,以适應大範圍的複雜消息交換需求。
本章正式介紹了ws-addressing标準,分别描述了由端點引用(epr)和消息尋址屬性(map)詞彙表中的語言元素與soap報頭。本章提供了大量的代碼示例,并在最後給出了包括完整的ws-addressing報頭集合的一個案例研究示例。
第19章 進階消息設計(二):ws-addressing規則與設計技巧
本章講解了與ws-addressing有關的各種更加特殊化的内容,其中包括epr參數映射技術,與在wsdl定義中的端點引用有關的設計問題,以及ws-addressing動作取值與可替代的soap動作表達式之間的詳細比較。本章最後給出了由ws-addressing規範提供與标準化的政策斷言的描述。
1.7.3 第3部分:服務合約版本化
第20章 版本化基礎
本章講解與web服務合約版本化有關的基本概念和術語,以及從技術和治理的角度對于向前和向後相容的詳細比較。
随後通過使用注釋的版本号與命名空間取值介紹并示範了版本辨別的方法。本章最後幾節講解了三種主要的版本化政策(嚴格、靈活、寬松),每種政策都會在不同程度上對向前和向後相容提供支援。這些政策在後面幾章中會多次引用到。
第21章 wsdl定義的版本化
本章探讨用來對一個wsdl定義的不同部分進行版本化的不同技術,主要側重于wsdl操作的版本化。不同章節提供了對于添加、重命名和删除操作,以及修改操作消息交換模式和相關故障消息的指南與示例。
同樣講到的還包括對于端口類型定義和具體描述的不同部分進行版本化的技術。最後一節介紹wsdl語言的哪些部分可以被用來支援潛在的向前相容性。
第22章 消息模式的版本化
本章講解與基于xml schema消息版本化相關的複雜話題,根據第20章給出的三種版本化政策來對這些技術進行組織,分别針對每種版本化政策對添加、删除、重命名和修改現有xml schema構件的版本化方法進行了講解。在這些小節中探讨了各種不同的 xml schema語言功能,包括使用通配符來支援向前相容,以及使用可選元素來支援向後相容。本章所關心的另外一個主要話題是把xml schema命名空間用于版本化的目的。
第23章 進階版本化
最後一章提供了比較混雜的内容,包括版本化的指南、技術和設計考慮事項。它首先介紹了一些與ws-policy表達和斷言有關的版本化政策,接着繼續介紹使用政策斷言來表示終止資訊的設計方法,以及利用定制屬性來表示不可忽略的未知元素的方法(當使用通配符的時候)。
另外還包括了各種其他的版本化方法,有些與實際的版本化設計模式有關,比如部分了解。本章最後給出了建立和定制你自己的版本号政策的一些提示。
1.7.4 第4部分:附錄
附錄a 案例研究總結
本附錄提供了關于案例研究故事的一個簡要總結與結論,它與在actioncon it企業環境中設計的web服務合約有關。
附錄b 技術标準的制定過程
介紹了關于w3c如何來組織它的技術委員會的一個概況,以及最初送出的規範如何被發展成為認可标準的過程與階段的描述。
附錄c 字母順序的僞模式參考
為本書中解釋過的所有語言的元素提供了概要的僞模式。這些模式按照字母順序列出,以便于快速參考。
附錄d 本書用到的命名空間與字首
在本書中用到的命名空間與相關字首的一個參考清單。
附錄e 與本書有關的soap設計模式
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。