微軟在其.Net戰略中,對其主推的Web服務做了大肆的宣揚。現在,Web服務正如火如荼地發展著,相關的各項新技術層出不窮。Web服務的發展正構築著互連網時代美好的明天。在本文中,我將向大家介紹Web服務的一些基本知識以及如何用Visual C#一步一步地建立一個簡單的Web服務。
一.Web服務概述:
Web服務是一種新的Web應用程式分支,它們是自包含、自描述、模組化的應用,發行就緒、定位、通過Web調用。Web服務可以執行從簡單的請求到複雜商務處理的任何功能。一旦部署以後,其他Web服務應用程式可以發現並調用它部署的服務。Web服務可以把商務邏輯劃分一個一個的組件,然後在整個網際網路的範圍上執行其功能。所以,它是構造分布式、模組化應用程式的最新技術發展趨勢。
二.為什麼需要Web服務?
以前,分布式的應用程式邏輯需要使用分布式的物件模型,通過使用DCOM、CORBA、RMI之類的基本結構,開發人員仍可擁有使用本地模型所提供的豐富資源和精確性,並可將服務置於遠程系統中。
當已經有中意的中介軟體平台(RMI、Jini、CORBA、DCOM 等等)時,我們為什麼還要為Web而煩惱呢?中介軟體確實提供了強大的服務實現手段,但是,這些系統有一個共同的缺陷,那就是它們無法擴充到互連網上:它們要求服務用戶端與系統提供的服務本身之間必須進行緊密耦合,即要求一個同類基本結構。然而這樣的系統往往十分脆弱:如果一端的執行機制發生變化,那麼另一端便會崩潰。例如,如果伺服器應用程式的介面發生更改,那麼用戶端便會崩潰。為了能擴充到互連網運用,我們需要一種鬆散偶合的基本結構來解決這個問題。如此的情況下就迎來了Web服務的誕生。
三.開發環境:
1.Windows 2000 Server作業系統或Windows XP作業系統;
2..Net Framework以及Visual Studio.net開發工具。
四.建立Web服務工程:
我在這裡向大家介紹一個美元到人民幣轉換的Web服務執行個體,該執行個體完成的功能相當簡單,從名字我們就能知道其中的功能。但是這也是一個非常不錯的例子,特別對於初學者,能起到很好的指導作用。在建立Web服務過程中,我們用到的是C#語言。下面就是具體的項目步驟了。
首先,開啟VS.net,建立一個項目,在左邊的面板中選擇“Visual C#項目”,右邊的面板中選擇“ASP.NET Web服務”,並命名為“WebService1”,圖示如下:
圖1
按下“確定”按鈕後,VS.net就開始幫你建立該項目,期間還可能會出現一個用來顯示Internet串連的對話方塊。在建立完項目後,在開發工具中會出現如下所示的介面:
圖2
因為我們要實現的是一個非常簡單的Web服務,所以我們需要的功能和我們的代碼量都很小,於是就不必去考慮中的“伺服器總管”和“工具箱”兩個超連結,而可以直接點擊中的“此處”連結進行代碼編輯,點擊後會開啟代碼編輯框,圖示如下:
圖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服務的網頁。
圖4
在這個例子中列出的方法沒什麼特別之處,因為僅有一個方法(DollarConvertToRMB)。滑鼠點擊這個方法會顯示另一個網頁,5所示。這一頁就是該特定方法的測試頁,其中包括對應方法接受的每個參數的文字框。現在請在文字框中輸入“10”並按下“調用”按鈕。
圖5
單擊“調用”按鈕會開啟一個新的瀏覽器視窗,其中顯示了一些XML代碼。這些XML代碼是由該Web服務返回的,其中包括了服務的結果。返回的XML代碼如所示:
圖6
返回的結果是一些XML代碼,可能使用者介面顯得不那麼友好,但是這些結果確實不一定非要採取對方便使用的格式,因為你通常不會從瀏覽器直接調用Web服務。相反,你往往從應用程式調用Web服務同時適當地處理返回的XML代碼。不過,也很容易從上面的代碼看出Web服務已經把10美元轉換成了81.5人民幣了。
六.總結:
上面舉的這個例子很簡單,它完成的任務是:建立一個組件,如果組件放在Web伺服器上就可以被世界上任何地方的任何人訪問。客戶不必裝載COM 或DCOM;甚至也不必擁有Windows客戶程式。任何能建立HTTP串連的客戶程式都能調用Web服務並且收到結果。這種功能開闢了建立分布式應用程式、實現平台之間互操作的全新領域。同時,我們也不難發現用VS.net開發Web服務是一件相當容易的事。有興趣的讀者可以試著開發出功能更強大的Web服務並將它賦予實際應用之中。