監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
重慶OA行業(yè)資訊

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊

使用UDDI的Web服務(wù)描述和發(fā)現(xiàn)(第一部分)

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

使用UDDI的Web服務(wù)描述和發(fā)現(xiàn)(第一部分)


Karsten Januszewski

Microsoft Corporation

2001年10月3日

簡(jiǎn)介

到目前為止,At Your Service 專欄已經(jīng)介紹了如何建立 Web 服務(wù)的實(shí)際案例:從最初的設(shè)計(jì)文檔到業(yè)務(wù)關(guān)聯(lián),直至最終的部署。下一步就是要考慮如何發(fā)布 Web 服務(wù),以便感興趣的客戶能夠輕松地發(fā)現(xiàn)該服務(wù)并將其應(yīng)用到自己的應(yīng)用中?,F(xiàn)在已經(jīng)有了實(shí)現(xiàn)這種要求的發(fā)現(xiàn)機(jī)制:通用說明、發(fā)現(xiàn)和集成 (UDDI),這是業(yè)界支持跨技術(shù)、跨平臺(tái)的 Web 服務(wù)發(fā)現(xiàn)的第一步。

At Your Service 的作者誠(chéng)懇地邀請(qǐng)我為專欄撰文,介紹 UDDI 及其注冊(cè)步驟,我非常樂于接受這項(xiàng)工作。首先我將從技術(shù)和業(yè)務(wù)兩方面來介紹 UDDI 的含義。隨后我將討論一下 UDDI 和 Web 服務(wù)說明語言 (WSDL) 之間的關(guān)系。最后,我將帶您體驗(yàn) UDDI 的注冊(cè)過程,并介紹一些充分發(fā)揮 UDDI 潛力所需考慮的問題。在下一期專欄,即本文的第二部分中,我將介紹 At Your Service 小組是如何充分利用 UDDI 的。

UDDI - Web 服務(wù)的全球注冊(cè)表

UDDI 是一個(gè)公共的注冊(cè)表,旨在以一種結(jié)構(gòu)化的方式來保存有關(guān)各公司及其服務(wù)的信息。通過 UDDI,人們可以發(fā)布和發(fā)現(xiàn)有關(guān)某個(gè)公司及其 Web 服務(wù)的信息。這些數(shù)據(jù)使用標(biāo)準(zhǔn)的分類法進(jìn)行分類,因此可以按分類來查詢信息。最重要的是,UDDI 包含有關(guān)公司服務(wù)的技術(shù)接口的信息。通過一套基于 SOAP 的 XML API 調(diào)用,用戶可以在設(shè)計(jì)時(shí)和運(yùn)行時(shí)與 UDDI 進(jìn)行交互以發(fā)現(xiàn)技術(shù)數(shù)據(jù),從而調(diào)用和使用這些服務(wù)。通過這種方法,UDDI 可以用作基于 Web 服務(wù)的軟件系統(tǒng)的基礎(chǔ)結(jié)構(gòu)。

為何使用 UDDI?為何需要這種注冊(cè)表?當(dāng)我們面對(duì)具有數(shù)千甚至數(shù)百萬個(gè) Web 服務(wù)的軟件系統(tǒng)時(shí),將面臨以下的嚴(yán)峻挑戰(zhàn):

如何發(fā)現(xiàn) Web 服務(wù)?

如何按照某種合理的方式分類信息?

對(duì)本地化有什么影響?

對(duì)專用技術(shù)有什么影響?如何保障發(fā)現(xiàn)機(jī)制的互操作性?

當(dāng)應(yīng)用依賴于某項(xiàng) Web 服務(wù)時(shí),如何在運(yùn)行時(shí)與該發(fā)現(xiàn)機(jī)制進(jìn)行交互?

UDDI 的出現(xiàn)正是為了應(yīng)對(duì)這些挑戰(zhàn)。為了解決這些問題,許多公司,其中包括 Microsoft、IBM、Sun、Oracle、Compaq、HP、Intel、SAP 以及三百多家其他公司(請(qǐng)參閱 UDDI: Community(英文)以獲得這些公司的完整列表),共同制定了一種基于開放式標(biāo)準(zhǔn)和非專用技術(shù)的規(guī)范。該規(guī)范的 Beta 版于 2000 年 12 月發(fā)布,正式產(chǎn)品于 2001 年 5 月推出。它是一個(gè)全球業(yè)務(wù)注冊(cè)表,建立在多個(gè)運(yùn)營(yíng)商節(jié)點(diǎn)上,用戶可以通過這些節(jié)點(diǎn)免費(fèi)搜索和發(fā)布信息。

通過 Web 服務(wù)的這種基礎(chǔ)結(jié)構(gòu),現(xiàn)在就能夠以一種通用的、與供應(yīng)商完全無關(guān)的方式找到有關(guān) Web 服務(wù)的數(shù)據(jù),而且數(shù)據(jù)一致并且可靠。使用可擴(kuò)展的分類系統(tǒng)和標(biāo)識(shí),用戶可以進(jìn)行精確的分類查詢。運(yùn)行時(shí) UDDI 集成可以被合并到應(yīng)用程序中去。因而大大繁榮了 Web 服務(wù)軟件環(huán)境。

工作原理

UDDI 數(shù)據(jù)存放在運(yùn)營(yíng)商(即承諾運(yùn)營(yíng)一個(gè)公共節(jié)點(diǎn)的公司)節(jié)點(diǎn)上。這種公共節(jié)點(diǎn)遵循 UDDI.org 組織管理的規(guī)范。目前已經(jīng)建立了兩個(gè)遵循 UDDI 規(guī)范版本 1 的公共節(jié)點(diǎn):一個(gè)屬于 Microsoft;另一個(gè)屬于 IBM。HP 也承諾將建立一個(gè)遵循規(guī)范版本 2 的節(jié)點(diǎn)。數(shù)據(jù)寄存運(yùn)營(yíng)商之間必須能通過安全通道復(fù)制數(shù)據(jù),從而為整個(gè) UDDI 云團(tuán)提供數(shù)據(jù)冗余。將數(shù)據(jù)發(fā)布到一個(gè)節(jié)點(diǎn)上后,通過復(fù)制,就可以在另一個(gè)節(jié)點(diǎn)上發(fā)現(xiàn)這些數(shù)據(jù)。目前,每隔 24 小時(shí)就進(jìn)行一次復(fù)制;在將來,由于有更多的應(yīng)用程序要依賴 UDDI 數(shù)據(jù),復(fù)制的時(shí)間間隔還將縮短。

值得一提的是,對(duì)于數(shù)據(jù)寄存運(yùn)營(yíng)商實(shí)現(xiàn)其節(jié)點(diǎn)的方式,不存在一些專用的要求,只要節(jié)點(diǎn)遵循 UDDI 規(guī)范即可。例如,Microsoft 的節(jié)點(diǎn) http://uddi.microsoft.com/default.aspx(英文)完全用 C# 寫成,并運(yùn)行于 .NET Beta 2 公共語言運(yùn)行時(shí)環(huán)境下。其代碼基礎(chǔ)充分利用了 .NET 系統(tǒng)類提供的本地 SOAP 支持和序列化。在后端,Microsoft 運(yùn)營(yíng)商節(jié)點(diǎn)使用 Microsoft? SQL Server 2000 作為其數(shù)據(jù)倉(cāng)庫(kù)。而 IBM 使用其他技術(shù)來運(yùn)行其節(jié)點(diǎn)!但是,這兩個(gè)節(jié)點(diǎn)的行為是相同的,因?yàn)樗鼈兌甲裱嗤囊惶谆?SOAP 的 XML API 調(diào)用。客戶端工具可以和這些節(jié)點(diǎn)進(jìn)行無縫的交互操作。因此,UDDI 公共云團(tuán)是一個(gè)最佳方案,它展示了 XML Web 服務(wù)模型如何跨異類環(huán)境進(jìn)行工作。

為了了解 UDDI,下一步我們來看看 UDDI 中存儲(chǔ)的數(shù)據(jù)及其存儲(chǔ)結(jié)構(gòu)。UDDI 相對(duì)來說是輕量的,它被設(shè)計(jì)為“注冊(cè)表”,而不是“儲(chǔ)備庫(kù)”。兩者之間的差別很微妙,但卻很重要。注冊(cè)表將用戶重定向至資源,而儲(chǔ)備庫(kù)則完全是一個(gè)信息庫(kù)。我們以 Microsoft? Windows? 注冊(cè)表為例:它包含基本設(shè)置和參數(shù),但最終把應(yīng)用程序引導(dǎo)至資源或二進(jìn)制代碼?;?Prog ID 搜索 COM 組件時(shí),將引導(dǎo)至一個(gè) Class ID,然后通過 Class ID 再引導(dǎo)至二進(jìn)制代碼本身所在的位置。

UDDI 的行為與之類似:與 Windows 注冊(cè)表一樣,它依靠全局唯一標(biāo)識(shí)符 (GUID) 來搜索并定位資源。UDDI 查詢最終指向一個(gè)接口(.WSDL、.XSD 和 .DTD 文件等等),或指向其他服務(wù)器上的實(shí)現(xiàn)(例如 .ASMX 或 .ASP 文件)。UDDI 因此可以回答以下問題:

“已經(jīng)發(fā)布了哪些基于 WSDL 并是為指定行業(yè)建立的 Web 服務(wù)接口?”

“哪些公司已經(jīng)為其中一個(gè)接口寫好了實(shí)現(xiàn)?”

“目前提供的 Web 服務(wù)(以某種方式分類)有哪些?”

“某個(gè)公司提供了哪些 Web 服務(wù)?”

“如果要使用某個(gè)公司的 Web 服務(wù),需要與誰聯(lián)系?”

“某個(gè) Web 服務(wù)的實(shí)現(xiàn)細(xì)節(jié)是什么?”

WSDL 和 UDDI

WSDL 已成為 Web 服務(wù)協(xié)議堆棧的重要組成部分。因此,有必要掌握 UDDI 和 WSDL 如何協(xié)同工作,以及每個(gè)協(xié)議如何解決接口和實(shí)現(xiàn)這兩個(gè)相對(duì)的概念。WSDL 和 UDDI 都是為清楚說明抽象的元數(shù)據(jù)和具體實(shí)現(xiàn)之間的關(guān)系而設(shè)計(jì)的,了解為什么要這么劃分是理解 WSDL 和 UDDI 的基礎(chǔ)。

例如,WSDL 明確區(qū)分消息和端口:消息(Web 服務(wù)所需的語法和語義)始終是抽象的,而端口(調(diào)用 Web 服務(wù)的網(wǎng)絡(luò)地址)始終是具體的。在 WSDL 文件中不需要提供端口信息。WSDL 可以只包含抽象的接口信息,而不提供任何具體的實(shí)現(xiàn)數(shù)據(jù)。這樣的 WSDL 文件被認(rèn)為是有效的。這樣,WSDL 文件便從實(shí)現(xiàn)中分離出來。

其重要意義之一在于:一個(gè) WSDL 接口可以有多個(gè)實(shí)現(xiàn)。這種設(shè)計(jì)允許不同的系統(tǒng)為同一接口編寫自己的實(shí)現(xiàn),從而保證系統(tǒng)之間能進(jìn)行對(duì)話。如果三個(gè)不同的公司實(shí)現(xiàn)了相同的 WSDL 文件,一個(gè)客戶端軟件根據(jù)這個(gè) WSDL 接口創(chuàng)建了代理/存根代碼,那么這個(gè)客戶端軟件就可以使用相同的代碼基礎(chǔ)與所有這三個(gè)實(shí)現(xiàn)進(jìn)行通信,只要更改訪問點(diǎn)即可。

UDDI 通過 tModel 的概念描繪了抽象和實(shí)現(xiàn)之間的這種區(qū)別。tModel 結(jié)構(gòu)(“技術(shù)模型”的簡(jiǎn)稱)代表了技術(shù)指紋、接口和元數(shù)據(jù)的抽象類型。使用 tModel 的必然結(jié)果是綁定模板,它是一個(gè)或多個(gè) tModel 的具體實(shí)現(xiàn)。在綁定模板內(nèi),要為 tModel 的特定實(shí)現(xiàn)注冊(cè)訪問點(diǎn)。如同 WSDL 架構(gòu)允許分離接口和實(shí)現(xiàn)一樣,UDDI 也提供了相似的機(jī)制,因?yàn)?tModel 可以獨(dú)立于引用它的綁定模板而單獨(dú)發(fā)布。例如,某標(biāo)準(zhǔn)化組織或行業(yè)組織可能為特定行業(yè)發(fā)布規(guī)范接口,然后多個(gè)公司可以為該接口編寫實(shí)現(xiàn)。因此,各個(gè)公司的實(shí)現(xiàn)都需要引用同一個(gè) tModel。WSDL 文件是 UDDI tModel 的完美示例。

用 UDDI 進(jìn)行注冊(cè)

發(fā)布到 UDDI 是一個(gè)比較直接的過程。第一步是確定在 UDDI 上為公司及其服務(wù)建立模型所需的基本信息。之后便可以進(jìn)行實(shí)際注冊(cè)。這可通過基于 Web 的用戶界面或編程兩種方法完成。最后測(cè)試您的注冊(cè)條目以確保注冊(cè)正確,并且在不同類型的搜索和工具中都能按要求顯示。

步驟 1:為 UDDI 條目建立模型

考慮上述數(shù)據(jù)模型,在建立 UDDI 條目之前應(yīng)準(zhǔn)備好幾個(gè)關(guān)鍵數(shù)據(jù)。

確定 Web 服務(wù)實(shí)現(xiàn)所需使用的 tModel(WSDL 文件)。

與開發(fā) COM 組件類似,開發(fā) Web 服務(wù)時(shí)可以使用現(xiàn)有的接口,也可以使用自己設(shè)計(jì)的接口。如果 Web 服務(wù)基于現(xiàn)有 WSDL,則需要確定該 WSDL 文件是否已經(jīng)在 UDDI 上注冊(cè)。如果是,就需要記錄其名稱和 tModelKey,這是注冊(cè) WSDL 文件時(shí) UDDI 所生成的 GUID。

另一方面,如果 Web 服務(wù)所基于的 WSDL 文件尚未在 UDDI 上注冊(cè),就需要準(zhǔn)備創(chuàng)建一個(gè)新的 tModel 來代表這個(gè)接口。此 tModel 應(yīng)具有統(tǒng)一資源標(biāo)識(shí)符 (URI) 格式 (MyCompany-com:SampleWebService-interface:v1) 的名稱,并指向 WSDL 文件所在的位置。

如果 Web 服務(wù)是 Microsoft? Visual Studio? .NET 服務(wù),則可以使用 .ASMX 文件(也就是:<http://www.mycompany.com/SampleWebService.asmx?wsdl>)中的查詢字符串來生成 WSDL 說明。但是,Visual Studio .NET 生成的 WSDL 文件與調(diào)用 Web 服務(wù)的訪問點(diǎn)緊密耦合在一起,如果 Web 服務(wù)接口有多個(gè)實(shí)現(xiàn),訪問點(diǎn)可能就不適用了。如果不希望 WSDL 文件有多個(gè)實(shí)現(xiàn),這就不是問題。

如果需要,可以用多種語言確定公司的名稱和簡(jiǎn)介,以及公司 Web 服務(wù)的主要聯(lián)系方法。

UDDI 支持 xml:lang 名稱空間,它允許公司用多種語言提供公司簡(jiǎn)介。另外,UDDI 還允許列出聯(lián)系方式,包括電子郵件、電話和地址信息。聯(lián)系列表用于列出公司內(nèi)與 Web 服務(wù)相關(guān)的資源。例如,如果有人想要使用您的 Web 服務(wù),并需要聯(lián)系相應(yīng)的業(yè)務(wù)關(guān)系經(jīng)理,應(yīng)該聯(lián)系誰?使用公司的 Web 服務(wù)時(shí),有關(guān)技術(shù)問題和誰聯(lián)系?該聯(lián)系人也應(yīng)該列出。

為公司確定適當(dāng)?shù)姆诸惡蜆?biāo)識(shí)。

通過 Microsoft UDDI 節(jié)點(diǎn) http://uddi.microsoft.com/default.aspx(英文)瀏覽當(dāng)前支持的 UDDI 分類法。當(dāng)前支持的分類法有北美行業(yè)分類系統(tǒng) (NAICS)、通用標(biāo)準(zhǔn)產(chǎn)品和服務(wù)代碼 (UNSPSC)、ISO 3166、標(biāo)準(zhǔn)行業(yè)分類 (SIC) 和 GeoWeb 地理分類。請(qǐng)選擇一種最適于您的公司的分類。

確定公司通過 UDDI 提供的 Web 服務(wù)。
下一步,確定公司要在公共 UDDI 節(jié)點(diǎn)上注冊(cè)的 Web 服務(wù)。這項(xiàng)服務(wù)有多個(gè)訪問點(diǎn)嗎?是否要給使用此 Web 服務(wù)的客戶提供其他必需的參數(shù)和信息?

注意,在 UDDI 上注冊(cè) Web 服務(wù)并不意味著每個(gè)人都有訪問權(quán)??梢詾?UDDI 注冊(cè)表?xiàng)l目依次設(shè)置安全、授權(quán)和身份驗(yàn)證。僅知道 Web 服務(wù)的存在并不意味著就可以實(shí)際調(diào)用該服務(wù)。在授權(quán)訪問 Web 服務(wù)之前,公司之間通常需要進(jìn)行一些額外的交流。

為服務(wù)確定適當(dāng)?shù)姆诸悺?BR>
如同可以將公司分類一樣,也可以將 Web 服務(wù)分類。因此,公司可能按商業(yè)級(jí)別被分類為 NAICS: Software Publisher (51121),而其旅館預(yù)約 Web 服務(wù)的服務(wù)級(jí)別可能被分類為 NAICS: Hotels and Motels (72111)。

步驟 2:注冊(cè) UDDI 條目

在完成建模之后,下一步就是注冊(cè)您的公司。您需要獲取一個(gè)可訪問 UDDI 注冊(cè)表的帳號(hào),這不能通過編程來完成,因?yàn)楸仨氁狻笆褂靡?guī)定”聲明。Microsoft 節(jié)點(diǎn)使用 Passport 進(jìn)行驗(yàn)證,您需要獲取一份 Passport (http://www.passport.com/Consumer/default.asp) (英文)來完成注冊(cè)。

這里有兩種選擇:使用 Microsoft 節(jié)點(diǎn)提供的 Web 用戶界面,或者通過使用 SOAP API 調(diào)用節(jié)點(diǎn)自身以編程進(jìn)行注冊(cè)。如果不希望更改注冊(cè)表?xiàng)l目,或條目相對(duì)簡(jiǎn)單,則使用 Web 用戶界面就足夠了。但是,如果希望頻繁更新,或條目很復(fù)雜,請(qǐng)使用 Microsoft UDDI SDK 制作注冊(cè)過程的腳本。另外,由于沒有針對(duì)其他語言對(duì) Microsoft 用戶界面進(jìn)行本地化,所以如果想利用 UDDI API 的多語言功能,需要通過編程的方法進(jìn)行注冊(cè)。

注意:您可以在模擬環(huán)境中練習(xí)注冊(cè)過程,地址是 http://test.uddi.microsoft.com/default.aspx(英文),這是實(shí)際投入使用節(jié)點(diǎn)的復(fù)本。這對(duì)于在正式使用之前熟悉注冊(cè)過程很有幫助。

使用 Microsoft 的 Web 用戶界面

使用 Microsoft 的 Web 用戶界面來注冊(cè)是一個(gè)相對(duì)直觀的過程。首先導(dǎo)航至管理員頁面 http://uddi.microsoft.com/administer.aspx(英文)。登錄后,將顯示注冊(cè) tModel 和公司的選項(xiàng)。下面是繼續(xù)操作時(shí)需要了解的幾個(gè)事項(xiàng):

在注冊(cè)服務(wù)之前,確保將 WSDL 文件注冊(cè)為 tModel,因?yàn)樵谝院蟮倪^程中會(huì)需要 tModel。

將 WSDL 文檔注冊(cè)為 tModel 時(shí),應(yīng)該使用“UDDI 類型分類法”對(duì) tModel 分類。至少應(yīng)將 WSDL 分類為“Specification for a Web Service”(wsdlSpec)。

使用這種分類方法,可以確保 tModel 的分類符合“Using WSDL in a UDDI Registry”最佳實(shí)踐文檔(英文)的原則。因?yàn)?tModel 能包含對(duì) WSDL 文件以外的文檔的引用,所以給 tModel 提供一些分類是很重要的。很多工具(例如 Visual Studio .NET)靠這些分類來縮小查詢的結(jié)果集。

將 WSDL 接口注冊(cè)為 tModel 后,需要給公司業(yè)務(wù)添加相應(yīng)的聯(lián)系信息以及分類信息。只要您認(rèn)為合適,可以添加任意多的分類。

繼續(xù)添加要通過 UDDI 公開的 Web 服務(wù)。因?yàn)榉?wù)可以有多種實(shí)現(xiàn),所以需要給每個(gè)添加的服務(wù)添加一個(gè)綁定。對(duì)于每個(gè)綁定,需要提供 Web 服務(wù)的訪問點(diǎn),即 < http://www.mycompany.com/SampleWebService.asmx>。

每個(gè)綁定都需要為所支持的接口創(chuàng)建一個(gè)引用。Microsoft UI 將這些作為“規(guī)范簽名”來調(diào)用。規(guī)范簽名就是包含 WSDL 接口的 tModel。Microsoft UI 會(huì)提供一個(gè)屏幕,允許您基于其 URN 來搜索 tModel。這個(gè) tModel 可以是在步驟 1 中注冊(cè)的,也可以是別人注冊(cè)的 WSDL 文件的 tModel。

最后,系統(tǒng)會(huì)顯示選項(xiàng),要求提供一個(gè)關(guān)于特定 Web 服務(wù)的概述文檔的 HTTP 地址,以及任何相關(guān)的實(shí)例參數(shù)。

使用 Microsoft UDDI .NET SDK 編程進(jìn)行注冊(cè)

注冊(cè)過程的另一種選擇是通過編程進(jìn)行注冊(cè)。使用 Microsoft UDDI SDK 可以輕而易舉地完成該過程。您必須使用 Web UI 獲取一個(gè) UDDI 帳號(hào)。完成該任務(wù)后,其余過程就交給腳本來處理。首先,下載并安裝 UDDI SDK,地址是 http://www.microsoft.com/downloads/release.asp?ReleaseID=30880(英文)。然后,使用 Visual Studio .NET 創(chuàng)建一個(gè)新的 C# 控制臺(tái)應(yīng)用程序。添加一個(gè)對(duì) Microsoft UDDI SDK dll 的引用,其默認(rèn)安裝位置是 C:Program FilesMicrosoft UDDI SDKVS7Microsoft.Uddi.Sdk.dll。然后,在代碼頂部添加一些名稱空間引用:

using Microsoft.Uddi;
using Microsoft.Uddi.Binding;
using Microsoft.Uddi.Business;
using Microsoft.Uddi.Service;
using Microsoft.Uddi.ServiceType;

在 static void Main (string[] args) 函數(shù)中添加下列代碼:

// 您最好先運(yùn)行這個(gè)程序,在 https://test.uddi.microsoft.com/publish
// 上進(jìn)行注冊(cè)測(cè)試
Publish.Url = "https://uddi.microsoft.com/publish";
Publish.User = "您的帳戶";
Publish.Password = "************";

這將為您的帳戶建立身份驗(yàn)證。下一步,添加以下代碼將 WSDL 文件發(fā)布為 tModel:

// 創(chuàng)建 tModel
SaveTModel stm = new SaveTModel();
stm.TModels.Add();
stm.TModels[0].Name = "此處插入 URN";
stm.TModels[0].Descriptions.Add("zh","此處插入說明");
stm.TModels[0].OverviewDoc.OverviewURL = "此處插入 WSDL 的 URL";
// 下一行是給 tModel 正確分類所必需的
stm.TModels[0].CategoryBag.Add
( "uddi-org:types",
"wsdlSpec",
"uuid:c1acf26d-9672-4404-9d70-39b756e62ab4" );

string sTModelKey = "";

// 發(fā)送到 UDDI
try
{
TModelDetail tmd = stm.Send();
sTModelKey = tmd.TModels[0].TModelKey;
}
catch (UddiException ue)
{
Console.WriteLine ( ue.Message );
return;
}
catch (Exception e)
{
Console.WriteLine ( e.Message );
return;
}

成功保存后,UDDI 將生成一個(gè)新的唯一的 tModelKey,以后在 Web 服務(wù)的綁定中需要用到它。下一步,創(chuàng)建公司條目:

// 創(chuàng)建公司
SaveBusiness sb = new SaveBusiness();
sb.BusinessEntities.Add();
sb.BusinessEntities[0].Name = "此處插入公司名稱";
sb.BusinessEntities[0].Descriptions.Add("zh","此處插入說明");

// 創(chuàng)建公司服務(wù)
sb.BusinessEntities[0].BusinessServices.Add();
sb.BusinessEntities[0].BusinessServices[0].Name = "此處插入服務(wù)名稱";
sb.BusinessEntities[0].BusinessServices[0].Descriptions.
Add("zh","此處插入服務(wù)說明");

// 創(chuàng)建綁定模板
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates.Add();
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
Description.Add("zh","此處插入綁定說明");
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
AccessPoint.Text = "此處插入訪問點(diǎn)";
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
AccessPoint.URLType = Microsoft.Uddi.Api.URLTypeEnum.Http;

// 創(chuàng)建 tModel 實(shí)例信息
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos.Add();
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos[0].Descriptions.
Add("zh","此處插入說明");
// 使用上面的 tModelKey 字符串
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos[0].TModelKey = sTModelKey;


// 發(fā)送到 UDDI
try
{
BusinessDetail bd = sb.Send();
// 顯示 xml
Console.WriteLine ( bd );
}
catch (UddiException ue)
{
Console.WriteLine ( ue.Message );
return;
}
catch (Exception e)
{
Console.WriteLine ( e.Message );
return;
}

此時(shí),WSDL 定義和公司信息都已經(jīng)保存到了 UDDI 中。通過傳遞適當(dāng)?shù)逆I,以后您可以隨時(shí)編輯這些條目。

步驟 3:在 UDDI 中搜索條目
在 UDDI 中注冊(cè)條目后,進(jìn)行以下三種檢查是比較有意義的。第一,使用 Microsoft Web 用戶界面,根據(jù)名稱和分類來搜索您的公司,確認(rèn)其存在于返回的結(jié)果集中。第二,打開 Visual Studio .NET 并確保它是通過“Add Web Reference”對(duì)話框顯示的。如果沒有顯示,則可能沒有正確使用上述的 uddi-org:types 分類法對(duì)您的 tModel 進(jìn)行分類。您應(yīng)該能將 Web 服務(wù)添加到工程中,并基于 WSDL 文件生成代理代碼。第三,等待 24 小時(shí),您的條目將復(fù)制到 IBM 節(jié)點(diǎn)上,這可以通過其 UI 來查詢,地址是 https://www-3.ibm.com/services/uddi/protect/find(英文)。

總結(jié)

UDDI 和 WSDL 作為免費(fèi)的規(guī)范,可以幫助建立基于 Web 服務(wù)的軟件系統(tǒng)。WSDL 提供了與供應(yīng)商無關(guān)的正式方法來定義 Web 服務(wù),這樣便可以實(shí)現(xiàn)下一代遠(yuǎn)程過程調(diào)用。而 UDDI 提供了一種廣泛的、標(biāo)準(zhǔn)化的基礎(chǔ)結(jié)構(gòu),允許人們?nèi)ッ枋龊桶l(fā)現(xiàn) Web 服務(wù)。這兩個(gè)標(biāo)準(zhǔn)的結(jié)合將帶來一個(gè)繁榮的 Web 服務(wù)生態(tài)系統(tǒng)。

瀏覽:使用UDDI的Web服務(wù)描述和發(fā)現(xiàn)(第二部分)

發(fā)布:2007-03-25 10:28    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章: