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