VS2013建立和呼叫Web服務

簡單但不平凡發表於2016-08-12

WebService,即Web服務,能使得執行在不同機器上的不同應用無須藉助,專門的第三方軟體或硬體,就可相互交換資料或整合.

   第一次選擇WebService,是為了替代資料庫遠端連線.我們都知道當SQL允許遠端時,則要開啟某一埠.但這一點在我們已經部署好的伺服器上,卻是不被允許的,於是就選擇WebService來代替了.當然現在我們也可以選擇WCF來完成.不過這不是我們今天的主題.

   WebService返回的資料為XML,這是我們都很熟悉的一種資料方式,大大方便了我們的工作當然,WebService給我們帶來的好處遠不止這些.我不想講得更多.相信當你能夠熟練運用WebService後,你會發現這是一把鋒利的寶刃.

   對於初次接觸WebServcie的人來說,長篇理論,不如一個例項來得更實際些,我們更看重的是到底如何能夠建立一個WebService並且將其部署,和使用.

   下面我將逐步的完成一個加減乘除功能的WebServic.

   開發環境:VS2012

   IIS環境:WINSERVER2008R2 IIS7.5

   第一步:開啟VS2012,新建空專案,注意選擇.NET Framework的版本.這裡我選擇的是.NET Framework 4

    

  新建好專案後,在專案中新增一個WebService項

開啟這個檔案,我們可以看到,程式碼如下

[csharp] view plain copy
 print?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace CalculateService  
  8. {  
  9.     /// <summary>  
  10.     /// WebService1 的摘要說明  
  11.     /// </summary>  
  12.       
  13.   
  14.     [WebService(Namespace = "http://tempuri.org/")]  
  15.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  16.     [System.ComponentModel.ToolboxItem(false)]  
  17.     // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。   
  18.     // [System.Web.Script.Services.ScriptService]  
  19.     public class CalCulService : System.Web.Services.WebService  
  20.     {  
  21.   
  22.         [WebMethod]  
  23.         public string HelloWorld()  
  24.         {  
  25.             return "Hello World";  
  26.         }  
  27.     }  
  28. }  


將HellowWorld這段程式碼刪除,修改後如下

[csharp] view plain copy
 print?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace CalculateService  
  8. {  
  9.     /// <summary>  
  10.     /// CalCulService 的摘要說明  
  11.     /// </summary>  
  12.     [WebService(Namespace = "http://login.wxjy.info")]  
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14.     [System.ComponentModel.ToolboxItem(false)]  
  15.     // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。   
  16.     // [System.Web.Script.Services.ScriptService]  
  17.     public class CalCulService : System.Web.Services.WebService  
  18.     {        
  19.         [WebMethod]  
  20.         public int Sum(int a, int b)  
  21.         {  
  22.             return a + b;  
  23.         }  
  24.   
  25.         [WebMethod]  
  26.         public int Sub(int a, int b)  
  27.         {  
  28.             return a - b;  
  29.         }  
  30.   
  31.         [WebMethod]  
  32.         public double Mult(double a, double b)  
  33.         {  
  34.             return a * b;  
  35.         }  
  36.   
  37.         [WebMethod]  
  38.         public double Div(double a, double b)  
  39.         {  
  40.             return a / b;  
  41.         }  
  42.     }  
  43. }  


此時,我們已經完成這個WebService的程式碼部分.接下來我們要將這個WebService打包釋出

在專案上點選右鍵,點選選單中的釋出

 此時出現如下頁面

點選下拉選單選擇新建配置檔案

 

完成以上步驟後,我們可以在設定檔案生成的資料夾內看到生成的以下檔案

 

現在我們要將生成的檔案拷貝到已經部署好的IIS伺服器上:在伺服器上新建資料夾,將檔案拷貝至資料夾內,並且為資料夾設定匿名許可權.

現在我們在IIS中新增網站

 

需要注意的是:我們的這個WebService是基於.NET 4開發的.如果你的IIS預設使用的是.NET 2.0,那麼釋出後將會出現異常,而無法訪問.

檢視一下應用程式池的右邊的應用程式池預設設定

 

提供兩種解決方案:第一種,在上面的表格中,將應用程式池預設改為4.0即可.當然這是指你的IIS中沒有需要2.0的應用程式和網站.

如果你的IIS中還有其它的需要.NET 2.0的應用程式,這時候你可以選擇第二個辦法

首先新增一個應用程式池

然後新增網站,將網站的應用程式池改為新建的應用程式池

 

當然,我們也可以將這個專案的.NET版本改為3.5,然後重新打包釋出.那麼就不需要新增對4.0的支援了.

新增完畢,啟動網站,此時可以關閉與伺服器的連線了.

在本地的瀏覽器中輸入地址

http://xxx.xxx.com/calculservice.asmx

此時我們可以看到以下的介面

此時我們已經完成了這個WebService的建立和部署.接下來,我們要在本地使用它

開啟VS2012,新建專案,專案名為TestCalCul

 

在專案中新增新建項

在專案中引用項上點選右鍵,選擇新增服務引用,顯示介面如下:

 

點選左下角的高階,出現介面如下

 

 

點選新增Web引用,出現介面如下

在URL中輸入我們釋出的WebService的URL地址,系統會自動搜尋到服務.並且為Web引用設定一個引用名.此引用名將是我們在專案中引用這個服務的名稱空間

 

點選新增引用,引用完成.

接下來,我們在WebForm1的cs檔案中寫如下程式碼


 

[csharp] view plain copy
 print?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7.   
  8. //不要忘記為WebService新增using引用  
  9. using TestCalCul.MyWebService;  
  10.   
  11. namespace TestCalCul  
  12. {  
  13.     public partial class WebForm1 : System.Web.UI.Page  
  14.     {  
  15.         protected void Page_Load(object sender, EventArgs e)  
  16.         {  
  17.             CalCulService cal = new CalCulService();  
  18.             double a = 29755;  
  19.             double b = 112.58;  
  20.             Response.Write(cal.Mult(a, b).ToString());  
  21.         }  
  22.     }  
  23. }  


接下來,在瀏覽器中執行該專案.可以看到如下結果

 

此時我們已經完成了這個WebService的使用過程

 

其實,這個例項在開發中,沒有任何意義.

但是通過這個例項,我們可以看出WebService的複用性,簡單性是非常好的.

在VS的環境下,我們可以輕易完成一個WebService的開發過程.

而WebService返回給我們的XML資料方式,也可以充分的和JavaScript等任何一種可以處理XML的語言相結合來

完成我們的需求.

在這裡要注意,當WebService連線資料庫時,我們要適當的給WebService進行加密.

加密的方式很多,你可以通過在IIS伺服器上禁止匿名訪問來實現,也可以給WebService的驗證增加驗證內容,最

簡單的就是加上使用者名稱和密碼.

還要注意,不要用有含義的方法名稱,比如Login或者PayOrder等,回傳資料不要使用bool值,儘量使用字串來替

代,最好在字串中加上干擾碼等.



http://blog.csdn.net/yexuanbaby/article/details/9029605/

相關文章