申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
AMTeam.org
把你的Web服務(wù)展現(xiàn)在世界面前
在前一篇文章里,我們通過(guò)一個(gè)基本示例演示了用.NET創(chuàng)建XML
Web服務(wù)的方便性。所做的工作無(wú)非是創(chuàng)建了一個(gè)簡(jiǎn)單的文本文件,然后把它放Web服務(wù)器上而已,輕敲少許代碼,你就輕松擁有了一種具有完備功能意義的Web服務(wù)。但是,我們還需要采取什么措施才能發(fā)布這個(gè)簡(jiǎn)單的服務(wù)使得別人能夠用到它呢?此外,其他人用什么法子才能找到我們的服務(wù)呢?
在這篇文章里,我們就將探討一下這些問(wèn)題。首先讓我們了解下名稱空間這一(namespaces)概念,有了它才能有效地避免同其他Web服務(wù)發(fā)生沖突。然后,我們接著討論如何在目錄里發(fā)布你的Web服務(wù)以便其人能夠使用它。
名稱空間
當(dāng)我們?cè)谇懊娴奈恼轮袆?chuàng)建ConvertMoney
Web服務(wù)并且用瀏覽器訪問(wèn)它的時(shí)候,.NET框架會(huì)自動(dòng)地產(chǎn)生一個(gè)網(wǎng)頁(yè)。這一網(wǎng)頁(yè)的出現(xiàn)使得測(cè)試服務(wù)變得相當(dāng)容易。但是,正如你從圖A所看到的那樣,網(wǎng)頁(yè)中包含了大量信息。大多數(shù)開發(fā)者不會(huì)花時(shí)間去閱讀這些網(wǎng)頁(yè)展示的信息。然而,你應(yīng)該理解這些內(nèi)容在向你傳達(dá)些什么信息,為什么說(shuō)這些信息非常重要。
圖A
.NET Web 服務(wù)生成的ConvertMoney網(wǎng)頁(yè)
網(wǎng)頁(yè)上的頭兩行說(shuō)明以下內(nèi)容:
該Web服務(wù)用http://tempuri.org/ 作為默認(rèn)的名稱空間。
在XML
Web服務(wù)公開發(fā)布之前建議修改默認(rèn)的名稱空間。
這到底是什么意思呢?原來(lái),每一種Web服務(wù)都需要一個(gè)名稱空間(namespace)。所謂名稱空間就是標(biāo)識(shí)Web服務(wù)的一種附加的方法。如果你和某人都創(chuàng)建了同名的ConvertMoney
Web服務(wù),那么這兩個(gè)Web服務(wù)將在不同的名稱空間之內(nèi)存在,這樣不會(huì)發(fā)生混淆。
.NET Web服務(wù)的缺省名稱空間是tempuri.org。其含義是“temporary uniform resource
identifiers”,中文的意思是“臨時(shí)性的統(tǒng)一資源標(biāo)識(shí)符”,也可以簡(jiǎn)稱temp
URI。微軟建議,在你公開發(fā)布自己的Web服務(wù)之前最好修改這一名稱空間,哪怕“公共”這個(gè)詞語(yǔ)只意味著在你的公司內(nèi)部有效。通常的情況下,最好用你公司的域名作為命名空間。
設(shè)置名稱空間很簡(jiǎn)單,在你的Web服務(wù)中添加少許代碼即可。要加入的代碼不過(guò)是出現(xiàn)在類之前的WebService關(guān)鍵詞的一個(gè)屬性。就我們的ConvertMoney
Web服務(wù)而言,代碼的前3行原本如下所示:
<%@ WebService Language="VB" Class="ConvertMoney"
%>
Imports System.Web.Services
<WebService()>Public Class
ConvertMoney
為了修改名稱空間你只需要在WebService標(biāo)簽之前添加Namespace屬性即可,如下所示:
<%@ WebService Language="VB" Class="ConvertMoney"
%>
Imports System.Web.Services
<WebService(Namespace:="http://volanttraining.com")> _
Public Class
ConvertMoney
由于增加了這個(gè)Namespace屬性,現(xiàn)在你的ConvertMoney Web服務(wù)就同其他人的 ConvertMoney
Web服務(wù)區(qū)分開了。如果你再運(yùn)行Web服務(wù),關(guān)于tempuri.org的提示信息就不再出現(xiàn)了(圖B)。該服務(wù)的運(yùn)行沒什么變化,和以前一樣,但它不再使用tempuri.org這個(gè)缺省的名稱空間了,現(xiàn)在它正使用的名稱空間是volanttraining.com。
圖B
沒有提示信息的ConvertMoney Web服務(wù)
UDDI:用于Web服務(wù)的黃頁(yè)
為了發(fā)布你的Web服務(wù)以便其它人能使用它,你需要在一個(gè)可查找的目錄中登記自己的服務(wù)。幸好,這樣的一種目錄已經(jīng)出現(xiàn)了:這就是所謂的UDDI。UDDI是一種開放的、與供應(yīng)商無(wú)關(guān)的標(biāo)準(zhǔn),它就像是網(wǎng)絡(luò)世界中的黃頁(yè)。你可以通過(guò)UDDI找到現(xiàn)有的Web服務(wù)或者發(fā)布你自己的Web服務(wù)。其實(shí),Web服務(wù)并沒有拷貝到UDDI服務(wù)器上,UDDI的作用不過(guò)是列出現(xiàn)有的服務(wù)指引人們找到服務(wù)所在的服務(wù)器。從這一意義來(lái)看,它是一種真正的信息索引目錄而不是存儲(chǔ)具體信息的倉(cāng)庫(kù)。
你可以訪問(wèn)UDDI的網(wǎng)站了解有關(guān)UDDI的更多信息。這是公共的UDDI,任何人都能從中檢索它,通過(guò)它列出Web服務(wù)信息。為了使用公共的UDDI目錄,你必須注冊(cè)一個(gè)帳號(hào)。當(dāng)然,你還可以在自己的機(jī)構(gòu)內(nèi)引入U(xiǎn)DDI;在你的企業(yè)內(nèi)部安裝UDDI服務(wù)器之后,你的開發(fā)人員就可以發(fā)布、發(fā)現(xiàn)和使用Web服務(wù)了。
當(dāng)你訪問(wèn)UDDI網(wǎng)站的時(shí)候,你可以在目錄中注冊(cè)你的公司。因?yàn)閁DDI是一個(gè)開放的計(jì)劃,所以微軟、HP以及IBM等公司都在使用它。參與該計(jì)劃的每家公司都運(yùn)行著自己的UDDI服務(wù)器,因此你必須選擇自己想訪問(wèn)的公司。版本1就是目前的UDDI版本,版本2還處于測(cè)試階段。如果你決定訪問(wèn)微軟版本1
UDDI站點(diǎn),那么你可以從這里檢索現(xiàn)有的Web服務(wù)。
UDDI在檢索特定服務(wù)或功能方面具有相當(dāng)高的靈活性。你可以根據(jù)公司的名字、商業(yè)地點(diǎn)、SIC代碼或其他標(biāo)準(zhǔn)檢索服務(wù)。例如,如果你想檢索術(shù)語(yǔ)“zip”,搜索條件設(shè)置為“按名稱檢索”,那么返回的Web服務(wù)的名字將包含“zip”字樣。
除了檢索服務(wù)以外,你還可以注冊(cè)自己。一旦你在網(wǎng)站上注冊(cè)了自己的公司,你就能為你注冊(cè)的Web服務(wù)添加服務(wù)名、服務(wù)說(shuō)明和Web地址。
小結(jié)
我們現(xiàn)在知道用.NET創(chuàng)建XML
Web服務(wù)以及添加名稱空間來(lái)區(qū)別其他Web服務(wù)的過(guò)程相當(dāng)簡(jiǎn)單。然后,你可以把自己的服務(wù)發(fā)布到使用UDDI的公共目錄以便其它人能發(fā)現(xiàn)并且消費(fèi)你的Web服務(wù)。你還可以用UDDI尋找其他的Web服務(wù)用在自己的應(yīng)用程序里,此外,你甚至可以你的機(jī)構(gòu)內(nèi)部使用UDDI,通過(guò)它為你的企業(yè)開發(fā)注冊(cè)Web服務(wù)。
|