當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA信息化
Microsoft .NET XML Web服務(wù)
Microsoft .NET XML Web服務(wù)
Robert Hess
Microsoft Corporation
2001 年 8 月
20 日
好了,近來每個人都在談?wù)?XML Web 服務(wù):一般形式的,或是通過 .NET 提供的;談?wù)撍鼈兪褂?Microsoft Visual Studio? 更容易開發(fā),以及它們將成為 HailStorm(仍然是一個代號)的基礎(chǔ)。如果您讀過任何有關(guān)的文檔、白皮書或是新聞資料,您一定會淹沒在各種結(jié)構(gòu)圖、業(yè)務(wù)模型試驗、服務(wù)基礎(chǔ)構(gòu)造討論和其他類似的內(nèi)容中,怕是要消化不良了吧。我在過去幾個月中一直在努力幫您消化這些東西。但是這到底是什么東西,怎樣才能真正利用它呢?
在本文中,我會提供一些非常簡單的代碼,演示 XML Web 服務(wù)是如何直接了當(dāng),以及您如何才能立即開始使用它們。
任何一個有長期計算機工作背景的人都會記得,早年市場上有各種各樣相互競爭的計算機系統(tǒng)。我指的不是大學(xué)和專業(yè)數(shù)據(jù)處理機構(gòu)使用的大型機,而是家用計算機。Apple、IBM、Texas Instruments、KayPro、Commodore、Timex、Radio Shack 甚至 Mattel 都在生產(chǎn)各種規(guī)格和型號的個人計算機。那時關(guān)于為什么某種計算機優(yōu)于其他計算機的爭論層出不窮,但是我記得我自己那時的感受。
在了解和嘗試各種計算機之后,我看中的是那些對程序員而言能夠立即發(fā)揮作用的產(chǎn)品。我指的是那些能夠完成更多任務(wù),而不是只能運行預(yù)裝的程序(通常是游戲軟件)的計算機。我最喜歡的是那些能讓我坐下來寫一些自己的代碼、而不用購買任何額外軟硬件的計算機。我能夠編寫的程序不是被人為限定的,而是能夠訪問計算機系統(tǒng)的各個層面。這才是“發(fā)揮作用”的計算機。
我的第一臺計算機是 TI 99/4A。在當(dāng)時的計算機中,它非常棒:內(nèi)置 BASIC、彩色顯示器和可編程的屏幕字體。但是,內(nèi)置 BASIC 是一個限制。要編寫匯編程序,不僅需要購買額外的開發(fā)軟件,還需要擴展內(nèi)存模塊 (EMM),而且要運行程序的人也需要有 EMM。經(jīng)過短暫的輝煌,TI 最終從市場上淡出了。我接下來用的是一臺 Apple //c。這是一臺功能完備的計算機,可以用來編寫 BASIC 或匯編程序,其豐富的功能也使您能夠訪問內(nèi)置在固件中的底層功能。它開箱就能使用,不需要購買任何額外的設(shè)備。
所有這些都強調(diào)了我認為對于技術(shù)成功很重要的一點:應(yīng)用廣泛,使用簡便,無需專用軟硬件。使一種技術(shù)變得對普通用戶來說易于訪問并且有用,那么它將更容易脫穎而出。這些和 XML Web 服務(wù)有什么關(guān)系呢?
這些說明了我為什么要激動地宣傳 XML Web 服務(wù)的優(yōu)秀之處。不過,如果不自己安裝全套軟件來實際看看這些好處,那么它們就都是虛的。所以,接下來我就要告訴您,如何在只運行 Microsoft Windows? XP 的情況下編程訪問 XML Web 服務(wù)。當(dāng)然,我們得承認安裝操作系統(tǒng)也構(gòu)成了一個障礙,但是這有可能很快就成為一種標(biāo)準(zhǔn),如同我們看到的所有 Windows 系統(tǒng)一樣。
在 Windows XP 中包括了兩個重要的組件,它們使您可以自己接觸 XML Web 服務(wù)。第一個是 Windows 腳本宿主,該組件包括在 Windows 的所有版本之中,并且基本已成定局。另外一個是 Microsoft SOAP 類型庫。它提供了必需的編程界面,以便訪問 .NET XML Web 服務(wù)以及與其交互。言歸正傳,讓我們正式開始吧。
如果您使用的是 Windows XP,請執(zhí)行以下操作:
創(chuàng)建一個名為 Mystic.vbs 的新文本文件。
在其中輸入以下 VBScript
代碼:
SET scEightBall =
CreateObject("MSSOAP.SOAPClient")
scEightBall.mssoapinit
_
"http://www.gotdotnet.com/playground/services/eightball/EightBallWS.asmx?WSDL"
WScript.Echo scEightBall.Ask("我這周五有約會嗎?")
現(xiàn)在執(zhí)行這個腳本文件。可以通過雙擊其圖標(biāo)或在命令行中輸入以下命令來執(zhí)行:
C:> cscript
mystic.vbs
無論以何種方式執(zhí)行,您都會看到針對您的問題的答案?,F(xiàn)在您已經(jīng)編寫了第一個使用 XML Web 服務(wù)的應(yīng)用程序。讓我們看看我們做了些什么,以及它是如何完成任務(wù)的。
首先,必須找到一個能完成此目的的 .NET 服務(wù)。這也許是整個過程中最難的一步。UDDI 是一個服務(wù)目錄,它是專門為定位基于 Internet 的服務(wù)設(shè)計的。缺點是它不僅僅能夠列出以上述代碼演示的方式使用的服務(wù),所以我們需要謹慎地作出選擇。特別要注意的是,我們要使用以 .asmx?WSDL 結(jié)束的 URI。ASP .NET 被要求在此處為所提供的 XML Web 服務(wù)提供 WSDL(Web 服務(wù)說明語言)。通過 WSDL,Microsoft Soap 類型庫才能判斷 XML Web 服務(wù)提供的接口是什么,以及如何與之交互。
我恰好知道 www.GotDotNet.com(英文)中有一些 XML Web 服務(wù)的示例,這些對我使用此示例提供了幫助。以下是我怎樣知道上面三行代碼該怎么寫的:
首先我訪問了 http://uddi.microsoft.com(英文),這是一個有關(guān)他們提供的各種業(yè)務(wù)和服務(wù)的內(nèi)容廣泛的目錄。
在“Search by business
name”字段中,我輸入了 GotDotNet。我還有其他搜索方法,但是我覺得這種情況下這么搜索最快。
搜索結(jié)果返回一個列表/鏈接:
GotDotNet(英文)
.NET 框架社團網(wǎng)站
這就是我所尋找的內(nèi)容,所以我單擊了這個鏈接。
于是出現(xiàn)了一串已經(jīng)針對 GotDotNet 注冊的服務(wù),包括:
在這個列表中有兩項看起來很有趣,即Quote of the
Day(英文)和Eightball(英文)。來自八球的響應(yīng)每天更改不止一次,看起來似乎更有活力,所以我覺得這個選項不錯,就單擊了該選項。
下一個頁面仍然在 UDDI 網(wǎng)站上,包含了更多關(guān)于八球 Web 服務(wù)的詳細信息。它包含一個指向 http://www.gotdotnet.com/playground/services/eightball/EightBallWS.asmx(英文)的鏈接。該頁面是 XML Web 服務(wù)的基本 URL,也是您無畏的鼠標(biāo)要單擊的下一個目標(biāo)。
顯示的頁面是單擊 ASMX
文件的結(jié)果。重要的是,您要看到的不是 ASMX 文件的內(nèi)容,而是由 ASP .NET 為您創(chuàng)建的內(nèi)容。ASP .NET 查看 ASMX
文件的內(nèi)容,然后創(chuàng)建相應(yīng)的 HTML,記錄 XML Web 服務(wù)及其可用的操作。在這個特殊的示例中,我們所看到的是這個服務(wù)的名稱
(EightBallWS),并且它還提供了一個簡單操作 (Ask)。
如果您單擊了 Ask,它不僅顯示有關(guān)此接口的 SOAP
說明。由此,我看出這個函數(shù)使用字符串作為輸入,而提供字符串作為結(jié)果。此頁面還向您提供了一個簡單窗體,用于測試此服務(wù)。在輸入框中輸入一個問題,然后單擊“Invoke”按鈕,將返回一個帶有實際響應(yīng)
XML 的網(wǎng)頁。
現(xiàn)在我知道了編寫代碼實現(xiàn)這個功能的關(guān)鍵。具體而言:
該服務(wù)的 URL 是 http://www.gotdotnet.com/playground/services/eightball/EightBallWS.asmx(英文)。
服務(wù)的名稱是 EightBallWS。
我要調(diào)用的函數(shù)是
Ask,它使用字符串作為輸入?yún)?shù),然后返回字符串作為結(jié)果。
讓我們再看一下我的代碼,一步步分析:
SET scEightBall = CreateObject("MSSOAP.SOAPClient")
這行代碼創(chuàng)建了我要使用的 SOAP 客戶端對象。
scEightBall.mssoapinit _
"http://www.gotdotnet.com/playground/services/eightball/EightBallWS.asmx?WSDL"
這行代碼初始化我的 SOAP 對象,并在我要使用的 XML Web 服務(wù)中指出。我也可以列出 mssoapinit 的第二個(可選)參數(shù):應(yīng)該是 EightBallWS,我要選用的服務(wù)的名稱。我們得到:
WScript.Echo scEightBall.Ask("我這周五有約會嗎?")
這一部分代碼僅僅調(diào)用我從此服務(wù)中訪問的一個方法,并將結(jié)果顯示到屏幕上。
所有這些都說明,編寫使用 .NET XML Web 服務(wù)的簡單應(yīng)用程序是多么直接了當(dāng)。隨著 Windows 腳本提供了一種流暢的方式促進用戶和 XML Web 服務(wù)之間的編程交互,編程達到了一個真實的層面,我們都能夠獲得親身體驗。
出于完整性考慮,我繼續(xù)完成了這個簡單應(yīng)用程序的編寫,并且創(chuàng)建了一個更穩(wěn)定的版本,使您可以動態(tài)輸入要知道答案的問題。同時我完成了代碼,這樣它可以從命令行中執(zhí)行或者在雙擊圖標(biāo)時直接執(zhí)行。
SET scEightBall = CreateObject("MSSOAP.SOAPClient")
scEightBall.mssoapinit _
"http://www.gotdotnet.com/playground/services/eightball/EightBallWS.asmx?WSDL"
Set objArgs = WScript.Arguments
DIM a
FOR i = 0 to
objArgs.Count - 1
a = a & objArgs(i) & "
"
NEXT
a = Trim(a)
DO WHILE len(a) <= 0
a
= Trim(Prompt("您的問題是什么?"))
LOOP
answer = scEightBall.Ask(a)
WScript.Echo vbCRLF & "答案是:" & answer
FUNCTION Prompt (question)
IF len(question)
<= 0 THEN question = "Input"
ON ERROR RESUME
NEXT
WScript.StdOut.Write question & ":"
IF (Err.Number = 0) THEN
Prompt =
WScript.StdIn.ReadLine
ELSE
Prompt = InputBox
(question)
END IF
END FUNCTION
值得注意的是,此服務(wù)接受一個簡單的參數(shù),并返回一個簡單的值作為結(jié)果。.NET XML Web 服務(wù)可以來回傳遞復(fù)雜的結(jié)構(gòu)和數(shù)據(jù)集,并且這些數(shù)據(jù)可以來自一個能處理復(fù)雜結(jié)構(gòu)的編程語言,其操作跟我在此對 String 參數(shù)執(zhí)行的操作一樣簡單。但是,這種復(fù)雜性超越了 Windows 腳本的一般范圍,所以對于象上面這樣的程序,最好堅持使用傳遞簡單參數(shù)的 XML Web 服務(wù)。我們可以使用非常復(fù)雜的參數(shù),但是這超出了本文所講述的范圍。
下面是一些附加的鏈接,您可以從中獲得有關(guān) .NET XML Web 服務(wù)以及如何進行相關(guān)編程的詳細信息:
Windows XP 中的 SOAP 客戶端概述(英文)
SOAP Toolkit 2.0 文檔(英文)
WSDL 簡介(英文)
Web 服務(wù)要素(英文)
GotDotNet(英文)
- 1上海OA信息化原理的評論
- 2上海眾國汽車集團 網(wǎng)絡(luò)智能辦公OA系統(tǒng)
- 3企業(yè)上海OA信息化領(lǐng)軍者之知識總監(jiān)
- 4上海立信會計學(xué)院-辦公自動化OA系統(tǒng)
- 5開展上海OA信息化前必知三大要素
- 6有生命力的上海OA信息化
- 7微軟亞洲程序大賽 北京航天航空大學(xué)奪冠
- 8年終盤點:協(xié)同上海OA的2013與2014
- 9不同業(yè)務(wù)模式下的上海OA信息化策略
- 10微軟基于Web計算的框架結(jié)構(gòu)分析
- 11上海吉祥航空股份有限公司辦公自動化OA系統(tǒng)
- 12OA軟件不是你想象之中那樣
- 13SUN 重新出擊 進軍網(wǎng)絡(luò)服務(wù)市場
- 14知識時代的企業(yè)——創(chuàng)建21世紀(jì)的組織
- 15知識分類的深度解析
- 16工程咨詢企業(yè)如何建設(shè)上海OA信息化
- 17檔案上海OA信息化的主要觀點與創(chuàng)新、不足
- 18政務(wù)協(xié)同與信息的親民政策
- 19企業(yè)論壇、短信提醒、設(shè)置等模塊組成OA辦公系統(tǒng)
- 20泛普OA以不變應(yīng)萬變
- 21隱性知識轉(zhuǎn)化是知識創(chuàng)新的基礎(chǔ)
- 22上海OA信息化軟件的分類
- 23知識分析師和知識主管的區(qū)別
- 24建立共享的企業(yè)文化
- 25上海電力安裝第一工程公司OA辦公自動化系統(tǒng)-登錄
- 26企業(yè)如何進行上海OA信息化
- 27Providing the Knowledge Management and Value Your Customers,
- 28泛普OA成功實施的保障
- 29知識文化塑造之道:木桶理論的啟事
- 30上海保集(集團)有限公司OA辦公系統(tǒng)平臺
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
泛普上海OA信息化其他應(yīng)用
上海OA軟件 上海OA新聞動態(tài) 上海OA信息化 上海OA快博 上海OA軟件行業(yè)資訊 上海軟件開發(fā)公司 上海門禁系統(tǒng) 上海物業(yè)管理軟件 上海倉庫管理軟件 上海餐飲管理軟件 上海網(wǎng)站建設(shè)公司
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114