Web服務(wù)技術(shù)標(biāo)準(zhǔn)與規(guī)范
-
資源ID:158639209
資源大?。?span id="mzebxcnn0" class="font-tahoma">55.51KB
全文頁數(shù):10頁
- 資源格式: DOC
下載積分:9.9積分
快捷下載

會(huì)員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。
|
Web服務(wù)技術(shù)標(biāo)準(zhǔn)與規(guī)范
第十講 Web服務(wù)技術(shù)標(biāo)準(zhǔn)與規(guī)范
所謂Web服務(wù)(Web Services)是指由企業(yè)發(fā)布的完成其特別商務(wù)需求的在線應(yīng)用服務(wù),其它公司或應(yīng)用軟件能夠通過Internet來訪問并使用這項(xiàng)在線服務(wù)。Web服務(wù)技術(shù)促進(jìn)了Internet上企業(yè)之間的協(xié)作,使用Web服務(wù)可以使合作伙伴的信息系統(tǒng)之間更容易地進(jìn)行通信。但隨之而來的問題是:如何集成來自不同企業(yè)的服務(wù)?為了使Web服務(wù)易于使用,眾多組織已經(jīng)致力于Web服務(wù)技術(shù),進(jìn)行標(biāo)準(zhǔn)協(xié)議的制定,提供Web服務(wù)的創(chuàng)建工具和解決方案。
本講將以Web服務(wù)棧為中心介紹Web服務(wù)技術(shù)涉及的一些關(guān)鍵標(biāo)準(zhǔn)和規(guī)范,如SOAP、WSDL、UDDI等。Web服務(wù)標(biāo)準(zhǔn)本身是不斷發(fā)展變化的,文中著重介紹目前被普遍接受的底層標(biāo)準(zhǔn),并對(duì)還需要進(jìn)行標(biāo)準(zhǔn)化的領(lǐng)域進(jìn)行簡(jiǎn)單的討論。
1.Web服務(wù)
Web服務(wù)是可以在組織內(nèi)部或者公司之間的異構(gòu)計(jì)算資源中被共享、組合、使用和復(fù)用的商業(yè)資產(chǎn)。Web服務(wù)是一個(gè)可編程的部件,它提供一種易于通過Internet獲取的商業(yè)服務(wù)。Web服務(wù)可以是獨(dú)立的,也可以連接在一起向外部世界提供更強(qiáng)大的系統(tǒng)功能。
Web服務(wù)將逐漸成為構(gòu)建電子商務(wù)應(yīng)用的基礎(chǔ)體系結(jié)構(gòu)?;赪eb服務(wù)的體系結(jié)構(gòu)是從一個(gè)分布式面向?qū)ο蟛考南到y(tǒng)向一個(gè)服務(wù)網(wǎng)絡(luò)的邏輯演進(jìn),該服務(wù)網(wǎng)絡(luò)提供一個(gè)能夠跨企業(yè)集成的松散耦合的底層基礎(chǔ)結(jié)構(gòu)。
Web服務(wù)是基于Internet的模塊化應(yīng)用,它們執(zhí)行特定的商業(yè)任務(wù)并遵循特定的技術(shù)格式。如果應(yīng)用中的某過程可以在Internet上以一種標(biāo)準(zhǔn)格式被調(diào)用,稱之為Web服務(wù)的服務(wù)器;類似的,如果通過Internet調(diào)用本應(yīng)用以外的某過程,則是Web服務(wù)的客戶。因此,實(shí)質(zhì)上Web服務(wù)是Internet上應(yīng)用之間的客戶服務(wù)器,目的是實(shí)現(xiàn)B2B伙伴之間的個(gè)性化信息交換,并以一種易用的格式提供和發(fā)布應(yīng)用模塊。為了實(shí)現(xiàn)這種開放工作,必須要有標(biāo)準(zhǔn)的格式和方法。
幾乎所有的主流技術(shù)公司都已相繼涉足Web服務(wù)的標(biāo)準(zhǔn)化工作,參與了各種標(biāo)準(zhǔn)化組織。當(dāng)前,最主要的標(biāo)準(zhǔn)化組織是W3C(World Wide Web Consortium)。其它組織也做了大量的工作,如UDDI.org,OASIS,UN/CEFACT,BPMI.org,以及ebXML.org等。
Web服務(wù)棧(Web Services Stack)
Web服務(wù)不同于已有的構(gòu)件對(duì)象模型以及相關(guān)的對(duì)象模型協(xié)議,如CORBA和IIOP(Internet Inter-ORB Protocol)、COM和DCOM以及Java和RMI(Remote Method Invocation)。Web服務(wù)可以用任何語言編寫,并且可以使用HTTP訪問。從技術(shù)上看,一個(gè)Web服務(wù)是一個(gè)由內(nèi)容、應(yīng)用代碼、過程邏輯、或者這些部分的任意組合所構(gòu)成的XML對(duì)象,并且可以通過任何TCP/IP網(wǎng)絡(luò)訪問,只要網(wǎng)絡(luò)中使用SOAP標(biāo)準(zhǔn)集成,使用WSDL標(biāo)準(zhǔn)進(jìn)行自描述,使用UDDI標(biāo)準(zhǔn)在一個(gè)公共的或者私有的目錄中注冊(cè)和發(fā)現(xiàn)。
如圖1所示,Web服務(wù)由多個(gè)層構(gòu)成,這些層堆疊在一起形成了發(fā)現(xiàn)和調(diào)用一個(gè)獨(dú)立的Web服務(wù)所提供功能的標(biāo)準(zhǔn)機(jī)制的基礎(chǔ)。即,Web服務(wù)棧以層次結(jié)構(gòu)來表示,高層在低層的基礎(chǔ)之上構(gòu)建。
UDDI
Web服務(wù) & WSDL
HTTP/HTTPS, SMTP, FTP
SOAP/XML
服務(wù)發(fā)現(xiàn)層
服務(wù)描述層
基于XML的消息層
網(wǎng)絡(luò)層
圖1 Web服務(wù)棧
圖中HTTP提供了分布式應(yīng)用之間的通信機(jī)制,XML定義了數(shù)據(jù)交換和描述的格式,SOAP是調(diào)用Web服務(wù)的協(xié)議, WSDL描述Web服務(wù)的格式,而UDDI則是注冊(cè)、查找和使用Web服務(wù)的中樞組織。下面分別介紹這些協(xié)議及相關(guān)的規(guī)范。
2. HTTP
Web服務(wù)棧中的最底層是網(wǎng)絡(luò)層,也可以稱為協(xié)議層。分布式的應(yīng)用需要有網(wǎng)絡(luò)協(xié)議來定義兩個(gè)并發(fā)過程之間的通信機(jī)制。概念上,Web服務(wù)的設(shè)計(jì)是與協(xié)議無關(guān)的,在圖1的分層體系結(jié)構(gòu)模型中,從底向上任何標(biāo)準(zhǔn)的Internet協(xié)議都可以用于在網(wǎng)絡(luò)上調(diào)用Web服務(wù)。但目前主要是HTTP(Hypertext Transport Protocol)和HTTPS(Hypertext Transport Protocol Secure )協(xié)議。
HTTP/1.1是一個(gè)基于文本的、“請(qǐng)求-響應(yīng)”(request-response)型的協(xié)議,它規(guī)定一個(gè)客戶打開到服務(wù)器的一個(gè)連接,然后以專門的格式發(fā)送一個(gè)請(qǐng)求,服務(wù)器進(jìn)行響應(yīng),同時(shí)如果必要?jiǎng)t保持連接的打開狀態(tài)。HTTP使用的普遍性及其固有的穿防火墻的能力使它成為主導(dǎo)的Web服務(wù)網(wǎng)絡(luò)協(xié)議。但同時(shí)由于HTTP是基于文本的協(xié)議而缺乏表示遠(yuǎn)程過程調(diào)用(RPC)消息參數(shù)值的機(jī)制。
其它的請(qǐng)求/響應(yīng)類型的傳輸協(xié)議,如文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)和簡(jiǎn)單郵件協(xié)議(Simple Mail Transport Protocol,SMTP)也可以使用,但是并沒有在Web服務(wù)的各種標(biāo)準(zhǔn)中定義,目前也只有極少數(shù)實(shí)現(xiàn)支持這些協(xié)議。
另外,最近IBM發(fā)布了一個(gè)可靠通信協(xié)議的提案,稱作HTTPR。HTTPR在HTTP的基礎(chǔ)上加強(qiáng)了可靠性,在保持HTTP優(yōu)點(diǎn)的同時(shí)能夠保證消息可以不受阻礙地發(fā)送到目的地??煽康耐ㄐ艑?duì)Web服務(wù)來說是一個(gè)非常關(guān)鍵的方面,雖然目前對(duì)由協(xié)議層實(shí)現(xiàn)是否最適合仍然有爭(zhēng)議,但在不遠(yuǎn)的將來它肯定會(huì)以某種形式出現(xiàn)。
3.XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)
基于XML的消息層包括數(shù)據(jù)表示、數(shù)據(jù)格式和消息傳輸協(xié)議。XML為信息交換定義了描述和格式。
數(shù)據(jù)表示
HTTP是一種基于文本的協(xié)議,因而缺乏表示RPC消息中的參數(shù)值的機(jī)制,這也是XML作為Web服務(wù)的一個(gè)重要成分出現(xiàn)的原因。XML是一種元語言,可以通過標(biāo)準(zhǔn)的編碼和格式化信息的方法進(jìn)行跨平臺(tái)的數(shù)據(jù)交換。XML允許數(shù)據(jù)被串行化為易于被任何平臺(tái)解碼的消息格式,提供了在網(wǎng)絡(luò)應(yīng)用之間交換結(jié)構(gòu)化數(shù)據(jù)的機(jī)制。
XML采用純文本表示,設(shè)計(jì)的初衷是為了存儲(chǔ)、傳送和交換數(shù)據(jù)的。XML是一種標(biāo)記語言,標(biāo)記在XML中不是預(yù)先確定的,而必須由使用者自己定義。XML允許使用者自由發(fā)表有用的信息,不僅可以是有關(guān)數(shù)據(jù)結(jié)構(gòu)的,也可以是關(guān)于數(shù)據(jù)意義的。另外,XML文檔的結(jié)構(gòu)、內(nèi)容和外觀可以作為三個(gè)不同的部分進(jìn)行維護(hù),提供了更高的獨(dú)立性。
對(duì)于數(shù)據(jù)表示層來說,可擴(kuò)展性是一個(gè)關(guān)鍵因素。為了支持可擴(kuò)展性,Web服務(wù)需要一種機(jī)制以避免名字沖突,并允許一個(gè)程序只處理自己所關(guān)心的元素。XML名空間(namespaces)提供了一種簡(jiǎn)單、通用的方式以區(qū)分相同名字的元素或?qū)傩?。為了支持可擴(kuò)展性,XML中的每個(gè)元素和屬性都有一個(gè)相關(guān)的名空間URI。
數(shù)據(jù)格式
Web服務(wù)需要一種方法定義Web服務(wù)消息中使用的數(shù)據(jù)類型。XML Schema 規(guī)范標(biāo)準(zhǔn)化了一個(gè)描述XML數(shù)據(jù)類型的符號(hào)集,還定義了一個(gè)內(nèi)置簡(jiǎn)單數(shù)據(jù)類型的集合和在各XML文檔中建立元素類型的機(jī)制。XML Schema規(guī)定了XML文檔的邏輯結(jié)構(gòu),定義了元素、元素屬性以及元素和元素屬性之間的關(guān)系。
XML仍然處于不斷的發(fā)展中。需要說明的是,XML本身只是一種標(biāo)記語言,只是進(jìn)行描述,并不提供商務(wù)邏輯,Web服務(wù)提供對(duì)這些邏輯的訪問。這也是為什么Web服務(wù)的更高層的、基于XML概念同樣非常重要的原因。
4.SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問協(xié)議)
SOAP是目前被廣泛接受的消息傳輸協(xié)議。SOAP是一個(gè)為信息交換設(shè)計(jì)的輕量協(xié)議,用于在網(wǎng)絡(luò)應(yīng)用程序之間交換結(jié)構(gòu)化數(shù)據(jù),是一種基于XML的機(jī)制。SOAP主要是在分布的、分散的環(huán)境中提供了一個(gè)跨Internet調(diào)用服務(wù)的框架結(jié)構(gòu),并提供了獨(dú)立于編程語言和分布對(duì)象底層基礎(chǔ)結(jié)構(gòu)的跨平臺(tái)集成機(jī)制。SOAP代表了xml-rpc 的發(fā)展,已經(jīng)被W3C作為一種Internet標(biāo)準(zhǔn)采納。
SOAP是一個(gè)遠(yuǎn)程過程調(diào)用(RPC)協(xié)議,使用標(biāo)準(zhǔn)的Internet協(xié)議進(jìn)行傳輸:同步調(diào)用時(shí)的HTTP或異步調(diào)用時(shí)的SMTP。由于可以在HTTP上運(yùn)行,這使得SOAP在穿防火墻進(jìn)行操作的方面優(yōu)于DCOM、RMI和IIOP,而在嵌入設(shè)備上實(shí)現(xiàn)SOAP也比開發(fā)一個(gè)ORB更簡(jiǎn)單。
SOAP的主要設(shè)計(jì)目標(biāo)是簡(jiǎn)單性和可擴(kuò)充性。為了到達(dá)這兩個(gè)目標(biāo),SOAP中省略了在其它消息系統(tǒng)和分布式對(duì)象系統(tǒng)中常見的一些特性,如無用存儲(chǔ)單元收集、消息批處理等。
SOAP沒有定義一種編程模型或?qū)崿F(xiàn),而是定義了一個(gè)模塊化的包裝模型,并在模塊內(nèi)定義了編碼數(shù)據(jù)的編碼機(jī)制。這使得SOAP可以在從消息傳遞系統(tǒng)到遠(yuǎn)程過程調(diào)用的任何系統(tǒng)中應(yīng)用。
SOAP的組成
SOAP由四個(gè)部分組成:
? (1)一個(gè)SOAP封皮(Envelope),定義了描述消息所包含信息的框架結(jié)構(gòu),即消息中包含什么信息、由誰來處理以及是必需的或可選的。
? (2)一組SOAP編碼規(guī)則(Encoding rules),定義了一個(gè)串行化機(jī)制,用于交換應(yīng)用定義的數(shù)據(jù)類型的實(shí)例。SOAP編碼的類型使用簡(jiǎn)單的標(biāo)量類型和復(fù)合類型,如結(jié)構(gòu)和數(shù)組。這些類型以XML文檔元素的形式表現(xiàn),XML Schema規(guī)范中定義的數(shù)據(jù)類型以及這些數(shù)據(jù)類型的派生類型都可以直接用作SOAP元素。
? (3)SOAP RPC表示,定義如何表示遠(yuǎn)程過程調(diào)用和響應(yīng)。SOAP的設(shè)計(jì)目標(biāo)之一是用XML的可擴(kuò)展性和靈活性封裝RPC功能,在SOAP1.2中詳細(xì)定義了RPC和響應(yīng)的統(tǒng)一表示,將對(duì)一個(gè)方法的調(diào)用和響應(yīng)作為結(jié)構(gòu)來建模,結(jié)構(gòu)中包含了返回值,或者還可能包括傳入的參數(shù)。
? (4)SOAP綁定(binding),定義如何使用底層傳輸協(xié)議進(jìn)行SOAP消息的交換。雖然SOAP本身可以和多種協(xié)議結(jié)合使用,但SOAP1.2中只描述了在HTTP中的使用。SOAP和HTTP綁定可以同時(shí)使用SOAP的形式方法與分散的靈活性以及HTTP豐富的特性集。在HTTP中使用SOAP并不意味著SOAP覆蓋了HTTP現(xiàn)有的語義,而是SOAP繼承了HTTP的語義。
SOAP消息
SOAP消息是用XML編碼的文檔,由三個(gè)部分組成:
? (1)SOAP封皮(SOAP Envelope),是描述SOAP消息的XML文檔的頂點(diǎn)元素。
? (2)SOAP消息頭(SOAP Header),提供了一種靈活的機(jī)制對(duì)SOAP消息以分散的、模塊化的方式進(jìn)行擴(kuò)充,而通信的各方(SOAP發(fā)送者,SOAP接收者以及SOAP中介)不必預(yù)先知道。SOAP消息頭是可選的。
? (3)SOAP消息體(SOAP Body),定義了一個(gè)簡(jiǎn)單的機(jī)制來交換要發(fā)送給最終SOAP接收者的消息中的必要信息,是這些信息的容器。典型的使用是編組RPC調(diào)用和SOAP錯(cuò)誤報(bào)告。
SOAP消息交換模型
SOAP消息是單方向的,從一個(gè)SOAP發(fā)送者(sender)到一個(gè)SOAP接收者(receiver)。但單獨(dú)的消息通??梢员唤M合在一起形成其它消息機(jī)制。例如,SOAP通過在HTTP請(qǐng)求中提供一個(gè)SOAP請(qǐng)求消息和在HTTP響應(yīng)中提供一個(gè)SOAP響應(yīng)消息實(shí)現(xiàn)HTTP的請(qǐng)求/響應(yīng)消息模型。
SOAP消息交換模型要求接收到一個(gè)SOAP消息的應(yīng)用程序執(zhí)行下列操作:
(1)識(shí)別SOAP消息中意圖供給本應(yīng)用的部分,本應(yīng)用可以作為SOAP中介將消息的其它部分傳遞給另外的應(yīng)用。
(2)檢驗(yàn)SOAP消息中指定的所有必須處理的部分,并進(jìn)行相應(yīng)的處理。
(3)如果SOAP應(yīng)用不是消息的最終目的地,它應(yīng)該在刪除所有自己消耗的部分后將消息轉(zhuǎn)發(fā)給消息要供給的下一個(gè)應(yīng)用。
SOAP只是一種包裝和綁定調(diào)用一個(gè)Web服務(wù)所需信息的方式, Web服務(wù)也可以使用其它的編碼技術(shù)調(diào)用。另外,SOAP本身沒有嚴(yán)格地歸入Web服務(wù),SOAP 可以作為一種對(duì)任何類型的遠(yuǎn)程對(duì)象或過程的訪問機(jī)制使用,也可以只是一個(gè)簡(jiǎn)單的消息傳遞機(jī)制。
除了SOAP以外,W3C創(chuàng)建的XMLP工作組還建立了XML協(xié)議(Extensible Markup Language Protocol,XMLP)。XMLP是類似于SOAP的XML消息協(xié)議,包括封皮、對(duì)象串行化方式、HTTP傳輸綁定以及進(jìn)行遠(yuǎn)程過程調(diào)用的方式幾個(gè)部分。甚至有人認(rèn)為XMLP將逐步取代SOAP。
5.WSDL(Web Services Description Language,Web服務(wù)描述語言)
Web服務(wù)的目標(biāo)之一是允許應(yīng)用程序以標(biāo)準(zhǔn)的方式在兩個(gè)或多個(gè)同等的服務(wù)之間進(jìn)行選擇,因?yàn)橛袝r(shí)應(yīng)用可以由作為支持網(wǎng)絡(luò)的服務(wù)而實(shí)現(xiàn)的構(gòu)件構(gòu)造而成,甚至可以從這些服務(wù)中進(jìn)行動(dòng)態(tài)選擇。服務(wù)描述層定義了為程序提供足夠信息所需的描述機(jī)制,使程序能夠根據(jù)一定的準(zhǔn)則選擇服務(wù),如服務(wù)的質(zhì)量、安全性、可靠性等。
到Web服務(wù)的接口由基于XML的WSDL定義,它提供了應(yīng)用訪問指定的Web服務(wù)所必需的全部信息,描述服務(wù)提供了什么功能、服務(wù)位于何處以及服務(wù)如何調(diào)用。
WSDL以XML格式描述網(wǎng)絡(luò)服務(wù),將服務(wù)描述為在包含面向過程或面向文檔信息的消息上進(jìn)行操作的一組端點(diǎn)。操作和消息是抽象描述的,然后綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式以定義一個(gè)端點(diǎn)。相關(guān)的具體端點(diǎn)被組合成為抽象端點(diǎn)(服務(wù))。WSDL 是可擴(kuò)展的,允許描述任何端點(diǎn)和消息,而不考慮通信使用的消息格式或網(wǎng)絡(luò)協(xié)議。
WSDL使用下面的元素定義網(wǎng)絡(luò)服務(wù):
? 類型(Types),使用某種類型系統(tǒng)的數(shù)據(jù)類型定義的容器。WSDL并沒有引入新的類型定義語言,而將XSD作為自己的標(biāo)準(zhǔn)類型系統(tǒng),并允許通過可擴(kuò)展性使用其它的類型定義語言。
? 消息(Message),對(duì)要傳送的數(shù)據(jù)的一個(gè)抽象定義。
? 操作(Operation),對(duì)服務(wù)支持的動(dòng)作的抽象描述。
? 端口類型(Port Type),一個(gè)或多個(gè)端點(diǎn)支持的操作的一個(gè)抽象集合。
? 綁定(Binding),對(duì)特定端口類型的一個(gè)具體協(xié)議和數(shù)據(jù)格式規(guī)格。
? 端口(Port),一個(gè)單獨(dú)的端點(diǎn),由一個(gè)綁定和一個(gè)網(wǎng)絡(luò)地址組合在一起定義。
? 服務(wù)(Service),一組相關(guān)的端點(diǎn)的集合。
一個(gè)Web服務(wù)由一組端口定義,而端口由綁定到一個(gè)具體協(xié)議和數(shù)據(jù)格式規(guī)范的一組抽象操作和消息定義。操作和消息的抽象是為了使它們可以復(fù)用和綁定到不同的協(xié)議和數(shù)據(jù)格式,如SOAP、 HTTP GET/POST或MIME。
在WSDL中,端點(diǎn)和消息的抽象定義是和它們的具體網(wǎng)絡(luò)配置和數(shù)據(jù)格式綁定相分離的;另外,WSDL定義了一個(gè)公共的綁定機(jī)制,用于將特定的協(xié)議或數(shù)據(jù)格式或結(jié)構(gòu)連接到抽象的消息、操作或端點(diǎn),這些都允許對(duì)抽象定義的復(fù)用。
WSDL目前已經(jīng)被廣泛支持,但還不是W3C推薦的標(biāo)準(zhǔn)語言。
6.UDDI(Universal Description,Discovery,and Integration,統(tǒng)一描述、發(fā)現(xiàn)和集成)
面對(duì)極度豐富的服務(wù),最常出現(xiàn)的問題是“在哪里以及如何找到需要的信息?”。統(tǒng)一UDDI規(guī)范在底層協(xié)議的基礎(chǔ)上又定義了一層,在這一層,不同的企業(yè)能夠以相同的方式描述自己提供的服務(wù)和查詢對(duì)方提供的服務(wù)。
UDDI是一套基于Web的、分布式的、為Web服務(wù)提供的信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的Web服務(wù)注冊(cè)以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。
信息結(jié)構(gòu)
UDDI為表示XML中商業(yè)服務(wù)描述定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn),提供了更高層次的商業(yè)信息以補(bǔ)充WSDL中的說明。UDDI定義了四種基本的結(jié)構(gòu):
? 商業(yè)實(shí)體(Business entity),描述商業(yè)信息,如名稱、類型等。
? 商業(yè)服務(wù)(Business service),已發(fā)布的Web服務(wù)的集合。
? 綁定模板(Binding template),訪問信息,如URL。
? 技術(shù)規(guī)范(tModel),對(duì)服務(wù)類型的技術(shù)規(guī)格說明,如接口定義、消息格式、消息協(xié)議、安全協(xié)議等。
服務(wù)發(fā)布和發(fā)現(xiàn)
在進(jìn)行一個(gè)Web服務(wù)調(diào)用之前,必須先找到具有所需服務(wù)的企業(yè),發(fā)現(xiàn)調(diào)用接口和語義,然后編寫或配置自己的軟件以便與服務(wù)合作。UDDI的核心部件是UDDI商業(yè)注冊(cè),它用一個(gè)XML文檔來描述企業(yè)及其提供的Web服務(wù)。UDDI 商業(yè)注冊(cè)是一個(gè)基于SOAP的Web服務(wù),提供企業(yè)用于將它們的服務(wù)發(fā)布到注冊(cè)中心的接口。注冊(cè)中心是分布式的,彼此之間不斷進(jìn)行復(fù)制操作。
Web服務(wù)基本上是機(jī)器到機(jī)器的通信,為了有效工作,這種體系結(jié)構(gòu)必須具有進(jìn)行基于Web的應(yīng)用和業(yè)務(wù)過程集成的有效工具。UDDI商業(yè)注冊(cè)中心包含三類信息,企業(yè)可以通過這些信息發(fā)現(xiàn)一個(gè)Web服務(wù)。
? 白頁,包括企業(yè)的名稱、地址、聯(lián)系方式和企業(yè)標(biāo)識(shí),并允許其它公司按照名稱查找目錄。
? 黃頁,包括基于標(biāo)準(zhǔn)分類法的行業(yè)類別。
? 綠頁,包括了關(guān)于該企業(yè)所提供的Web服務(wù)的技術(shù)信息,其形式可能是一些指向文件或URL的指針,而這些文件或URL是為服務(wù)發(fā)現(xiàn)機(jī)制服務(wù)的。綠頁還允許注冊(cè)的公司之間使用XML進(jìn)行連接,提供了業(yè)務(wù)過程自動(dòng)化的關(guān)鍵機(jī)制。
編程接口
UDDI規(guī)范提供了編程接口,允許商業(yè)注冊(cè)一個(gè)Web服務(wù),以及查找指定Web服務(wù)的注冊(cè)。一旦想要的Web服務(wù)被確定,將提供一個(gè)指向WSDL文檔所在位置的指針。編程接口分為查詢API和發(fā)布API兩個(gè)邏輯部分。查詢API又分為兩個(gè)部分:一部分用來構(gòu)造搜索和瀏覽UDDI注冊(cè)信息的程序,另一部分在Web服務(wù)出現(xiàn)錯(cuò)誤時(shí)使用。發(fā)布API可以用來創(chuàng)建各種類型的工具,以直接與UDDI注冊(cè)中心進(jìn)行交互,便于企業(yè)技術(shù)人員管理發(fā)布信息。
使用UDDI
UDDI規(guī)范包含了對(duì)基于Web的UDDI商業(yè)注冊(cè)中心可以實(shí)施的整套共享操作。一般來說,程序或程序員通過UDDI商業(yè)注冊(cè)中心來獲得Web服務(wù)的位置及其技術(shù)信息。其中對(duì)于程序員來說,是對(duì)自己的系統(tǒng)實(shí)現(xiàn)準(zhǔn)備,以使自己的系統(tǒng)能和那些Web服務(wù)實(shí)現(xiàn)訪問兼容,或是描述自己的Web服務(wù)從而能讓別人使用。從商業(yè)層次上來說,UDDI商業(yè)注冊(cè)中心可以被用于核查某個(gè)合作伙伴是否擁有特定的Web服務(wù)的調(diào)用接口,或是找出在某行業(yè)中能提供某種類型服務(wù)的公司,并確定某合作伙伴的Web服務(wù)的技術(shù)描述及交互時(shí)所需的技術(shù)細(xì)節(jié)。
UDDI 是完全可選的,也就是說,具有Web服務(wù)的公司,如果只是想對(duì)有限的人員或設(shè)備提供特定功能,它們不需要對(duì)外發(fā)布它們的服務(wù)。
其它標(biāo)準(zhǔn)
除了UDDI以外,服務(wù)發(fā)現(xiàn)層還有其它一些標(biāo)準(zhǔn)。如由Microsoft開發(fā)的DISCO(Discovery of Web Services)規(guī)范。DISCO定義了一個(gè)基于XML的發(fā)現(xiàn)文檔格式和一個(gè)檢索該發(fā)現(xiàn)文檔的協(xié)議。DISCO允許開發(fā)人員通過一個(gè)HTTP GET操作發(fā)現(xiàn)服務(wù)。使用發(fā)現(xiàn)文檔格式,可以將一個(gè)發(fā)現(xiàn)文檔發(fā)送到一臺(tái)遠(yuǎn)程服務(wù)器,如果存在支持SOAP的Web服務(wù),則收回一個(gè)服務(wù)所提供的WSDL描述。
7.服務(wù)集成和工作流
工作流的概念在設(shè)計(jì)電子商務(wù)應(yīng)用時(shí)愈加重要。當(dāng)一個(gè)企業(yè)需要集成來自多方的Web服務(wù)并為終端用戶組織這些服務(wù)時(shí),必須掌握其系統(tǒng)的過程和順序。對(duì)于這些具有異步特征的應(yīng)用,適合使用工作流引擎。要使Web服務(wù)的實(shí)現(xiàn)不僅僅停留在簡(jiǎn)單的請(qǐng)求/響應(yīng)模式上,商業(yè)過程協(xié)作和工作流是必不可少的,其中包括跨企業(yè)邊界的Web服務(wù)的合成與自動(dòng)化。要成功進(jìn)行企業(yè)間的自動(dòng)化和協(xié)作的必需條件是要有一個(gè)標(biāo)準(zhǔn)化的商業(yè)協(xié)議來描述這些商業(yè)過程。服務(wù)工作流領(lǐng)域目前尚未形成固定的標(biāo)準(zhǔn),有一定影響的是WSFL、Xlang以及BPMI。
WSFL
Web服務(wù)流程語言(Web Services Flow Language ,WSFL)是一個(gè)描述商業(yè)過程的規(guī)范。WSFL提出了兩種Web服務(wù)組合的類型:一是商業(yè)過程,一是合作伙伴交互。商業(yè)過程作為一組為達(dá)到一個(gè)特定的商業(yè)目標(biāo)而順序執(zhí)行的Web服務(wù)建模。合作伙伴交互描述Web服務(wù)之間如何彼此交互。Web服務(wù)被連接在一起以表明一個(gè)Web服務(wù)與另一個(gè)Web服務(wù)接口的操作交互作用。
XLang
Xlang是Microsoft的BizTalk服務(wù)器使用的XML商業(yè)過程語言。Xlang用于描述商業(yè)過程,這些過程在運(yùn)行時(shí)由BizTalk 控制引擎(Orchestration engine)執(zhí)行。Xlang還允許將Web服務(wù)結(jié)合到商業(yè)過程中以及Web服務(wù)的組合。另外,Xlang支持補(bǔ)償過程。Xlang不支持代價(jià)較高的兩階段提交協(xié)議,而是提供了一個(gè)可供選擇的開放式模型的表示方法,其中可以為活動(dòng)明確指定抵消該活動(dòng)影響的補(bǔ)償活動(dòng)。
由于Microsoft先前與IBM在WSDL和UDDI上的合作,有人認(rèn)為將來二者可能會(huì)向W3C提出將Xlang和WSFL結(jié)合起來的提議。
BPMI
BPMI(Business Process Management Initiative)推進(jìn)公共商業(yè)過程的標(biāo)準(zhǔn)化。這些過程可能跨多個(gè)應(yīng)用、部門或商業(yè)合作伙伴,可能在防火墻之后或者可以通過Internet訪問。BPMI.org制定了一些開放規(guī)范,如BPML和BPQL,這使得可以對(duì)電子商務(wù)過程用即將出現(xiàn)的BPMS(Business Process Management System)進(jìn)行基于標(biāo)準(zhǔn)的管理。
? BPML(Business Process Modeling Language),是商業(yè)過程建模的元語言。BPML將商業(yè)過程定義為為了達(dá)到一個(gè)共同目標(biāo)在參與者和根據(jù)定義的規(guī)則集合執(zhí)行的活動(dòng)之間的交互作用。
? BPQL(Business Process Query Language)是到一個(gè)過程服務(wù)器的管理接口,允許商業(yè)分析員查詢由過程服務(wù)器管理的過程實(shí)例的狀態(tài),并控制過程實(shí)例的執(zhí)行。該接口是基于SOAP的。為了過程的注冊(cè)、廣告和發(fā)現(xiàn),由過程庫管理的過程模型通過BPQL接口可以作為UDDI服務(wù)對(duì)外提供。
BPML和BPQL都是開放規(guī)范。
8.其它相關(guān)標(biāo)準(zhǔn)和領(lǐng)域
其它許多組織在Web服務(wù)規(guī)范的制定方面也做了大量的工作。這里只簡(jiǎn)單介紹幾種比較知名的規(guī)范。
ebXML
EbXML的結(jié)構(gòu)類似Web服務(wù)棧,是在Internet上用標(biāo)準(zhǔn)技術(shù)引導(dǎo)電子商務(wù)的協(xié)議和規(guī)范的一個(gè)棧。EbXML曾被考慮作為Web服務(wù)的另一個(gè)選擇,其時(shí)間也早于Web服務(wù)模型。然而這兩個(gè)模型之間有一些重疊,而ebXML更注重EDI方式的信息交換。
一種可能的設(shè)想是Web服務(wù)模型和ebXML之間的逐步合并。UN/CEFACT和OASIS最近已經(jīng)采納SOAP作為ebXML消息傳遞底層結(jié)構(gòu)的基礎(chǔ)。W3C也積極考慮ebXML規(guī)范,并將并入規(guī)范中那些滿足作為標(biāo)準(zhǔn)化Web服務(wù)體系結(jié)構(gòu)的需求的方面。
JAX Pack
JAX Pack是Sun封裝了Java領(lǐng)域的各種標(biāo)準(zhǔn)的結(jié)果。JAX是一組XML的Java API,其設(shè)計(jì)支持Web服務(wù)標(biāo)準(zhǔn)API,包括SOAP、XMLP、WSDL和UDDI等。
JAX Pack中包括的API如下:
? JAXP(Java API for XML Parsing),包含SAX(Simple API for XML),DOM(Document Object Model)和XSLT。
? JAXB(Java API for XML Binding),一種將XML數(shù)據(jù)類型定義編譯到能夠?qū)ML讀入Java對(duì)象并將再其寫回的Java類中的機(jī)制。
? JAXM(Java API for XML-based Messaging),一個(gè)發(fā)送消息的基于SOAP的協(xié)議。
? JAXR (Java API for XML Registries),一個(gè)包羅眾多的規(guī)范,其中為UDDI和ebXML注冊(cè)及其它可能的注冊(cè)提供了統(tǒng)一接口。
? JAX-RPC (Java API for XML-based Remote Process Communication),一個(gè)請(qǐng)求遠(yuǎn)程服務(wù)器上操作的基于SOAP的協(xié)議。
除了上面描述的各種規(guī)范以外,還需要提及一些其它的重要領(lǐng)域,這些領(lǐng)域涉及Web服務(wù)棧的所有層,其中包括安全性、管理、服務(wù)質(zhì)量和事務(wù)等。在Web服務(wù)具有轉(zhuǎn)換企業(yè)商業(yè)關(guān)系的能力之前,企業(yè)需要這些額外的特性以及隨之而來的附加機(jī)制、安全、身份確認(rèn)、合同管理、質(zhì)量控制等。其中最重要的是安全性和事務(wù)。
安全性
XML密鑰管理系統(tǒng)(XML Key Management System,XKMS)是將PKI和數(shù)字化證書與XML應(yīng)用集成的結(jié)果,由W3C XML簽名工作組開發(fā)。該領(lǐng)域的其它規(guī)范包括安全服務(wù)標(biāo)記語言(Security Services Markup Language,S2ML)和AuthXML,正由OASIS XML安全服務(wù)委員會(huì)支持其統(tǒng)一標(biāo)準(zhǔn)化。
BTP
事務(wù)在Web服務(wù)中有獨(dú)特的需求。在保證相關(guān)聯(lián)的工作流可靠協(xié)調(diào)的同時(shí),事務(wù)協(xié)議必須能夠處理長(zhǎng)時(shí)間運(yùn)行的企業(yè)之間的商業(yè)事務(wù)。商務(wù)事務(wù)協(xié)議(Business Transaction Protocol,BTP)是一個(gè)基于XML的規(guī)范,用于描述和管理這些Internet上的復(fù)雜的、多步事務(wù)。
BTP為XML消息接口提供了一個(gè)開放規(guī)范,以支持來自不同Internet貿(mào)易伙伴的Web服務(wù)的協(xié)調(diào)。另外,BTP定義了一個(gè)模型來定義和管理這些交互以保證可靠消息傳輸和商業(yè)過程的完成而無論其執(zhí)行多長(zhǎng)時(shí)間。
BTP最初由BEA開發(fā)并提交給OASIS商業(yè)事務(wù)技術(shù)委員會(huì)。該委員會(huì)的任務(wù)是定義需求、技術(shù)評(píng)估,最后產(chǎn)生一個(gè)商業(yè)事務(wù)協(xié)議的推薦規(guī)范,以補(bǔ)充現(xiàn)存的Web服務(wù)標(biāo)準(zhǔn)。
9.小結(jié)
上面對(duì)Web服務(wù)相關(guān)標(biāo)準(zhǔn)、規(guī)范和組織的介紹可以通過圖2進(jìn)行一個(gè)小結(jié)。
事
務(wù)
理
服務(wù)集成/工作流
服務(wù)發(fā)布
服務(wù)發(fā)現(xiàn)
服務(wù)描述
基于XML的消息傳遞
消息傳遞協(xié)議
數(shù)據(jù)格式規(guī)格說明
數(shù)據(jù)表示
網(wǎng)絡(luò)
管
理
安
全
服務(wù)質(zhì)量
理
HTTP W3C
HTTPR IBM
XML W3C
SOAP W3C
XMLP W3C
WSDL W3C
UDDI UDDI.org
DISCO Microsoft
WSFL IBM
Xlang Microsoft
BPML BPMI.org
ebXML ebXML.org
UDDI UDDI.org
ebXML ebXML.org
較穩(wěn)定,不易改變
較不穩(wěn)定,易改變
圖2 Web服務(wù)棧相關(guān)的各種標(biāo)準(zhǔn)和規(guī)范小結(jié)
至此,我們可以了解到Web服務(wù)領(lǐng)域的復(fù)雜性及其不斷變化的特性。上文描述的Web服務(wù)棧是一個(gè)開放規(guī)范集,其中有的是現(xiàn)有的Internet標(biāo)準(zhǔn),有的還只是被廣為接受的規(guī)范,正在逐步成為真正的標(biāo)準(zhǔn)。需要注意的是由于這些標(biāo)準(zhǔn)是不斷發(fā)展變化的,因而在開發(fā)中使用時(shí)要考慮到變更是不可避免的,應(yīng)該始終依據(jù)通用的設(shè)計(jì)原則和體系結(jié)構(gòu)。
Web服務(wù)棧定義了如何建造基于Web的解決方案,是實(shí)現(xiàn)互操作性的基礎(chǔ)。Web服務(wù)是否成功,首要因素在于能真正支持互操作性的開放標(biāo)準(zhǔn)。為此需要建立一致的標(biāo)準(zhǔn)和消除差異。各方面的參與者何時(shí)能夠?qū)@些標(biāo)準(zhǔn)達(dá)成一致意見對(duì)Web服務(wù)的成功程度起著決定性作用。
參考文獻(xiàn)
1. Greg Heidel,Web Services Standards,White Paper,Momentum Software Inc.
2. SOAP Specification V1.1, W3C Note 08,2000.5
3. SOAP Version 1.2,W3C Draft,2001.7
4. WSDL Specification V1.1, W3C Note 15,2001.3
5. UDDI Specification,uddi.org,2000.9
6. UDDI Technical White Paper,uddi.org,2000.9
7. Business Process Management Language Specification,BPMI.org Draft0.4,2001.3
8. XLANG Specification,Microsoft Corporation,2001