Web Service入門
n 什么是Web Service?
Web Service是構(gòu)建互聯(lián)網(wǎng)分布式系統(tǒng)的基本部件。Web Services 正成為企業(yè)應(yīng)用集成(Enterprise Application Integration)的有效平臺。你可以使用互聯(lián)網(wǎng)中提供的Web Service構(gòu)建應(yīng)用程序,而不必考慮這些Web Service是怎樣運行的。
n Web Service 三個基本技術(shù)
² Web Service通過標準通信協(xié)議,在互聯(lián)網(wǎng)上發(fā)布有用的程序模塊(以服務(wù)的方式),目前大部分是用SOAP來作通信協(xié)議。
² Web Service提供一份詳細的接口說明書,來幫助用戶構(gòu)建應(yīng)用程序,這個接口說明書叫作WSDL(Web Service Description Language)。
² 通常已發(fā)布的Web Service要注冊到管理服務(wù)器,這樣便于使用者查詢和使用。這個是通過UDDI(Universal Discovery Description and Integration)來完成的。
n 為什么要用Web Service?
Web Servcie最主要的優(yōu)點是,使用不同程序和在不同系統(tǒng)平臺上開發(fā)出來的程序,都可以相互通信?,F(xiàn)在很多人在問:“不是CORBA和DCE也有那些優(yōu)點嗎?跟它們有什么不同呢?”。第一個不同點是,SOAP作為Web Service的基本通信協(xié)議,比它們簡單地多,所以投入和使用的代價也是小的?,F(xiàn)在不僅有很多大公司發(fā)布的Web Service,也有個人發(fā)布的。另一個不同點是,Web Service使用標準的互聯(lián)網(wǎng)協(xié)議-XML、HTTP和TCP/IP。很多公司已經(jīng)從實踐當中對這些協(xié)議積累了豐富的經(jīng)驗,所以相比CORBA和DCE要交的學(xué)費要少地多。
如果把現(xiàn)有的應(yīng)用程序以Web Service部件形式發(fā)布,可以幫助其他的公司(人)構(gòu)件功能強大的應(yīng)用程序。舉個例子,你要開發(fā)一個采購系統(tǒng),可以自動地獲得供應(yīng)商的報價,而且可以實時追蹤送貨過程。如果供應(yīng)商已經(jīng)發(fā)布了報價和送貨這兩個Web Service,那么你就可以直接使用它們,而不必自己開發(fā)這些功能了。
在未來,會出現(xiàn)更有趣的Web Service(現(xiàn)在做不到的),來幫助我們構(gòu)建應(yīng)用程序。
² SOAP
SOAP是Web Service的基本通信協(xié)議。因為SOAP與DCOM和CORBA在概念上有相同之處,所以很多人在問:“SOAP是怎樣激活對象的?”或“SOAP在使用什么命名服務(wù)(Naming Service)?”。或許在執(zhí)行SOAP的過程當中會用到這些,但這些并不在SOAP規(guī)范要考慮的范疇之內(nèi)。SOAP只是定義SOAP消息的XML格式(XML Format),如果你用一對SOAP標記(SOAP Elements)把XML文檔括起來,那么這個就是一個SOAP消息,這不是很簡單嗎?
SOAP規(guī)范還定義了怎樣用XML來描述程序數(shù)據(jù)(Program Data),怎樣執(zhí)行RPC(Remote Procedure Call)。這些可選的規(guī)范是為了構(gòu)建RPC-style的應(yīng)用程序(客戶端SOAP消息包含函數(shù)名和在函數(shù)中用到的參數(shù),而服務(wù)器端SOAP消息包含執(zhí)行函數(shù)之后的結(jié)果)。大多數(shù)SOAP解決方案都支持RPC-style應(yīng)用程序,因為很多程序員已對DCOM或CORBA熟悉。SOAP還支持Document-style應(yīng)用程序(SOAP消息只包含XML文本信息)。Document-style應(yīng)用程序有很好的靈活性,所以很多用RPC很難構(gòu)建的Web Service用這種方式構(gòu)建。
最后SOAP規(guī)范還定義了HTTP消息是怎樣傳輸SOAP消息的。這并不代表SOAP只能用HTTP來作為傳輸協(xié)議,MSMQ、SMTP、TCP/IP都可以做SOAP的傳輸協(xié)議。
很多大公司根據(jù)SOAP規(guī)范,都開發(fā)出了自己的SOAP解決方案。這些解決方案都是相對于某種語言。比如說Microsoft SOAP toolkit2.0把COM函數(shù)轉(zhuǎn)換成SOAP消息,而Apache toolkit把JAVA函數(shù)轉(zhuǎn)換成SOAP消息。這樣難免帶來一些兼容性問題。
現(xiàn)在SOAP的很多另人矚目的特性已成為現(xiàn)實(SOAP已經(jīng)運行于不同的硬件和軟件平臺),而且有70多個解決方案。之所以SOAP被人們所愛戴,是因為SOAP比其他同類技術(shù)(CORBA、DCE)簡單易用。
安全性對于應(yīng)用程序來說是很重要的。那么SOAP的安全性如何呢?對于把HTTP作為傳輸協(xié)議的SOAP來說是沒有問題的,因為HTTP協(xié)議已經(jīng)有很好的安全構(gòu)架。那么用其他傳輸協(xié)議會出現(xiàn)安全問題嗎?不是的,你不必擔(dān)心,因為已經(jīng)有這方面的規(guī)范了(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-security.asp)。
n WSDL
WSDL是一種XML文檔,它定義SOAP消息和這些消息是怎樣交換的。IDL(Interface Description Language)是用于COM和CORBA的,WSDL是用于SOAP的。WSDL是一種XML文檔,所以我們可以閱讀和編輯,但很多時候是用工具來創(chuàng)建、由程序來閱讀。
舉個例子,你要使用供應(yīng)商的Web Service構(gòu)建應(yīng)用程序。你可以向供應(yīng)商索取使用Web Service的范例,然后按照范例來構(gòu)建應(yīng)用程序。這樣可能出現(xiàn)意料不到的錯誤,比如說,你在程序中使用的客戶代碼的數(shù)據(jù)類型是integer,而供應(yīng)商使用的數(shù)據(jù)類型是string.。WSDL詳細定義客戶端消息的格式,需要什么樣的參數(shù),這樣可以避免不必要的錯誤。
n UDDI
UDDI可以比喻成電話本,電話本里記錄的是電話信息,而UDDI記錄的是Web Service信息。你可以不把Web Service注冊到UDDI。但如果要讓全球的人知道你的Web Service,最好還是注冊到UDDI。
UDDI目錄說明文件也是一個XML文檔,它包括三個部分。“白頁(White Paper)”說明提供Web Service的公司(人)信息,比如說名稱、地址和聯(lián)系方式等等。“黃頁(Yellow Paper)”說明UDDI目錄的分類,比如說金融、服務(wù)和印刷等等。“綠頁(green Paper)”說明接口(Web Service 提供的)的詳細信息。
UDDI提供多種查詢方式,來幫助你找到需要的Web Service。如果你查詢與財務(wù)有關(guān)的Web Service,那么UDDI會提供詳細的信息。
n 參考資料
※本文是翻譯了下面的文章
XML Web Service basics, Roger Wolter,Microsoft Corporation, 2001年12月
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/webservbasics.asp
原文:http://www.trueobject.net/board/zboard.php?id=web_service_lecture&no=2