監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
上海OA信息化

當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA信息化

Microsoft .NET XML Web服務(wù)

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

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ù),包括:

名稱 說明 .NET Resources(英文) GotDotNet 資源中心是訪問各種 .NET 框架鏈接目錄的門戶。在這里,您將找到通往許多 .NET 框架網(wǎng)站的鏈接。 Thumbnail Generator(英文) 縮略圖生成器 Web 服務(wù)創(chuàng)建指定 URL 的 .gif 圖像。該服務(wù)將圖像在服務(wù)器上保存預(yù)先定義的一段時間,并返回 URL 以供訪問。 Quote of the Day(英文) 這個示例每天返回一句有趣的言論。 Eightball(英文) 八球 Web 服務(wù)模擬了我們熟悉并喜愛的八球玩具。該服務(wù)通過從一個 XML 文件中的一組標(biāo)準(zhǔn)答案中隨機選擇一項來完成。 test 這個 Web 服務(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(英文)

發(fā)布:2007-03-24 18:00    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢