帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:服务  WEB  


介紹

創建你的第一個web服務非常簡單。 實際上,使用 Visual Studio 中的嚮導, 你可以在幾分鐘內啟動並運行第一個NET服務。

對於本例,我在本地機器的/WebServices 目錄中創建了一個名為 MyService的服務。 這些文件將在/WebServices/MyService 目錄中創建。

將定義 new 名稱空間,命名為 MyService,在此命名空間中將是一組定義你的Web服務的類。 默認情況下,將創建以下類:

全局( 在 global.asax 中)從HttpApplication派生。這裡文件是標準 ASP global.asa 文件的ASP.NET 等效項。
web service1 ( 在 WebService1.cs 中)System.Web.Services.WebService 派生。這是你的web服務類,它允許你公開可以被稱為web服務的方法。

還創建了許多文件:

AssemblyInfo.cs包含程序集的版本和配置信息。
web.config定義應用程序運行( 調試選項,使用 Cookies 等)的方式。
MyService.disco服務的發現信息。
WebService1.asmx你的web服務 URL 。導航到瀏覽器中的這個文件,你將返回一個顯示可用的方法。所需的參數和返回值的。 甚至提供了表單,允許你通過網頁測試服務。
binMyService.dll實際的web service組件。創建服務時創建這裡組件。

默認情況下創建的服務的類稱為( 在這種情況下) WebService1,它位於 MyService 命名空間中。 代碼部分顯示在下面。

namespace MyService
{
. . .
 ///<summary>/// Summary description for WebService1.///</summary> [WebService(Namespace="http://codeproject.com/webservices/",
 Description="This is a demonstration WebService.")]
 publicclass WebService1 : System.Web.Services.WebService
 {
 public WebService1()
 {
 //CODEGEN: This call is required by the ASP+ Web Services Designer InitializeComponent();
 }
. . .
 [WebMethod]
 publicstring HelloWorld()
 {
 return"Hello World";
 }
 }
}

生成了一個默認方法 HelloWorld 並將它的註釋出來。 簡單取消註釋並生成項目。 嘿,你有一個步行的web服務。

web service應與命名空間相關聯。 如果你編譯並運行服務 as-is,你的Wizard-generated服務將具有名稱空間 http://tempuri.org. 。你將得到一條長消息,指示你應該選擇一個 new 命名空間,因此,我們將添加名稱空間,如下所示:

[__b__][WebService(Namespace="http://codeproject.com/webservices/",
 Description="This is a demonstration WebService.")]publicclass WebService1 : System.Web.Services.WebService
{
. . .

要測試服務,你可以在 Visual Studio 中的解決方案資源管理器中右鍵單擊 WebService1.asmx 並選擇"在瀏覽器中查看"。 測試頁面如下所示

當調用這裡選項時,將返回以下內容:

正在運行演示應用程序

如果你下載了本文的源代碼,那麼你需要在站點目錄的web root 中創建一個目錄'web webservices',並將下載的zip文件解壓到。 然後你應該擁有:

WebServices
WebServicesbin
WebServicesWebService1.asmx
...

導航到 http://localhost/WebServices/WebService1.asmx 將不會向你顯示web服務,因為你需要確保 web service的程序集位於應用程序目錄的/bin 中。 你還會發現,你不能載入解決方案文件 MyService.sln. 殺死兩個鳥,你需要啟動IIS管理控制台,打開你的網站,右鍵單擊 web services文件夾,然後單擊屬性。 點擊'創建'按鈕創建一個 new 應用程序。 現在/WebServices 目錄是一個應用程序,因此. NET 框架將從/WebServices/bin 目錄載入web服務程序集,你將能夠載入和構建 MyService.sln 解決方案。

擴展示例

所以我們有一個web服務。 這並不令人興奮,但是我們又沒有 taxed 。 為了讓事情變得更有趣,我們將定義一個方法來返回一個定製結構數組。

MyService 命名空間中,我們將定義一個名為 ClientData的結構:

publicstruct ClientData
{
 publicString Name;
 publicint ID;
}

然後定義 new 方法 GetClientData 。 注意在方法前面使用 WebMethod 屬性。 這裡方法指定該方法可以作為web服務方法訪問。

[WebMethod]public ClientData[] GetClientData(int Number)
{
 ClientData [] Clients = null;
 if (Number >0 && Number <= 10)
 {
 Clients = new ClientData[Number];
 for (int i = 0; i < Number; i++)
 {
 Clients[i].Name = "Client" + i.ToString();
 Clients[i].ID = i;
 }
 }
 return Clients;
}

如果我們編譯,那麼導航到. asmx 頁面,然後我們會顯示一個表單,讓我們為參數輸入一個值。 輸入non-integer值將導致 type-error,並且輸入不在範圍 1 -10中的值將返回空數組。 但是,如果我們設法獲得輸入參數正確,我們將顯示以下 XML file:

那很簡單。

緩存 web service

通常,web服務在多次調用時會返回相同的結果,因此緩存信息以提高速度是有意義的。 在 ASP.NET 中這麼做就像向 web method添加一個 CacheDuration 屬性一樣簡單:

[__b__][WebMethod(CacheDuration = 30)]public ClientData[] GetClientData(int Number)
{

CacheDuration屬性指定方法緩存結果的時間長度( 以秒為單位) 。 在那個時間內,來自 web method的所有響應都是相同的。

還可以在類中使用常量成員變數指定 CacheDuration:

privateconstint CacheTime = 30; // seconds[WebMethod(CacheDuration = CacheTime)]public ClientData[] GetClientData(int Number)
{

向你的WebMethods添加描述

在瀏覽到. asmx 文件時創建的WebMethods的默認 List 中,對已經發布的每個方法進行描述是很好的。 Description 屬性完成這裡操作。

[WebMethod(CacheDuration = 30,
 [__b__]Description="Returns an array of Clients.")]public ClientData[] GetClientData(int Number)
{

你的默認. asmx 頁面將如下所示:

還有其他的web method屬性來控制緩衝。會話狀態和事務。

部署web服務

既然我們有了一個web服務,那麼允許別人使用它是不錯的。 在伺服器上發布web服務需要正確部署解決方案。 在 Visual Studio的構建菜單上是一個"部署"選項,該選項在第一次選中時啟動一個嚮導,允許你將部署項目添加到。 這將創建一個安裝包,你可以在伺服器上運行該安裝包,該包將創建必要的目錄,設置正確的參數。

這並不真正讓你了解到底發生了什麼,因此我們將手動部署 MyService

使用 ) 作為一個應用程序。

如果選擇創建單獨的目錄並將它的標記為應用程序,則需要在這裡目錄中添加以下文件和目錄:

MyService.asmx這裡文件用作你的服務的URL
MyService.disco你的服務的發現文檔
web.config替代默認網站設置( 可選)的服務的配置文件。
/bin這裡目錄保存服務的程序集
/bin/MyService.dll實際的服務 asembly 。

結束語

編寫 web WebServices非常簡單。 使用 Visual Studio 。NET嚮導使編寫和部署這些服務成為一個點並單擊事務,但即使你希望手工完成這些步驟,也非常簡單。



文章标签:WEB  服务  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语