天天看點

WebService的簡單示例

WebService就是個對外的接口,裡面有 函數可供外部客戶調用(注意:裡面同樣有客戶不可調用的函數)。假若我們是服務端,我們寫好了個webservice,然後把它給了客戶(同時我們給了他們調用規則),客戶就可以在從服務端擷取資訊時處于一個相對透明的狀态。即使客戶不了解(也不需要)其過程,他們隻擷取資料。WebService傳遞的資料隻能是序列化的資料,典型的就是xml資料。 

(一)建立——-項目---Visual C#---web---ASP.NET Web 服務應用程式,命名為TestWebService

此時的目錄結構如圖所示:

<a href="http://blog.51cto.com/attachment/201311/192058589.jpg" target="_blank"></a>

我們修改Service1.asmx的名字為:MyService.asmx

同時修改檔案中的class名

public class MyService: System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

return "Hello World";

}

同時修改檔案MyService.asmx(右擊--檢視标記;如果在vs環境下輕按兩下打開的是.cs檔案)

&lt;%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="TestWebService.Service1" %&gt;改為

&lt;%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="TestWebService.MyService" %&gt;

(二)重新生成項目,右擊MyService.asmx,選擇“在浏覽器中檢視”,即可檢查本項目是否有文法錯誤

(三)在MyService.asmx添加指定方法

using System;

using System.Data;

using System.Web;

using System.Collections;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.ComponentModel;

namespace TestWebService

/// &lt;summary&gt;

/// Service1 的摘要說明

/// &lt;/summary&gt;

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

[WebMethod]//必須要有的,為了說明,其下是一個方法,每一個方法前面都需要有。

public string getName()

return "Hope";

public string getAge()

return "25";

重新生成項目,右擊MyService.asmx,選擇“在浏覽器中檢視”,效果如下:

<a href="http://blog.51cto.com/attachment/201311/192129638.jpg" target="_blank"></a>

(四)釋出在外網上

這裡我是在本機上測試的,是以沒有必要釋出。如果要釋出到外網上,我們可以通過:

把bin檔案下的檔案以及與bin(包括.dll和.pdb檔案)同級目錄的asmx檔案上傳到外網即可。

(五)使用web service接口。

建立一個普通的windows應用程式,右擊,添加web引用:

<a href="http://blog.51cto.com/attachment/201311/192306983.jpg" target="_blank"></a>

改一下web引用名為:HopeWebService如圖:

<a href="http://blog.51cto.com/attachment/201311/192330558.jpg" target="_blank"></a>

此時,我們可以使用webservice中的方法了。通過HopeWebService我們可以通路其中的兩個方法。

(六)使用方法:

HopeWebService.MyService obj = new HopeWebService.MyService();

MessageBox.Show("name is:" + obj.getName()+";age is:" + obj.getAge());

     本文轉自stock0991 51CTO部落格,原文連結:http://blog.51cto.com/qing0991/1322353,如需轉載請自行聯系原作者