600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖1
按下“確定”按鈕后,vs.net就開始幫你新建該項目,期間還可能會出現一個用來顯示internet連接的對話框。在新建完項目后,在開發工具中會出現如下所示的界面:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖2
因為我們要實現的是一個非常簡單的web服務,所以我們需要的功能和我們的代碼量都很小,于是就不必去考慮上圖中的“服務器資源管理器”和“工具箱”兩個超鏈接,而可以直接點擊上圖中的“此處”鏈接進行代碼編輯,點擊后會打開代碼編輯框,圖示如下:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖3
在上面的代碼編輯框中,我們先把原有的“hello world”web服務的示例代碼去掉,替換成我們的代碼,最終如下:
using system; using system.collections; using system.componentmodel; using system.data; using system.diagnostics; using system.web; using system.web.services; namespace webservice1 { /// /// service1 的摘要說明。 /// public class service1 : system.web.services.webservice { public service1() { //codegen:該調用是 asp.net web 服務設計器所必需的 initializecomponent(); } #region component designer generated code //web 服務設計器所必需的 private icontainer components = null; /// /// 設計器支持所需的方法 - 不要使用代碼編輯器修改 /// 此方法的內容。 /// private void initializecomponent() { } /// /// 清理所有正在使用的資源。 /// protected override void dispose( bool disposing ) { if(disposing && components != null) { components.dispose(); } base.dispose(disposing); } #endregion // web 服務 // dollarconverttormb() 服務完成美元到人民幣的轉換 // 若要測試此 web 服務,請按 f5 鍵 [webmethod] public double dollarconverttormb(double dollar) { return ( dollar * 8.15); } } } |
在上面的方法dollarconverttormb()中,我們返回的是一個double類型的值――dollar*8.15,其中的8.15我想是不言而喻的(就是美元到人民幣的匯率)。不過現實的匯率是不固定的,而且每天都要變動,所以要根據當天實際的匯率來計算,那么我們就要連接到數據庫獲得最新的信息了。不過,這里作為一個簡單實例,我們當然不需要搞得那么復雜,所以在這里我就姑且假定匯率為1:8.15。
同時,我們還需要注意,在該web服務的代碼中我們用到了using system.web、using system.web.services等名字空間,作為web服務開發,這些名字空間是顯然不能缺的,沒有了這些,我們就不能調用.net框架為我們提供的開發web服務所必須的方法和函數等,所以一定不能忘掉。
到此為止,代碼編寫已經完畢,然后把代碼文件存放在某個虛擬目錄下(通常是c:/inetpub/wwwroot/webservice1)即可。把文件保存為service1.asmx。asmx文件擴展名是.net web服務的標記。保存文件之后,你的web服務就準備露臉了。
五.測試web服務:
現在準備好測試web服務。期間你不必通過顯式的編譯全過程,只需要地在目錄下保存文件然后調用它即可。為了調用最新創建的服務,請打開你的瀏覽器并輸入服務路徑,包括asmx文件的名字。如果你把服務放了在c:/inetpub/wwwroot/webservice1目錄下,那么你要在瀏覽器地址欄上鍵入http://localhost/webservice1/service1.asmx。(當然,在你使用vs.net開發時,你也可以通過ctrl+f5直接進行web服務的測試。)
在調用服務時會顯示一幅包含大量信息的網頁。一開始這可能會令你覺得有點糊涂:不管怎么說,你還沒有為這種服務創造過html網頁。其實,你根本不必創建測試網頁,因為.net框架已經幫你這個忙了。當你直接通過瀏覽器調用web服務時,框架就會為你產生一個網頁并通過它向你顯示web服務的信息,同時列出所有可用的方法。下圖即是web服務的網頁。
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖4
在這個例子中列出的方法沒什么特別之處,因為僅有一個方法(dollarconverttormb)。鼠標點擊這個方法會顯示另一個網頁,如圖5所示。這一頁就是該特定方法的測試頁,其中包括對應方法接受的每個參數的文本框。現在請在文本框中輸入“10”并按下“調用”按鈕。
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖5
單擊“調用”按鈕會打開一個新的瀏覽器窗口,其中顯示了一些xml代碼。這些xml代碼是由該web服務返回的,其中包括了服務的結果。返回的xml代碼如下圖所示:
600){this.height=this.height*600/this.width;this.width=600;}" border=0>
圖6
返回的結果是一些xml代碼,可能用戶界面顯得不那么友好,但是這些結果確實不一定非要采取對用戶友好的格式,因為你通常不會從瀏覽器直接調用web服務。相反,你往往從應用程序調用web服務同時適當地處理返回的xml代碼。不過,也很容易從上面的代碼看出web服務已經把10美元轉換成了81.5人民幣了。
六.總結:
上面舉的這個例子很簡單,它完成的任務是:創建一個組件,如果組件放在web服務器上就可以被世界上任何地方的任何人訪問。客戶不必裝載com 或dcom;甚至也不必擁有windows客戶程序。任何能創建http連接的客戶程序都能調用web服務并且收到結果。這種功能開辟了創建分布式應用程序、實現平臺之間互操作的全新領域。同時,我們也不難發現用vs.net開發web服務是一件相當容易的事。有興趣的讀者可以試著開發出功能更強大的web服務并將它賦予實際應用之中。
新聞熱點
疑難解答