監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢(xún)管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶(hù)案例 | 在線(xiàn)試用
X 關(guān)閉
重慶OA行業(yè)資訊

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA行業(yè)資訊

創(chuàng)建.NET Web服務(wù)

申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114

AMTeam.org

創(chuàng)建.NET Web服務(wù)

Web服務(wù)是構(gòu)造分布式、模塊化應(yīng)用程序的最新技術(shù)發(fā)展趨勢(shì)。Web服務(wù)可以把業(yè)務(wù)邏輯劃分一個(gè)一個(gè)的組件,然后在整個(gè)因特網(wǎng)的范圍上執(zhí)行其功能。本文就是向讀者展示一個(gè)簡(jiǎn)單的.NET Web服務(wù)創(chuàng)建過(guò)程。

假如你過(guò)去曾經(jīng)構(gòu)造過(guò)微軟世界的COM組件,那么你對(duì)創(chuàng)造可重用對(duì)象中間層的概念應(yīng)該是比較熟悉了,正是可重用對(duì)象可以讓開(kāi)發(fā)者重用代碼、利用由此帶來(lái)的軟件開(kāi)發(fā)靈活性。這些組件能作為客戶(hù)應(yīng)用程序放在同一計(jì)算機(jī)上執(zhí)行,或者以DCOM的形式在分離的機(jī)器上執(zhí)行。

現(xiàn)在的.NET體系則把以上的概念大大推進(jìn)了一步,.NET允許你把組件放在遠(yuǎn)程計(jì)算機(jī)上,而且你同這些遠(yuǎn)程計(jì)算機(jī)之間僅存在HTTP連接;換句話(huà)說(shuō),這些遠(yuǎn)程機(jī)器可能并不在企業(yè)網(wǎng)絡(luò)內(nèi)。由于SOAP協(xié)議的出現(xiàn),DCOM的二進(jìn)制標(biāo)準(zhǔn)也被基于文本和XML的調(diào)用語(yǔ)法代替了,新的技術(shù)標(biāo)準(zhǔn)允許客戶(hù)采用任何操作系統(tǒng)調(diào)用Web服務(wù),而這些Web服務(wù)則運(yùn)行在任何操作系統(tǒng)上。

用.NET打造Web服務(wù)

微軟早在大約兩年前就發(fā)布了針對(duì)Visual Basic 6的SOAP工具包,但是,.NET出現(xiàn)后則進(jìn)一步把構(gòu)造Web服務(wù)的任務(wù)變得更方便了。對(duì)Web服務(wù)的支持已經(jīng)內(nèi)置在了.NET基礎(chǔ)框架之內(nèi),這意味著任何.NET語(yǔ)言都能創(chuàng)建Web服務(wù)。Web服務(wù)甚至成為了Visual Studio.NET中的一種工程類(lèi)型。就象大多數(shù).NET工程類(lèi)型一樣,你甚至能采用記事本這樣的文本編輯程序創(chuàng)建全部應(yīng)用程序。

為了創(chuàng)建Web服務(wù),你的開(kāi)發(fā)計(jì)算機(jī)上至少需要安裝了ASP.NET引擎。這種引擎屬于.NET框架和Visual Studio.NET的一部分。如果你手頭沒(méi)有ASP.NET引擎,那么你不妨從asp.net網(wǎng)站下載ASP.NET。下載軟件只能在Windows 2000和Windows XP上使用。安裝了ASP.NET之后,你要不創(chuàng)建一個(gè)虛擬目錄要不直接在inetpubwwwroot目錄下創(chuàng)建自己的文件,我舉的例子就用后面的方法。

最近看過(guò)倫敦一家公司的網(wǎng)站,他們網(wǎng)頁(yè)上的價(jià)格單位是英磅。頁(yè)面上有一個(gè)轉(zhuǎn)換工具允許你把英鎊換算為美元。這個(gè)轉(zhuǎn)換工具就是一個(gè)絕佳的Web服務(wù)實(shí)例?,F(xiàn)在就請(qǐng)打開(kāi)記事本程序準(zhǔn)備創(chuàng)建XML Web服務(wù)吧。

創(chuàng)建Web服務(wù)的第一步是標(biāo)識(shí)Web服務(wù)、說(shuō)明服務(wù)使用的語(yǔ)言同時(shí)創(chuàng)建的類(lèi)的名字。在這個(gè)例子中,采用的Web服務(wù)編程語(yǔ)言是Visual Basic.NET,類(lèi)的名字是ConvertMoney。你的第一行代碼如下所示:

<%@ WebService Language=”VB” Class=”ConvertMoney” %>


接著,采用Imports聲明導(dǎo)入System.Web.Services名稱(chēng)空間。這樣做才能讓你按照名字索引WebService等類(lèi)而無(wú)須索引整個(gè)名稱(chēng)空間。該行代碼如下所示:

Imports System.Web.Services

然后創(chuàng)建Web服務(wù)自身的shell。WebService類(lèi)在你自己的類(lèi)的名字前加上前綴,代碼如下:

<WebService()>Public Class ConvertMoney
‘ code will go here
End Class

到這一步幾乎就可以增加類(lèi)的功能了,但是你還得先增加一行關(guān)鍵代碼。你必須繼承WebService基類(lèi),這是.NET框架的一部分。這樣做所實(shí)現(xiàn)的功能令你的服務(wù)類(lèi)可以被任何Internet客戶(hù)調(diào)用。增加Inherits聲明之后,所有的代碼如下所示。


<%@ WebService Language=”VB” Class=”ConvertMoney” %>
Imports System.Web.Services
<WebService()>Public Class ConvertMoney
Inherits WebService
‘ code will go here
End Class

現(xiàn)在就可以給你的類(lèi)添加功能了。在這里,你創(chuàng)建了一個(gè)簡(jiǎn)單函數(shù)接受英鎊的貨幣量然后返回美元值。通常,你還應(yīng)該在數(shù)據(jù)庫(kù)內(nèi)找到兩種貨幣之間的交換匯率。在上面的例子里,你在代碼中直接把匯率設(shè)定為1英鎊可兌換1.44美元。在以上代碼塊中增加代碼之后全部Web服務(wù)代碼如下所示。

<%@ WebService Language=”VB” Class=”ConvertMoney” %>
Imports System.Web.Services
<WebService()>Public Class ConvertMoney
Inherits WebService
<WebMethod()>Public Function _
PoundsToDollars(BritishPounds As Double) As Double
Return BritishPounds * 1.44
End Function
End Class

代碼編寫(xiě)完畢,你把代碼文件存放在某個(gè)虛擬目錄下(通常是c:inetpubwwwroot)即可。把文件保存為Converter.asmx。ASMX文件擴(kuò)展名是.NET Web服務(wù)的標(biāo)記。保存文件之后,你的Web服務(wù)就準(zhǔn)備露臉了。

測(cè)試服務(wù)

現(xiàn)在準(zhǔn)備好測(cè)試Web服務(wù)。期間你不必通過(guò)顯式的編譯全過(guò)程,只需要地在目錄下保存文件然后調(diào)用它即可。ASP.NET會(huì)即時(shí)編譯代碼,就象ASP的處理一樣。不過(guò)你得清楚地知道:編譯的結(jié)果是本機(jī)代碼,而傳統(tǒng)ASP文件處理采用的是解釋方式,兩者之間有重大差別。

為了調(diào)用最新創(chuàng)建的服務(wù),請(qǐng)打開(kāi)你的瀏覽器并輸入服務(wù)路徑,包括ASMX文件的名字。如果你把服務(wù)放了在c:inetpubwwwroot目錄下,那么你要在瀏覽器地址欄上鍵入http://localhost/converter.asmx。

在調(diào)用服務(wù)時(shí)會(huì)顯示一幅包含大量信息的網(wǎng)頁(yè)。一開(kāi)始這可能會(huì)令你覺(jué)得有點(diǎn)糊涂:不管怎么說(shuō),你還沒(méi)有為這種服務(wù)創(chuàng)造過(guò)HTML網(wǎng)頁(yè)。其實(shí),你根本不必創(chuàng)建測(cè)試網(wǎng)頁(yè),因?yàn)?NET框架已經(jīng)幫你這個(gè)忙了。當(dāng)你直接通過(guò)瀏覽器調(diào)用Web服務(wù)時(shí),框架就會(huì)為你產(chǎn)生一個(gè)網(wǎng)頁(yè)并通過(guò)它向你顯示W(wǎng)eb服務(wù)的信息,同時(shí)列出所有可用的方法。圖A即是Web服務(wù)的網(wǎng)頁(yè)。

圖A

 

調(diào)用最新創(chuàng)建的Web服務(wù)


在這個(gè)例子中列出的方法沒(méi)什么特別之處,因?yàn)閮H有一個(gè)方法(PoundsToDollars)。鼠標(biāo)點(diǎn)擊這個(gè)方法會(huì)顯示另一個(gè)網(wǎng)頁(yè),如圖B所示。這一頁(yè)就是該特定方法的測(cè)試頁(yè),其中包括對(duì)應(yīng)方法接受的每個(gè)參數(shù)的文本框。現(xiàn)在請(qǐng)?jiān)谖谋究蛑休斎搿?0”并按下Invoke按鈕。

圖B


 

選中PoundsToDollars方法

單擊Invoke按鈕會(huì)打開(kāi)一個(gè)新的瀏覽器窗口,其中顯示了一些XML代碼。這些XML代碼是由Web服務(wù)返回的其中包括了服務(wù)結(jié)果。返回的XML代碼如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<double xmlns="72http://tempuri.org/">72</double>

返回結(jié)果確實(shí)不一定非要采取對(duì)用戶(hù)友好的格式,因?yàn)槟阃ǔ2粫?huì)從瀏覽器直接調(diào)用Web服務(wù)。相反,你往往從應(yīng)用程序調(diào)用Web服務(wù)同時(shí)適當(dāng)?shù)靥幚矸祷氐腦ML代碼。不過(guò),也很容易從上面的代碼看出Web服務(wù)已經(jīng)把50英鎊轉(zhuǎn)換成了72美元。

小結(jié)

上面舉的這個(gè)例子很簡(jiǎn)單,它完成的任務(wù)是:創(chuàng)建一個(gè)組件,如果組件放在Web服務(wù)器上就可以被世界上任何地方的任何人訪(fǎng)問(wèn)??蛻?hù)不必裝載COM 或DCOM;甚至也不必?fù)碛蠾indows客戶(hù)程序。任何能創(chuàng)建HTTP連接的客戶(hù)程序都能調(diào)用Web服務(wù)并且收到結(jié)果。這種功能開(kāi)辟了創(chuàng)建分布式應(yīng)用程序、實(shí)現(xiàn)平臺(tái)之間互操作的全新領(lǐng)域。

發(fā)布:2007-03-25 10:25    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章: