Web service是一個基於可編程的web的應用程序,用於開發分布式的互操作的應用程序,也是一種web服務
WebService的特性有以下幾點:
1.使用XML(標准通用標記語言)來作為數據交互的格式。
2.跨平台性,因為使用XML所以只要本地應用可以連接網絡解析XML就可以實現數據交換,比如安卓、IOS、WindowsPhone等都可以實現對Web service的數據交互。
3.基於HTTP協議,直接跨越防火牆,通用型強;
下面使用Visual Studio 2013(其他VS版本亦是如此)來創建一個簡單Web service服務。
一、打開Visual Studio->文件->新建->網站
二、之后選擇ASP.NET空網站,再點擊“確定”
三、新建網站后你會看到解決方案管理器中看到一個web.config,待會我們可以通過配置這個文件來實現瀏覽器對WebService的遠程調用。現在,右鍵解決方案中的項目名添加一個WebService項目。
四、之后,你可以在項目模版中找到Web服務(ASMX),添加它!
五、創建之后在APP_Code文件夾中創建一個WebService.cs文件
在網站根目錄下會同時創建一個WebService.asmx文件
這兩個文件中WebService.cs負責邏輯部分,WebService.asmx提供服務部分。將來引用WebService服務時將直接引用WebService.asmx文件來調用WebService服務,服務的執行部分就是WebService.cs文件
現在打開WebService.cs文件來編輯邏輯部分實行一個簡單的《客戶端調用web服務實現一個簡單的加法運算,並返回以字符串給客戶端運算結果》
1 /* 2 Web.Services.cs文件 3 */ 4 using System; 5 using System.Collections.Generic; 6 using System.Linq; 7 using System.Web; 8 using System.Web.Services; 9 10 /// <summary> 11 /// WebService 的摘要說明 12 /// </summary> 13 [WebService(Namespace = "http://tempuri.org/")] 14 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 15 // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下行。 16 // [System.Web.Script.Services.ScriptService] 17 public class WebService : System.Web.Services.WebService { 18 19 public WebService () { 20 21 //如果使用設計的組件,請取消注釋以下行 22 //InitializeComponent(); 23 } 24 25 /// <summary> 26 /// 方法上頭的[WebMethod]是聲明一個web服務方法,如果你想寫個方法能讓客戶端調用並返回結果就必須在方法上頭標注[WebMethod] 27 /// 如果是只負責邏輯運算或私有方法,並不打算給客戶端結果,只給類方法內部調用就無需聲明[WebMethod] 28 /// </summary> 29 /// <param name="a"></param> 30 /// <param name="b"></param> 31 /// <returns>將運算結果轉換成字符串返回</returns> 32 [WebMethod] 33 public string HelloWorld(int a, int b) { 34 int result = a + b; 35 return result.ToString(); 36 } 37 }
上面的代碼寫了一個基本的方法供遠程調用,將cs文件保存后,一個簡單的web服務就創建了!
下面我們啟動這個項目,用瀏覽器查看微軟為我們定義測試的調用頁面:
在這里我們可以看到我們寫的Hello方法可以調用了,我們單擊進入這個方法進入調用調試頁面:
輸入參數,我們寫的是一個簡單的加法運算,參數便是我們寫的HelloWorld方法的參數a和b,我們輸入兩個整數點擊調用,出現如下結果:
下面是web服務返回的結果,其中133就是HelloWorld參數a+b返回的結果:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <string xmlns="http://tempuri.org/">133</string>
到這里,以后我們想要調用一個web服務就可以通過以上方式把客戶端從服務器獲取數據,訪問:"主機名/web服務名.asmx"就可以調用了。
得到的數據是個XML,所以客戶端得到數據后需要客戶端解析XML文件。
注意:以上創建在瀏覽器調用的web服務僅供本地計算機調試使用,需要配置web.config(之前提到過)才能實現遠程調用調試
如果不配置,在遠程調用會出現:測試窗體只能用於來自本地計算機的請求解決 的問題。
如需遠程調用可以參考一下方法:
在網站的解決方案的下方找到web.config
打開后添加如下配置即可:
1 <system.web> 2 <webServices> 3 <protocols> 4 <add name="HttpGet"/> 5 <add name="HttpPost"/> 6 </protocols> 7 </webServices> 8 <system.web>
配置之后,就可以在遠程通過瀏覽器來調用webservice.asmx服務了,開發測試之后,為了安全,一定把該配置去掉!
下一篇文章將介紹如何用WinForm引用web服務並取得返回值!