簡(jiǎn)介 什么是 soap? 常見(jiàn)的互操作性問(wèn)題 傳輸問(wèn)題 xml 問(wèn)題 soap 問(wèn)題 后續(xù)話題
簡(jiǎn)介 當(dāng)前有多種創(chuàng)建應(yīng)用程序的平臺(tái)。但每種平臺(tái)都習(xí)慣于使用自身的協(xié)議(本質(zhì)上通常是二進(jìn)制代碼)來(lái)實(shí)現(xiàn)機(jī)器間的集 成。因此,跨平臺(tái)的應(yīng)用程序在數(shù)據(jù)共享方面的能力相當(dāng)有限。認(rèn)識(shí)到這些限制后,人們一直在致力于建立有關(guān)數(shù)據(jù)格式 和數(shù)據(jù)交換方面的標(biāo)準(zhǔn),藉此以實(shí)現(xiàn)“不論服務(wù)采用何種軟件,使用何種硬件,都能夠跨越這一傳統(tǒng)的界限以 web 的形式 無(wú)縫地將它們集成在一起”這一遠(yuǎn)景目標(biāo)。目前,這一目標(biāo)已迅速發(fā)展成為一種新的計(jì)算范例。
該目標(biāo)的核心是互操作性概念,即不同系統(tǒng)能夠無(wú)縫地進(jìn)行通信和共享數(shù)據(jù)。這也是 web 服務(wù)追求的目標(biāo)。web 服務(wù)是一 種可以用標(biāo)準(zhǔn) internet 協(xié)議來(lái)訪問(wèn)的可編程應(yīng)用邏輯;從另一個(gè)角度來(lái)說(shuō),web 服務(wù)是有關(guān)機(jī)器間和應(yīng)用程序間透明通 信的、借助于 web 的標(biāo)準(zhǔn)的具體實(shí)現(xiàn)。
目前,實(shí)現(xiàn)機(jī)器間消息傳遞的 web 服務(wù)技術(shù)多種多樣,例如簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (simple object access protocol, soap)、web 服務(wù)說(shuō)明語(yǔ)言 (web service description language, wsdl) 和超文本傳輸協(xié)議 (hypertext transfer protocol, http)。這些消息的復(fù)雜程度各不相同,既有簡(jiǎn)單的方法調(diào)用,也有復(fù)雜的訂單提交。在 web 服務(wù)的功能中, 最一般但又較高級(jí)的功能是實(shí)現(xiàn) rpc(遠(yuǎn)程過(guò)程調(diào)用)形式的通信(通過(guò) rpc,一臺(tái)計(jì)算機(jī)上的程序可以執(zhí)行另一臺(tái)計(jì)算 機(jī)的程序。)本文從實(shí)用的角度介紹了在使用 soap 進(jìn)行 rpc 形式的通信時(shí)當(dāng)前常見(jiàn)的互操作性問(wèn)題,以后還將撰文探討 有關(guān)通過(guò) soap、wsdl 以及其它協(xié)議傳送消息的問(wèn)題。
問(wèn)題就在這兒:如果服務(wù)器要求空值 soapaction,有些客戶端將無(wú)法滿足這一要求,因?yàn)椴⒎撬?http 客戶端 api 都 具有設(shè)置空 http 標(biāo)頭值的方法。這種問(wèn)題可能存在兩種解決方法:修正客戶端 api 和/或確保服務(wù)器不要求空值 soapaction。通常,避免這類問(wèn)題的唯一方法是確保所使用的 http api 穩(wěn)定強(qiáng)壯,并且已知可以在 web 上工作。即便如 此,這類問(wèn)題仍可能出現(xiàn);要徹底消除它們,測(cè)試可能是唯一的方法。
xml 問(wèn)題 這是可能存在的第二類互操作性問(wèn)題,它們涉及到 xml 語(yǔ)法分析和 xsd 架構(gòu)處理。soap 使用 xml 和 xml 架構(gòu)作為核 心,因此這兩者的互操作性是 soap 互操作性的基礎(chǔ)。
另外,有關(guān) xml web 服務(wù)的許多討論和測(cè)試已經(jīng)在 http://groups.yahoo.com/group/soapbuilders(英文)、 http://www.mssoapinterop.org/(英文)和 http://www.xmethods.net/ilab/(英文)等站點(diǎn)上進(jìn)行。這些站點(diǎn)包含到許 多互操作性測(cè)試端點(diǎn)的鏈接。構(gòu)建 soap 堆棧的所有人員都應(yīng)該閱讀這些檔案并參與互操作性測(cè)試。
后續(xù)話題 本文簡(jiǎn)要概括了在 xml web 服務(wù)領(lǐng)域中發(fā)現(xiàn)的一些早期互操作性問(wèn)題。不過(guò),這方面的討論并不會(huì)就此停止。除了通過(guò) http 進(jìn)行 rpc 調(diào)用之外,soap 還有許多更為有趣的情況需要討論。其中包括“document”形式的消息傳遞、基于 smtp 和其它傳輸機(jī)制的 soap、wsdl 以及各種 soap 標(biāo)頭測(cè)試 - 所有這些都值得在今后的文章中進(jìn)行討論。