什麽是(shì) XML Web Service
XML Web Service 是(shì)在 Internet 上進行分布式(shì)計(jì)算的基本構造塊。開放的標準以及對用戶(hù)和(hé)應用(yòng)程序之間的通信和協作(zuò)的(de)關注產生了這樣一(yī)種環境,在這種環境下,XML Web Service 成為應用程序集成的平台。應用程序是(shì)通過使用多個不(bú)同來源的 XML Web Service 構(gòu)造(zào)而成的,這些服務(wù)相互協同工作,而不管它們位於何處或(huò)者如何實現。
有多少個構建(jiàn) XML Web Service 的公司,就可能(néng)有(yǒu)多少種 XML Web Service 定義。不過幾乎所有定義(yì)都具有以下共同點(diǎn):
XML Web Service 通過標準的(de) Web 協議向 Web 用(yòng)戶提供有用的功能。多數(shù)情況(kuàng)下使用 SOAP 協議。
XML Web Service 可以非常詳細地說(shuō)明其(qí)接口,這使用戶(hù)能夠創建(jiàn)客戶端(duān)應用程序與它們進行通信。這種說明(míng)通(tōng)常包含在稱為 Web 服(fú)務說(shuō)明語言 (WSDL) 文檔的(de) XML 文檔(dàng)中。
XML Web Service 已經過注冊,以便(biàn)潛在用戶(hù)能夠輕易地找到這(zhè)些(xiē)服務,這是通過通用發現、說明和集成 (UDDI) 來完成的(de)。
本文將介紹這(zhè)三種技術,但首先需(xū)要解釋一下為什麽要關(guān)注(zhù) XML Web Service。
XML Web Service 體係結構的主要優點之一是:允許在不同平台上(shàng)、以不同(tóng)語言編寫的各種程序以基於標準的方(fāng)式相互通(tōng)信。對(duì)這一行(háng)業有所了解的用(yòng)戶可能馬上會說:“等一(yī)等,CORBA 和之前的 DCE 不是都做過相同的承諾(nuò)嗎?這和它們(men)有什麽區別?”最重要的區別(bié)在於(yú):SOAP 比以前的方法要簡單得多,因此要(yào)實現(xiàn)與(yǔ)標準兼容(róng)的 SOAP,障礙也要(yào)少(shǎo)得多。Paul Kulchenko 在 http://www.soapware.org/directory/4/implementations(英文)上(shàng)提供了一個 SOAP 實現方案的列表。上次統計時(shí),該列表已(yǐ)經(jīng)包含了 79 項。正如(rú)您所預(yù)料,多數(shù)大的軟件公司都提供 SOAP 實現方案,但也有許多實(shí)現方案是由個別開發(fā)人員創建和維護的。相(xiàng)對以前的方案而言,XML Web Service 的另一大優點是使用(yòng)標準的 Web 協議 - XML、HTTP 和 TCP/IP。許多公司都已經(jīng)建立了(le) Web 基礎結構,同時它(tā)們的員(yuán)工在維護方麵也都具備相應的知識和(hé)經驗。因此,引入(rù) XML Web Service 與(yǔ)引入以前的技術相比,其成本要低得(dé)多。
我(wǒ)們將 XML Web Service 定義為:通(tōng)過 SOAP 在(zài) Web 上(shàng)提供的軟(ruǎn)件服務,使(shǐ)用(yòng) WSDL 文件(jiàn)進行說明,並通過 UDDI 進行注(zhù)冊。那麽,您也許(xǔ)要(yào)問:“使用 XML Web Service 能夠做什(shí)麽?”最初的 XML Web Service 通常是可以方便地並入應用程序的信息來源,如股票價格、天氣預報、體育成績(jì)等等。我們很容易想到,可以構建(jiàn)一整類應用程序以分析和匯總所關心的(de)信息,並以各種方式提供這些(xiē)信(xìn)息;例如,您可以使用 Microsoft® Excel 電子表格來匯總所有的財務信息 - 股票、401K、銀行存款(kuǎn)、貸款等(děng)等。如(rú)果能夠通過 XML Web Service 獲得這(zhè)些信息,Excel 就可以不斷對(duì)其進行更(gèng)新。這些信息中有些是免費(fèi)的(de),有些則可能需(xū)要訂閱才能獲得(dé)相應服務。大(dà)部分這種信息現在已經(jīng)可以在(zài) Web 上找到了,但是 XML Web Service 可(kě)以使編程訪問更(gèng)簡(jiǎn)單,也更可靠(kào)。
以 XML Web Service 方(fāng)式(shì)提供現有應用程序,可(kě)以構建新的(de)、更強大的應(yīng)用程序,並利用 XML Web Service 作為構(gòu)造塊。例如,用戶可以開發一(yī)個(gè)采購(gòu)應用程序(xù),以自(zì)動獲取來(lái)自不同供應商的價格信(xìn)息,從(cóng)而(ér)使用戶可以選擇供應商,提交訂單,然後跟蹤貨物的運輸,直至(zhì)收到貨物(wù)。而供應商的應用(yòng)程序除(chú)了在 Web 上提供服務外(wài),還可以使用(yòng) XML Web Service 檢(jiǎn)查客戶的信用、收取(qǔ)貨(huò)款,並與貨運公司(sī)辦理貨運手續。
將來(lái),某些最有趣的(de) XML Web Service 所支持的應用程序(xù)還可以利用 Web 完成目(mù)前無法(fǎ)完成的任務。例如,日曆服務就是 Microsoft .NET My Services(英文(wén))項目即將支持的服務之一。如果您(nín)的牙醫和(hé)機械(xiè)師通(tōng)過這(zhè)一 XML Web Service 提供其日程安排,您就可以通過(guò)網絡與他們安排約會;如果您願意(yì),他們(men)也可以直接在您的日曆上約定清潔和日(rì)常保養的日期。不難想象,隻要能夠對 Web 進行編(biān)程,您就可以創建數以百計的應用程序。
有關 XML Web Service 及其可(kě)以構建的應用程(chéng)序(xù)的詳細信息,請參閱 MSDN Web 服務(wù)(英文)主頁。
SOAP
Soap 是 XML Web Service 的通信協議。當(dāng)把 SOAP 描述為(wéi)一種(zhǒng)通(tōng)信(xìn)協議時,多數(shù)人都會(huì)想到(dào) DCOM 或 CORBA,並且會問(wèn)“SOAP 如何激活對象?”或“SOAP 使用(yòng)什麽(me)樣的命名服務?”等問題。雖然 SOAP 實現方案可能會包含上述(shù)內(nèi)容,但 SOAP 標(biāo)準並未對(duì)其進行規(guī)定。SOAP 一種規範,用來定義消息的 XML 格式(shì) - 這是規(guī)範中所必(bì)需的部分。包含在一(yī)對 SOAP 元素中(zhōng)的、結構正確的 XML 段就是 SOAP 消息。這是不是很簡(jiǎn)單?
SOAP 規範的(de)其(qí)他部(bù)分介紹如(rú)何將程序數據表示為 XML,以及如何(hé)使用 SOAP 進行遠程過程調用 (RPC)。這些可選(xuǎn)的規範部分用於實現 RPC 形式的應用程序,其中客戶端將(jiāng)發出一條(tiáo) SOAP 消息(包含可調用函(hán)數,以及要傳送到該函數的參數(shù)),然(rán)後(hòu)服務器將返回包(bāo)含函(hán)數執行結果的消息。目前,多數 SOAP 實現方案都支持 RPC 應用程(chéng)序,這是因(yīn)為習慣於開發 COM 或(huò) CORBA 應用程(chéng)序的(de)編程人員熟悉 RPC 形式(shì)。SOAP 還支持文檔形式(shì)的應用程序(xù),在這類應用程序中(zhōng),SOAP 消息隻是(shì) XML 文檔的一個包裝(zhuāng)。文檔形式(shì)的 SOAP 應用程序非常靈活,許多(duō)新(xīn)的 XML Web Service 都利用這(zhè)一特點來(lái)構建使用 RPC 難以實現的服務。
SOAP 規範的最(zuì)後一個可選部分(fèn)定義了包含 SOAP 消息的 HTTP 消息的樣式。此(cǐ) HTTP 綁定非常重(chóng)要,因為幾乎(hū)所有當(dāng)前的(de) OS(以及許(xǔ)多以前(qián)的(de) OS)都支持 HTTP。HTTP 綁定(dìng)雖然是可選的,但幾(jǐ)乎所有(yǒu) SOAP 實現方(fāng)案都支(zhī)持 HTTP 綁(bǎng)定,因為它是 SOAP 的唯一(yī)標準協議。由於(yú)這一原因,人(rén)們通常(cháng)誤認為 SOAP 必須使用 HTTP。其實,有些(xiē)實現方(fāng)案也支持 MSMQ、MQ 係列、SMTP 或 TCP/IP 傳輸,但由於 HTTP 非常普遍,幾乎所有(yǒu)當前的(de) XML Web Service 都使用它。由於 HTTP 是(shì) Web 的核心協議,因此大多數組(zǔ)織的(de)網絡基礎結構都支持 HTTP,並(bìng)且員工(gōng)已經了(le)解了如(rú)何對其進(jìn)行(háng)管理。如今,已經建立了用(yòng)於 HTTP 的安全保護、監視和(hé)負載(zǎi)平衡的基礎結構。
開始使用 SOAP 時(shí),最(zuì)容易混淆的(de)是 SOAP 規範及其許(xǔ)多實現方案之間的差異。多數(shù)使用(yòng) SOAP 的用戶並不直接編寫 SOAP 消息,而(ér)是使用 SOAP 工具包來創建和分(fèn)析 SOAP 消息(xī)。這些工具包通常將函數調用從(cóng)某(mǒu)種語言轉換為 SOAP 消息。例如,Microsoft SOAP Toolkit 2.0 將 COM 函數調用轉換為(wéi) SOAP,而 Apache Toolkit 將 JAVA 函數調用轉換為 SOAP。函數調用的類型和支持的參數的數據類型隨每個(gè) SOAP 實(shí)現方案的不同(tóng)而不同,因此適用於一個(gè)工具包的函(hán)數可(kě)能並不適(shì)用(yòng)於(yú)另一(yī)個(gè)工具包。這(zhè)並不是 SOAP 的限(xiàn)製,而(ér)是所使用的特定實(shí)現方案的限(xiàn)製。
到目前為止,SOAP 最引人(rén)注目的特征是它可以在許多(duō)不同的(de)軟件(jiàn)和硬件平台(tái)上實現。這意(yì)味著 SOAP 可用於鏈接企業內部和(hé)外部的不同係統。過去曾(céng)試過多種方法(fǎ)以(yǐ)提出一個(gè)可用於係統集成的通用通信協議,但它們都沒有象 SOAP 一樣獲得(dé)廣泛的(de)認(rèn)可。為什麽呢(ne)?因為與許多早期的協(xié)議(yì)相比(bǐ),SOAP 更(gèng)小巧,而且更易於實現。例(lì)如,DCE 和 CORBA 的實現需要數年時間,所以隻發布了很(hěn)少幾個實現方案。而 SOAP 可(kě)以(yǐ)利(lì)用現有(yǒu)的 XML 分(fèn)析器和(hé) HTTP 庫完成大部分艱苦的工作,因此 SOAP 實現方(fāng)案在數月內便可完(wán)成。這就是為什麽現在已經有 70 多(duō)個 SOAP 實現方案的原因。當(dāng)然,SOAP 並(bìng)不具備 DCE 或 CORBA 的全部功能(néng),雖然(rán)功能減少了,但由於其(qí)複雜程度大大降低了,因此 SOAP 更易於應(yīng)用(yòng)。
HTTP 的普(pǔ)及和 SOAP 的(de)簡單性使您(nín)幾乎可以從(cóng)任何環境調用它們,因此成為 XML Web Service 的理想基礎。有(yǒu)關 SOAP 的詳細信息(xī),請參閱 MSDN SOAP(英文)主頁。
安全(quán)性如何?
通常(cháng),剛接觸 SOAP 的用戶提出的第一個問題就是 SOAP 如何解決安全性(xìng)問題(tí)。在其早期開發階段,SOAP 被看作(zuò)是基於 HTTP 的協議,所以認為 HTTP 的安全性對於(yú) SOAP 已經足夠了。畢竟目前有數(shù)以千計(jì)的(de) Web 應用程(chéng)序都在使(shǐ)用 HTTP 安全性(xìng),所(suǒ)以這對(duì)於 SOAP 確實已經(jīng)足夠。因此,當前的 SOAP 標準假定安全性(xìng)屬於傳輸問題,而並不作為安(ān)全性問(wèn)題(tí)處理。
當 SOAP 擴展(zhǎn)至更為(wéi)通用(yòng)的協議,並運行於眾多傳輸之上時,安全(quán)性問(wèn)題就變得突出(chū)了。例如(rú),HTTP 提供(gòng)若幹種方法對進行 SOAP 調用的(de)用戶(hù)進行身份驗證,但是當消息從 HTTP 路由到 SMTP 傳輸時,怎樣(yàng)傳播該身(shēn)份標識呢?SOAP 是作(zuò)為構造(zào)塊協議進行設計的,所(suǒ)以幸(xìng)運的是,已(yǐ)經有了相應的(de)規範(fàn)以基於 SOAP 為 Web 服(fú)務提供(gòng)額外的安全保護功能。WS-Security 規範(英文)定(dìng)義了一套完整的加密係(xì)統,而 WS-License 規範(英文)定義了相應的技術,以保(bǎo)證調用者的身份標識,並確保隻有授權用戶才可以使用(yòng) Web 服務。
WSDL
WSDL (Web Services Description Language) 表示 Web 服務說明語言。在本文中,我們可以認為 WSDL 文件是一個 XML 文(wén)檔,用(yòng)於說明一組 SOAP 消息以及如何交換這些消(xiāo)息(xī)。換句話說,WSDL 對於 SOAP 的作用就象 IDL 對(duì)於 CORBA 或 COM 的作用。由於 WSDL 是(shì) XML 文檔(dàng),因此很容易進行閱讀和編輯;但大多(duō)數情況下,它由軟件生成和使用。
要查看(kàn) WSDL 的值,可以(yǐ)假設您要調(diào)用由您的(de)一位業務夥伴提供的 SOAP 方法。您可以要求(qiú)對方(fāng)提供一些 SOAP 消息示例,然後編寫您的應用程序以生成並使用(yòng)與(yǔ)示例類似的消息,但這樣很容易出錯。例如,您可能看到(dào)一個 2837 的客戶(hù) ID,並假設它為整(zhěng)數,而實際(jì)上(shàng)它是一個字符串。WSDL 通過(guò)明確的表示法(fǎ)指定請求消息必須包含的內容以及響應消息的樣式。
WSDL 文件用於說明(míng)消息(xī)格式的表示(shì)法以 XML 架(jià)構(gòu)標準(zhǔn)為基礎,這意(yì)味著它與編程語言無關,而且以標準為基礎,因(yīn)此適用於說明可從不同平台、以不同(tóng)編程語言訪問的(de) XML Web Service 接口(kǒu)。除說明消(xiāo)息(xī)內容(róng)外,WSDL 還(hái)定義了服務的位置,以及使用什(shí)麽通(tōng)信協議與服務(wù)進行通(tōng)信。也就是說,WSDL 文件定義了編(biān)寫使用 XML Web Service 的程序所需的(de)全部(bù)內容(róng)。有(yǒu)幾種工具可以讀(dú)取 WSDL 文件,並生成與 XML Web
關鍵詞:XML,Web,Service
閱(yuè)讀本文後您有(yǒu)什麽感想(xiǎng)? 已有 人(rén)給出評(píng)價!
- 2
- 2
- 2
- 46
- 3
- 5