當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
Web服務(wù)內(nèi)幕,第3部分:Apache和Microsoft -- 良好的合作
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
AMTeam.orgWeb服務(wù)內(nèi)幕,第3部分:Apache和Microsoft --
良好的合作
-- SOAP 互操作性就將來(lái)臨
James Snell (
軟件工程師,Emerging Technologies,IBM
2001 年 5 月
在“Web 服務(wù)內(nèi)幕”的這個(gè)部分中,James Snell 通過(guò)演示使用
Microsoft SOAP 工具包 Beta 2 獲得 Apache 基于 SOAP 的 Web 服務(wù)是如此的輕松,表明 Apache 和 Microsoft
可以很好地合作。
Web
服務(wù)的概念終于開(kāi)始為人們所接受。但當(dāng)您嘗試著去實(shí)現(xiàn)它時(shí),重要的是不要忘記,無(wú)論是開(kāi)發(fā)平臺(tái)還是編程語(yǔ)言,無(wú)縫跨平臺(tái)互操作性是這項(xiàng)技術(shù)的推動(dòng)力。如果您不把互操作性的問(wèn)題確定下來(lái),各種
SOAP 和 Web 服務(wù)實(shí)現(xiàn)都將在進(jìn)行信息傳遞的時(shí)候遇到故障。Web 服務(wù)則會(huì)成為又一個(gè)失敗的試驗(yàn)。
IBM、Microsoft 和
Apache
許多人可能都知道,去年春天 IBM 和 Microsoft 都發(fā)行了實(shí)現(xiàn) SOAP 的第一批版本。(后來(lái) IBM
把它的代碼給了 Apache,啟動(dòng)了現(xiàn)在的 Apache SOAP 項(xiàng)目計(jì)劃。)但是,盡管市場(chǎng)上所有有關(guān) SOAP
的著作都承諾其平臺(tái)互操作性,但工具卻并不能提供這一點(diǎn)。在 SOAP 實(shí)現(xiàn)方式中有很多錯(cuò)誤和細(xì)微差別,使得兩種工具間幾乎不能傳遞信息。但情況正開(kāi)始改變。由于
Apache SOAP 項(xiàng)目和 Microsoft
兩方面成員所作的一致努力,互操作性已成為一個(gè)中心議題。很多最初的問(wèn)題已經(jīng)消失,遺留的少數(shù)不兼容問(wèn)題也正被快速而順利地解決。
請(qǐng)注意:為了試驗(yàn)這里的兩個(gè)示例,您需要下載最新版 Apache SOAP (2.1 版) 和 Microsoft SOAP 工具包 (Beta 2 或以上)。請(qǐng)參閱參考資料。
互操作性 -- xsi:type
屬性的問(wèn)題
如果閱讀過(guò) developerWorks 上其他討論 Web
服務(wù)體系結(jié)構(gòu)的文章,那么您一定很熟悉以下的示意圖及其代表的含義。(如您沒(méi)有閱讀過(guò)這些文章,我強(qiáng)烈建議您上圖書(shū)館看一看。)
圖 1: Web 服務(wù)體系結(jié)構(gòu)的基本組件
圖 1 代表 Web 服務(wù)體系結(jié)構(gòu)的三個(gè)基本組件所執(zhí)行的三個(gè)基本操作:
服務(wù)提供者通過(guò)在服務(wù)代理者那里注冊(cè)來(lái)配置和發(fā)布服務(wù);
服務(wù)請(qǐng)求者通過(guò)查找服務(wù)代理者那里的被發(fā)布服務(wù)登記記錄來(lái)找到服務(wù);
服務(wù)請(qǐng)求者綁定服務(wù)提供者并使用可用的服務(wù)。
在
Web 服務(wù)的世界里,三個(gè)操作都包含三個(gè)受到稱(chēng)贊的、和截然不同的技術(shù):
發(fā)布的服務(wù)使用“通用描述、發(fā)現(xiàn)和集成(UDDI) API”;
查找服務(wù)使用 UDDI 和 Web
服務(wù)描述語(yǔ)言的組合(WSDL);
綁定服務(wù)處理 WSDL 和簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)。
從最基礎(chǔ)的層次上來(lái)看,綁定操作是三者中最重要的。它包含服務(wù)的實(shí)際使用,這也是發(fā)生大多數(shù)互操作性問(wèn)題的地方。簡(jiǎn)單地說(shuō),是服務(wù)提供者和服務(wù)請(qǐng)求者對(duì)
SOAP 規(guī)范的全力支持解決了這些問(wèn)題,并實(shí)現(xiàn)了無(wú)縫互操作性。
不幸的是,這個(gè)簡(jiǎn)單的解決方案聽(tīng)起來(lái)容易實(shí)現(xiàn),但實(shí)際上卻難得多。SOAP 的許多可選組件形成的靈活性、及其固有的綜合單一性使得我們?cè)趪L試實(shí)現(xiàn)它時(shí)會(huì)受到挫折。舉個(gè)例子,Microsoft 和 Apache SOAP 工具包間產(chǎn)生的 xsi:type 屬性沖突是個(gè)惱人的小問(wèn)題,它可以導(dǎo)致一段時(shí)間內(nèi)工具間互操作性的完全中斷。
不要忘記,根據(jù) SOAP 規(guī)范,一個(gè)信封中包含的各個(gè)元素可能選擇性地使用 xsi:type 屬性來(lái)識(shí)別其包含的數(shù)據(jù)類(lèi)型。如果服務(wù)提供者和請(qǐng)求者有一些其它方式來(lái)傳遞此信息,則它不必被包含在信封中。 xsi:type 只有當(dāng)無(wú)其它方式傳遞這些數(shù)據(jù)類(lèi)型時(shí),才應(yīng)使用這個(gè)屬性。
為了解決這一問(wèn)題,Microsoft 建立了一個(gè)外部服務(wù)描述文檔的相關(guān)性,它描述了數(shù)據(jù)類(lèi)型,且能被服務(wù)提供者和請(qǐng)求者訪問(wèn)。Apache 要求任何時(shí)候都要包含 xsi:type 屬性。
這兩種方法都是“合法 SOAP”(盡管 Apache 采取的實(shí)現(xiàn)方法被認(rèn)為更合法和更固定一些),但是它們彼此不兼容。附帶補(bǔ)充一句,Apache SOAP 沒(méi)有而且是依然沒(méi)有理解 Microsoft 采用的服務(wù)描述語(yǔ)言。這種語(yǔ)言已有過(guò)三次反復(fù)。首先是“服務(wù)描述語(yǔ)言”或 SDL,其次是“服務(wù)合同語(yǔ)言”或 SCL,再次是現(xiàn)在的 “Web 服務(wù)描述語(yǔ)言”或 WSDL。
同時(shí) Microsoft 也沒(méi)有包含任何機(jī)制能方便地把 xsi:type 屬性添加到工具生成的 SOAP 信封上。不過(guò)好在情況已有所改變。Microsoft 現(xiàn)在有一個(gè)新的十分靈活的 SOAP 實(shí)現(xiàn)方式,它包含對(duì) SOAP 信封更好的支持和更低級(jí)別的控制。而 Apache 也已解除需要存在 xsi:type 屬性的限制。這樣,兩個(gè)工具間就能互相自由傳遞信息了。
一個(gè)擴(kuò)展的股票行情服務(wù),版本 1
我們這里的示例將為免費(fèi)的 NASDAQ
InfoQuotes 服務(wù)創(chuàng)建一個(gè)基于 SOAP 的界面,請(qǐng)參閱 http://quotes.nasdaq.com。這個(gè)簡(jiǎn)單的服務(wù)通過(guò) HTTP-GET 請(qǐng)求,以
HTML 或 XML 格式提供擴(kuò)展的股票行情服務(wù)。所有這個(gè)項(xiàng)目的 Java 和 XML 源文件在參考資料部分。圖 2 的屏幕截圖顯示行情服務(wù)返回的 XML
數(shù)據(jù)。
圖 2:Nasdaq 行情的 XML 數(shù)據(jù)的屏幕截圖
在 NasdaqQuotes Web 服務(wù)的版一上,我們將使用一個(gè)簡(jiǎn)單的 Java 類(lèi),它表達(dá)了一個(gè)單獨(dú)
getQuotes 方法;將 HTTP-GET 請(qǐng)求的 XML 輸出作為一個(gè)字符串返回,如清單 1 的代碼片段所示。
配置這個(gè) Web 服務(wù)
要將這個(gè) Java 類(lèi)配置成一個(gè) Web
服務(wù),應(yīng)該編譯它并確定它在您的 Java Web 服務(wù)器的類(lèi)的路徑上(假設(shè)您已安裝和配置了 Apache SOAP 2.1)。以下幾步將告訴您如何從
Microsoft SOAP 上配置和調(diào)用服務(wù)。
步驟 1. 創(chuàng)建一個(gè) Apache 配置描述符。Apache SOAP Service Manager 利用配置描述符(一個(gè)簡(jiǎn)單的 XML 文檔)收集有關(guān)已配置服務(wù)的信息。請(qǐng)參閱清單 2 中的 NasdaqQuotes 服務(wù)版本 1.0 的配置描述符。
清單 2: 一個(gè) XML 配置描述符
methods="getQuote">
xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>
Apache SOAP 文檔中有 XML 配置描述符的詳細(xì)結(jié)構(gòu)說(shuō)明。但是請(qǐng)注意我們例子中的
步驟 2. 一旦已創(chuàng)建配置描述符,您得用它將 NasdaqQuotes 服務(wù)配置在服務(wù)的注冊(cè)記錄中。通過(guò)執(zhí)行此命令行可以完成配置。
這里 http://acme.com/soap/servlet/rpcrouter 對(duì)應(yīng)您的 SOAP RPC Router Servlet 安裝。NasdaqQuotes 服務(wù)完成配置,并可以使用了。您可以通過(guò)調(diào)用本文附帶的 zip 包中所提供的基于 java 的客戶(hù)端來(lái)測(cè)試此服務(wù)。請(qǐng)參閱 readme.txt 的指導(dǎo)。
步驟 3. Microsoft 工具需要使用一個(gè) WSDL 文檔,它描述服務(wù)的界面和位置。既然 Apache SOAP 不包含對(duì) WSDL 的任何支持,您就有兩種選擇:用 IBM 的 alphaWorks 的 WSDL 工具包來(lái)為指定的 Java 類(lèi)生成 WSDL,或者自己編寫(xiě) WSDL 文件。我建議您手寫(xiě) WSDL (請(qǐng)參閱清單 3 ) -- 把東西寫(xiě)出來(lái)會(huì)讓您對(duì) WSDL 的結(jié)構(gòu)和功能有更好的感覺(jué)。如果您需要出色的 XML 編輯器,我大力推薦商用的 XML-Spy 產(chǎn)品,但是其他編輯器也能用。
在編輯完 NasdaqQuotes.wsdl 文件后,該使用 Microsoft 工具了。在這篇文章所帶的 zip 包中,您會(huì)發(fā)現(xiàn) samp1e 目錄里有兩個(gè)名為 nq.vbs 和 vq.bat 的文件。 nq.vbs (請(qǐng)參閱清單 4 )文件包含使用 Microsoft SOAP 工具包調(diào)用 NasdaqQuotes 服務(wù)的代碼,腳本有 43 行代碼,但實(shí)際 SOAP 調(diào)用的發(fā)生只有前六行(它們中的四行由初始化基本變量的代碼組成)。您看,Microsoft 下了很大功夫使人們方便地使用他們的工具。
清單 4: 針對(duì) Microsoft SOAP 工具包的 nq.vbs
Set SC = CreateObject("MSSOAP.SoapClient")
SC.mssoapinit
"D:ServicesNasdaqQuotesClient.wsdl", "", "", ""
Res =
SC.getQuote(WScript.Arguments(0))
通過(guò)執(zhí)行 nq.bat 文件,您可調(diào)用 NasdaqQuotes 服務(wù),把您要查詢(xún)的代號(hào)作為一個(gè)命令行參數(shù)來(lái)傳入(請(qǐng)參閱圖 3)。
圖 3: 從命令行運(yùn)行 NasdaqQuotes
家庭作業(yè): NasdaqQuotes 版本 2
NasdaqQuotes
服務(wù)版本 1.0 非常簡(jiǎn)潔地顯示了 Microsoft 和 Apache
有能力互相進(jìn)行便捷的信息傳遞。但是行情服務(wù)返回的信息是以字符串的形式返回的,這意味著還需更多努力來(lái)改善服務(wù)。例如:我們可能要求 SOAP 信封實(shí)體以 XML
形式來(lái)返回查詢(xún)結(jié)果,而不是以返回字符串的形式。在 zip 下載包中的 NasdaqQuotes2 Service
示例能讓您采取正確的步驟。您的家庭作業(yè)是仔細(xì)研究這個(gè)例子里的內(nèi)容。和平常一樣,如您有任何問(wèn)題,請(qǐng)告訴我,看看我是否能幫助您。
參考資料
請(qǐng)點(diǎn)擊文章頂部或底部的討論,參與有關(guān)這篇文章的討論論壇。
針對(duì)本文中的項(xiàng)目的 Java 和 XML 源代碼在這個(gè) zip 文件中。
請(qǐng)下載最新版的 Apache SOAP。
請(qǐng)下載最新版的 Microsoft SOAP 工具包。
請(qǐng)查看 SOAP 參考資料的 cetus-links 索引。
如同 Web 服務(wù)資源中心和開(kāi)發(fā)顧問(wèn),Lemur Labs 也有一個(gè)附帶參考資料的 SOAP 信息頁(yè)面 。
Soaprpc.com專(zhuān)門(mén)提供有關(guān) SOAP 信息的參考資料,SoapWare.org 和 SOAPClient.com 同樣如此。
關(guān)于作者
瀏覽:Web服務(wù)內(nèi)幕,第1部分
Web服務(wù)內(nèi)幕,第2部分
Web服務(wù)內(nèi)幕,第4部分
Web服務(wù)內(nèi)幕,第5部分
Web服務(wù)內(nèi)幕,第6部分
Web服務(wù)內(nèi)幕,第7部分
Web服務(wù)內(nèi)幕,第8部分
Web服務(wù)內(nèi)幕,第9部分
Web服務(wù)內(nèi)幕,第10部分
- 1重慶OA信息化
- 2成都OA信息化
- 3貴陽(yáng)OA信息化
- 4西安OA信息化
- 5武漢OA信息化
- 6北京OA信息化
- 7廣州OA信息化
- 8深圳OA信息化
- 9天津OA信息化
- 10沈陽(yáng)OA信息化
- 11長(zhǎng)春OA信息化
- 12福州OA信息化
- 1微軟、PwC和納斯達(dá)克聯(lián)合推出財(cái)報(bào)Web服務(wù)
- 2BRINT e-Business(by AMT整理)
- 3技巧:通過(guò)Web Service讓Delphi/Visual Basic程序訪問(wèn)EJB
- 4石家莊OA信息化調(diào)研問(wèn)卷
- 5Accessing Server Variables From Within Web Services
- 6中國(guó)特色生態(tài)文明建設(shè)的理論創(chuàng)新和實(shí)踐
- 7OA軟件其他輔助管理與車(chē)輛管理介紹
- 8bindingTemplate與Web服務(wù)調(diào)用
- 9知識(shí)地圖在項(xiàng)目型組織中的應(yīng)用
- 10Web服務(wù)內(nèi)幕,第10部分:深入主題:可靠性和事務(wù)
- 11第五項(xiàng)修煉簡(jiǎn)要目錄
- 12網(wǎng)絡(luò)服務(wù)熱火如潮 前景撲朔迷離
- 13石家莊OA信息化方面的站點(diǎn)資源!
- 14無(wú)SOAP的Web服務(wù),第二部分
- 15無(wú)SOAP的Web服務(wù),第一部分
- 16Web服務(wù)內(nèi)幕,第7部分:WSFL和遞歸組合
- 17微軟展示新版互聯(lián)網(wǎng)服務(wù)MSN 8.0
- 18微軟為創(chuàng)建和使用Web服務(wù)另辟蹊徑
- 19XML Web Services Security
- 20A Web Services Primer
- 21InterOP Stack新一代平臺(tái)互操作技術(shù):InterOP Stack技術(shù)應(yīng)用前瞻
- 22加速戰(zhàn)略學(xué)習(xí)
- 23Favorites Service Overview
- 24IBM WebSphere以最快速度部署開(kāi)放的Web服務(wù)
- 25在ASP程序中調(diào)用Web Service
- 26Web Service初探
- 27石家莊泛普OA軟件管理門(mén)戶(hù)登錄
- 28面向21世紀(jì)的知識(shí)發(fā)展戰(zhàn)略
- 29泛普軟件石家莊OA信息化系統(tǒng)實(shí)施9大推進(jìn)步驟
- 30《變革之舞-學(xué)習(xí)型組織持續(xù)發(fā)展面臨的挑戰(zhàn)》
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓