理解 UDDI(2) : UDDI 注冊信息的數據模型 ( 本文最初由 IBM developerWorks 中國網站發表,其網址是 http://www.ibm.com/developerWorks/cn/ ) ( 本文是我在 developerWorks" name="description" />
(本文最初由 IBM developerWorks 中國網站發表,其網址是http://www.ibm.com/developerWorks/cn/)
(本文是我在developerWorks專欄發表的UDDI 注冊信息的數據模型,需要瀏覽未縮減版原文,請訪問http://www.ibm.com/developerWorks/cn/)
統一描述、發現和集成協議(UDDI)標準包括了SOAP消息的XML Schema(UDDI Data Structure Reference)和UDDI規范API(UDDI Programmer’s API)的描述。它們兩者一起建立了基礎的信息模型和交互框架,具有發布各種Web 服務描述信息的能力。其中交互框架是為UDDI Client(可能是各種企業軟件)與UDDI Registry進行交互的消息約定,我們將在以后進行討論。
UDDI 注冊使用的核心信息模型由XML Schema 定義。使用XML 是因為它提供了平臺無關的數據描述并很自然的描述了數據的層次關系。而選擇XML Schema 是因為它支持豐富的數據類型,便捷的描述方式及其按信息模型對數據進行驗證的能力。
UDDI XML Schema 定義了四種主要的信息類型,它們是技術人員在需要使用合作伙伴所提供的Web 服務時必須了解的技術信息。它們是:商業實體信息(businessEntity結構)、服務信息(businessService結構)、綁定信息(bindingTemplate結構)和技術規范信息(tModel結構)。在UDDI的數據模型中,tModel是一個很特殊的數據項。tModel描述了一切技術信息, tModel的全體組成了UDDI中的所有技術注冊信息。在后面的tModel節我將給出tModel的彼此關聯的細節內容。
在商業領域內,合作伙伴和潛在的合作伙伴都期望能準確地定位到商業實體所能提供的服務或產品的相關信息,并把這些信息作為了解你們企業的開始。而在技術領域,技術人員、程序員或應用程序都期望能知道他們需要集成的商業實體的名稱和一些關鍵性的標識 ,以及該商業實體是屬于那個具體工業分類之類的分類信息,以及聯絡方法(包括Email、電話、URL)等。支持對UDDI 商業注冊的商業信息發布和發現的核心XML 元素都包含在“businessEntity”結構中。這個結構是商業實體專屬信息集的最高層的數據容器,位于整個信息結構的最上層。
businessService 結構將一系列有關商業流程或分類目錄的Web 服務的描述組合到一起。businessService和下面要提到的bindingTemplate一起構成了“綠頁”信息。其中,一個可能的商業流程的例子是一組相關的Web 服務信息,包括采購服務、運輸服務和其它的高層商業流程。這些服務都將是提供這些商業流程服務的商業實體所需要注冊的Web服務。
這些businessService的信息集合可以再次加以分類,使Web應用服務的描述可以按不同的行業、產品、服務類型或是地域劃分來進行。分類的方法的機制與businessEntity是類似的。
對于每一個businessService,存在一個或多個Web 服務的技術描述bindingTemplate。這些技術描述包括應用程序連接遠程Web 服務并與之通訊所必須的信息。這些信息包括Web應用服務的地址、應用服務宿主和調用服務前必須調用的附加應用服務等。另外,通過附加的特性還可以實現一些復雜的路由選擇,諸如負載平衡等。
調用一個服務所需要的信息是在bindingTemplate的結構中定義的,這在前面一節中已經闡述了。不過一般來說,僅知道Web服務所在的地址是不夠的。例如,如果我知道我的合作伙伴提供一個Web服務來讓我下訂單,同時也知道這個服務的URL,不過如果不知道一些具體的信息,如訂單的具體格式,應該使用的協議,需要采用的安全機制,調用返回的響應格式等,那樣的話,通過Web服務將兩個系統集成起來仍然是非常困難的。
當一個程序或是程序員需要調用某個特定的Web服務時,必須根據應用要求得到了足夠充分的調用規范等相關信息,以使調用被正確地執行。因此,每一個bindingTemplate元素都包含一個特殊的元素,該元素包含了一個列表,列表的每個子元素分別是一個調用規范的引用。這些引用作為一個標識符的雜湊集合 ,組成了類似指紋的技術標識,用來查找、識別實現了給定行為或編程接口的Web 服務。
原文轉自:http://www.anti-gravitydesign.com