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