綠色資源網:您身邊最放心(xīn)的安全(quán)下載站! 最新軟件|熱門排行(háng)|軟件分類|軟件(jiàn)專題|廠商(shāng)大全

綠色(sè)資(zī)源網

技術教程
您的位置:首頁網絡編程(chéng)Xml編程 → 什麽是 XML Web Service

什麽是 XML Web Service

我要評論 2009/06/14 15:11:05 來源:綠(lǜ)色資源(yuán)網 編輯:佚名 [ 中(zhōng) ] 評論:0 點擊:742次(cì)

XML Web Service 是(shì)在 Internet 上進行分(fèn)布式計算的(de)基本構造塊。開放的標準以及對用戶和應(yīng)用(yòng)程序之間的通(tōng)信和(hé)協(xié)作(zuò)的關注產生了這樣一種(zhǒng)環境,在(zài)這種環境(jìng)下,XML Web Service 成為應用程序集成的平台。應用程序是通過使用多個不同來源的 XML Web Service 構造而成(chéng)的,這些服務相互協同工作,而不管它們位於何處或(huò)者如(rú)何實現。
有多(duō)少個構建 XML Web Service 的公司,就可能有多少種 XML Web Service 定義。不過幾乎所有定義都(dōu)具有(yǒu)以下(xià)共同點(diǎn):
XML Web Service 通過標(biāo)準的 Web 協議向 Web 用戶提供有用的功能。多數情況下使(shǐ)用 SOAP 協議。
XML Web Service 可以非常詳(xiáng)細地說明(míng)其接口,這(zhè)使用戶能夠創建客戶端應用程(chéng)序與它們進行通信。這(zhè)種說明(míng)通常包含(hán)在(zài)稱為 Web 服務說明語言 (WSDL) 文檔的 XML 文檔中。
XML Web Service 已經過注冊,以便潛(qián)在用戶能(néng)夠輕易(yì)地找到這些服務,這(zhè)是通過通用發現、說明(míng)和集成 (UDDI) 來完成的。

本文將介紹這(zhè)三種技術,但首先需要(yào)解釋一下為什麽要關注 XML Web Service。
XML Web Service 體係(xì)結構的主要優點之一是:允許在不同平台上、以不同語言編寫的各種程序以基於標(biāo)準(zhǔn)的方式相互通信。對這一行業有所(suǒ)了解的(de)用戶可能馬上(shàng)會(huì)說:“等一等(děng),CORBA 和之前的 DCE 不(bú)是都做過相同的承諾(nuò)嗎?這(zhè)和它們有什麽區(qū)別?”最(zuì)重(chóng)要的區(qū)別在於:SOAP 比以前的方法要簡單得多,因此要實現與(yǔ)標(biāo)準兼容的 SOAP,障礙也要少得多。Paul Kulchenko 在 http://www.soapware.org/directory/4/implementations(英文)上提供了一(yī)個 SOAP 實現方(fāng)案(àn)的列表(biǎo)。上次(cì)統計時,該列表已經包含了(le) 79 項。正如您所預料(liào),多數(shù)大的軟件公司都提供 SOAP 實現方案(àn),但也(yě)有許多實現方案(àn)是由(yóu)個(gè)別開發人員創建(jiàn)和維護的。相對以前(qián)的方案而言,XML Web Service 的另一大優點是使用標準的 Web 協議 - XML、HTTP 和 TCP/IP。許多公司都已(yǐ)經建立了 Web 基(jī)礎結構,同時它們的員工在維護(hù)方麵也(yě)都具備相應的知(zhī)識和經驗。因此,引入 XML Web Service 與引入以前(qián)的技術相(xiàng)比,其成本要低得多。
我們(men)將 XML Web Service 定義(yì)為:通(tōng)過 SOAP 在 Web 上(shàng)提供的軟件服務(wù),使用 WSDL 文件(jiàn)進行(háng)說明,並(bìng)通(tōng)過(guò) UDDI 進行注冊。那麽,您也(yě)許要(yào)問:“使用 XML Web Service 能夠做什麽?”最初(chū)的 XML Web Service 通常是可以方便地並入應用程序的信息來源,如股(gǔ)票價格、天氣預報、體(tǐ)育成績等(děng)等(děng)。我們很容易想到(dào),可以構(gòu)建一整類應用程序(xù)以分析和匯總所關心的信息,並以各種方式(shì)提供這些信息;例(lì)如,您可(kě)以使用 Microsoft® Excel 電子表(biǎo)格來匯總所有的財務信息(xī) - 股票、401K、銀行存(cún)款、貸款等等(děng)。如(rú)果能夠通過 XML Web Service 獲(huò)得(dé)這些信息,Excel 就可以(yǐ)不斷(duàn)對(duì)其進行更新。這些信息中(zhōng)有些是免費的(de),有些(xiē)則可能需要訂閱才(cái)能獲得相應(yīng)服務。大部分(fèn)這種信息現(xiàn)在已經可以在 Web 上(shàng)找到了(le),但是(shì) XML Web Service 可以使編程訪問更簡單(dān),也(yě)更可靠。
以 XML Web Service 方式提(tí)供現有應用程序,可以構建新(xīn)的、更強(qiáng)大的應用(yòng)程序,並利用 XML Web Service 作為構造塊。例(lì)如,用戶(hù)可以開發(fā)一個(gè)采購(gòu)應用(yòng)程序,以(yǐ)自動獲取來自不同供應商的價格信息(xī),從(cóng)而使用戶可以選擇供應(yīng)商(shāng),提交訂單,然後(hòu)跟蹤貨物的運輸,直至收到貨物。而供應商的應用(yòng)程序除了在 Web 上(shàng)提(tí)供服務外,還可(kě)以使用 XML Web Service 檢查(chá)客戶的信用(yòng)、收取貨(huò)款,並與貨運公(gōng)司(sī)辦(bàn)理貨運手續。
將來,某(mǒu)些最有(yǒu)趣的 XML Web Service 所支(zhī)持(chí)的(de)應用程序還(hái)可以利用 Web 完成目前無法完成的任務。例如(rú),日曆服(fú)務就(jiù)是(shì) Microsoft .NET My Services(英文)項目即將(jiāng)支持的服務之一(yī)。如果您的牙醫和機械師通過(guò)這一 XML Web Service 提供其日程安(ān)排,您就可以(yǐ)通過網絡與他們安排約會;如果您願意,他們也(yě)可以直接在您的日曆上約定清潔和(hé)日常保養的日期。不(bú)難想象,隻(zhī)要能夠對 Web 進行編程,您就可以創建數以百計的應用程序。
有關 XML Web Service 及其可以構建的(de)應用程序的詳細信息,請參閱 MSDN Web 服務(英文)主頁。
SOAP

Soap 是 XML Web Service 的通信(xìn)協議(yì)。當把 SOAP 描述為一(yī)種通(tōng)信協(xié)議時,多數人都(dōu)會想到 DCOM 或 CORBA,並且會問“SOAP 如何激活對象?”或“SOAP 使用什麽(me)樣的命(mìng)名服務?”等問(wèn)題(tí)。雖然 SOAP 實現方(fāng)案可能會包含上述內容,但 SOAP 標準並(bìng)未對其進行規定。SOAP 一種規範,用(yòng)來定義消息的(de) XML 格(gé)式 - 這是規範(fàn)中所必需的部(bù)分。包含在一對(duì) SOAP 元(yuán)素中的、結構正確的 XML 段就是 SOAP 消息。這是(shì)不是(shì)很簡單?
SOAP 規範的(de)其他部分介紹如(rú)何(hé)將程序數據表示為 XML,以及如何使用 SOAP 進行(háng)遠程過程調用 (RPC)。這些可選的規(guī)範部分用於實現 RPC 形式的應用程序,其中客戶(hù)端將發出一條(tiáo) SOAP 消息(xī)(包含可調用函數,以及要傳送到該函數的參數),然後服務器將返回包含函(hán)數執行結果的消息。目前,多數 SOAP 實現方案都支持 RPC 應用程(chéng)序,這(zhè)是因為(wéi)習(xí)慣於開發 COM 或 CORBA 應用程序(xù)的編程人員熟悉 RPC 形式。SOAP 還支持文(wén)檔形式的應用程序,在這類應用程序中,SOAP 消息隻是 XML 文檔的一個包裝。文檔形式的 SOAP 應用(yòng)程序非(fēi)常靈活(huó),許(xǔ)多新(xīn)的 XML Web Service 都利(lì)用這一特點來構建使用 RPC 難以實現(xiàn)的服務。
SOAP 規範的(de)最後一個(gè)可選部分(fèn)定義了包(bāo)含(hán) SOAP 消息(xī)的 HTTP 消息的樣式。此 HTTP 綁定非常重要(yào),因(yīn)為幾乎(hū)所有當(dāng)前的 OS(以及許(xǔ)多(duō)以前的(de) OS)都支持 HTTP。HTTP 綁定雖然(rán)是(shì)可選的(de),但(dàn)幾乎所有 SOAP 實現方案都支持 HTTP 綁定(dìng),因為(wéi)它是 SOAP 的唯一標準協(xié)議(yì)。由(yóu)於這(zhè)一原(yuán)因,人們(men)通常誤認為 SOAP 必須使用 HTTP。其實,有些實現(xiàn)方案也支(zhī)持 MSMQ、MQ 係列(liè)、SMTP 或 TCP/IP 傳輸,但由於 HTTP 非常普遍,幾乎所有當(dāng)前的 XML Web Service 都使用它。由於 HTTP 是 Web 的核心協議,因此大多數組(zǔ)織的網絡基(jī)礎結構都支持 HTTP,並且員工(gōng)已(yǐ)經了解了(le)如何對其進行管理(lǐ)。如今,已經建立(lì)了(le)用於 HTTP 的安全保(bǎo)護、監視和(hé)負載平衡的基礎結構。
開始使用 SOAP 時,最容易混淆的(de)是 SOAP 規範及其(qí)許(xǔ)多實現方案之間的差異(yì)。多數(shù)使用 SOAP 的用戶並不直(zhí)接編寫 SOAP 消息(xī),而是(shì)使用 SOAP 工(gōng)具包來創建和分析(xī) SOAP 消息。這些(xiē)工具包通常將函數調(diào)用(yòng)從某種語言轉換為 SOAP 消息。例如,Microsoft SOAP Toolkit 2.0 將(jiāng) COM 函(hán)數(shù)調用轉換為 SOAP,而 Apache Toolkit 將 JAVA 函數(shù)調用轉換為 SOAP。函數(shù)調用的類型和支持的參數的(de)數據類(lèi)型(xíng)隨每(měi)個(gè) SOAP 實現方案的不同而不同,因此適用於一個工具(jù)包(bāo)的函數(shù)可能並不(bú)適用於另(lìng)一(yī)個(gè)工具包。這並不是 SOAP 的限製(zhì),而(ér)是所使用的特定實現方案(àn)的限製。
到目前為止,SOAP 最引(yǐn)人注(zhù)目的(de)特征是(shì)它可以(yǐ)在許多不同的軟件和硬件平(píng)台上實現。這(zhè)意味著 SOAP 可用於鏈(liàn)接企業(yè)內部和外部的不(bú)同係(xì)統。過(guò)去曾試過多種方法以提出一個可(kě)用於(yú)係統(tǒng)集成的通用(yòng)通信協議,但(dàn)它們都(dōu)沒有象 SOAP 一樣獲得廣泛的認可(kě)。為什麽呢?因為與許多早期的協議相比,SOAP 更小巧,而(ér)且更(gèng)易於(yú)實(shí)現(xiàn)。例如,DCE 和 CORBA 的實(shí)現需要(yào)數年時間,所(suǒ)以隻發布了很少幾個實現(xiàn)方案。而 SOAP 可以利用現有的(de) XML 分析器和(hé) HTTP 庫完成大(dà)部分艱(jiān)苦的工作,因(yīn)此 SOAP 實現方案在數月(yuè)內便可完(wán)成。這就(jiù)是(shì)為什(shí)麽現在已經有 70 多個(gè) SOAP 實(shí)現(xiàn)方案的原因。當然,SOAP 並不具備 DCE 或 CORBA 的全部功能,雖然功能減(jiǎn)少了,但由(yóu)於其複雜程度大(dà)大降低了(le),因(yīn)此 SOAP 更易於應用。
HTTP 的普及和 SOAP 的簡單性使您幾乎可以從任何環(huán)境(jìng)調用它們,因此成為 XML Web Service 的理想(xiǎng)基礎。有關 SOAP 的詳(xiáng)細信息,請參閱(yuè) MSDN SOAP(英文)主(zhǔ)頁。
安全性如(rú)何?

通常,剛(gāng)接觸(chù) SOAP 的(de)用戶提出(chū)的第一個問題就是 SOAP 如何解決安全性問題。在其早期(qī)開發階段,SOAP 被看作是基於 HTTP 的協議,所以認為 HTTP 的安全性對於 SOAP 已經足(zú)夠了(le)。畢竟目前(qián)有數以千(qiān)計的 Web 應(yīng)用(yòng)程序都在使用 HTTP 安全(quán)性(xìng),所以這對於 SOAP 確實已(yǐ)經足夠。因此,當前的(de) SOAP 標準假(jiǎ)定安全性屬(shǔ)於傳輸問題,而並不(bú)作為安全性問題(tí)處理(lǐ)。
當 SOAP 擴展至更為通用的協議,並運行於眾多傳輸之上(shàng)時,安全性問題就變(biàn)得突出了。例如,HTTP 提供若幹(gàn)種方法對進行 SOAP 調用的用戶進行身份驗證,但是當消息(xī)從 HTTP 路由到 SMTP 傳(chuán)輸(shū)時,怎樣傳播該身份標識呢(ne)?SOAP 是作為構造塊(kuài)協議進行設計(jì)的,所以(yǐ)幸運的是(shì),已經有了相應的(de)規範以(yǐ)基於(yú) SOAP 為 Web 服務提(tí)供額外的安全保護功能。WS-Security 規範(英文)定義了一套(tào)完(wán)整的加密係統(tǒng),而 WS-License 規範(英(yīng)文(wén))定義了(le)相應的技(jì)術,以(yǐ)保證調用者的(de)身份標識(shí),並確保隻(zhī)有授權用(yòng)戶才可以使用 Web 服(fú)務。
WSDL

WSDL (Web Services Description Language) 表示(shì) Web 服(fú)務說明語言。在本(běn)文中,我(wǒ)們可以認為(wéi) WSDL 文件(jiàn)是一(yī)個 XML 文(wén)檔,用於說明一組 SOAP 消息以及如何(hé)交換這些消息。換句話說,WSDL 對於 SOAP 的作用就象 IDL 對於 CORBA 或 COM 的作用。由於(yú) WSDL 是 XML 文檔,因此很容(róng)易進行閱讀和編輯;但大多數情況下(xià),它由(yóu)軟件生成和使(shǐ)用。
要(yào)查看 WSDL 的值,可以假設您要調(diào)用(yòng)由您的一(yī)位業務夥伴提(tí)供的 SOAP 方法。您可以要求對(duì)方提供一些 SOAP 消息示例,然後編(biān)寫您的應用程(chéng)序以生成並使(shǐ)用與示例類(lèi)似的消息(xī),但這(zhè)樣很(hěn)容易出(chū)錯。例(lì)如,您可能(néng)看到一個(gè) 2837 的客戶 ID,並假(jiǎ)設它為整數(shù),而實際上它是一個字符串。WSDL 通過(guò)明確(què)的表示法指定請求消息必須包含(hán)的內容(róng)以及響應消息的(de)樣式。
WSDL 文件用於說明消息格式的表示法以(yǐ) XML 架構標準為基礎,這意味著它(tā)與編程語言無關,而且以標準為基(jī)礎,因此(cǐ)適用於說明可從(cóng)不同平台、以不同編程(chéng)語言訪問的 XML Web Service 接(jiē)口(kǒu)。除(chú)說明消息內容外,WSDL 還定義了服(fú)務的位置,以及(jí)使(shǐ)用什麽通信協(xié)議與服務進行(háng)通信。也就是說,WSDL 文件定義了編寫使用 XML Web Service 的程(chéng)序所需的全部內容。有幾種工具可以讀取 WSDL 文件,並(bìng)生(shēng)成與 XML Web

關鍵(jiàn)詞:XML,Web,Service

閱讀本文後您有什麽(me)感(gǎn)想(xiǎng)? 已有 人給(gěi)出評價!

  • 2 歡迎(yíng)喜歡
  • 2 白癡
  • 2 拜托
  • 46 哇
  • 3 加油
  • 5 鄙視