VS2013建立和呼叫Web服務
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項
開啟這個檔案,我們可以看到,程式碼如下
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Services;
- namespace CalculateService
- {
- /// <summary>
- /// WebService1 的摘要說明
- /// </summary>
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.ComponentModel.ToolboxItem(false)]
- // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。
- // [System.Web.Script.Services.ScriptService]
- public class CalCulService : System.Web.Services.WebService
- {
- [WebMethod]
- public string HelloWorld()
- {
- return "Hello World";
- }
- }
- }
將HellowWorld這段程式碼刪除,修改後如下
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Services;
- namespace CalculateService
- {
- /// <summary>
- /// CalCulService 的摘要說明
- /// </summary>
- [WebService(Namespace = "http://login.wxjy.info")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.ComponentModel.ToolboxItem(false)]
- // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消註釋以下行。
- // [System.Web.Script.Services.ScriptService]
- public class CalCulService : System.Web.Services.WebService
- {
- [WebMethod]
- public int Sum(int a, int b)
- {
- return a + b;
- }
- [WebMethod]
- public int Sub(int a, int b)
- {
- return a - b;
- }
- [WebMethod]
- public double Mult(double a, double b)
- {
- return a * b;
- }
- [WebMethod]
- public double Div(double a, double b)
- {
- return a / b;
- }
- }
- }
此時,我們已經完成這個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檔案中寫如下程式碼
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- //不要忘記為WebService新增using引用
- using TestCalCul.MyWebService;
- namespace TestCalCul
- {
- public partial class WebForm1 : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- CalCulService cal = new CalCulService();
- double a = 29755;
- double b = 112.58;
- Response.Write(cal.Mult(a, b).ToString());
- }
- }
- }
接下來,在瀏覽器中執行該專案.可以看到如下結果
此時我們已經完成了這個WebService的使用過程
其實,這個例項在開發中,沒有任何意義.
但是通過這個例項,我們可以看出WebService的複用性,簡單性是非常好的.
在VS的環境下,我們可以輕易完成一個WebService的開發過程.
而WebService返回給我們的XML資料方式,也可以充分的和JavaScript等任何一種可以處理XML的語言相結合來
完成我們的需求.
在這裡要注意,當WebService連線資料庫時,我們要適當的給WebService進行加密.
加密的方式很多,你可以通過在IIS伺服器上禁止匿名訪問來實現,也可以給WebService的驗證增加驗證內容,最
簡單的就是加上使用者名稱和密碼.
還要注意,不要用有含義的方法名稱,比如Login或者PayOrder等,回傳資料不要使用bool值,儘量使用字串來替
代,最好在字串中加上干擾碼等.
http://blog.csdn.net/yexuanbaby/article/details/9029605/
相關文章
- python如何建立web服務PythonWeb
- 第19章 建立RESTful Web服務RESTWeb
- Ajax通過SOAP協議呼叫Web服務協議Web
- com.sun.net.httpserver 建立 web 服務HTTPServerWeb
- bbossaop遠端服務介紹-點對點遠端服務呼叫和組播服務呼叫的區別
- 基於gin的golang web開發:服務間呼叫GolangWeb
- OpenFeign 服務註冊和呼叫原理
- 如何使用FastReport.Service.dll建立Web服務ASTWeb
- 使用ASP.NET web API建立REST服務(二)ASP.NETWebAPIREST
- 建立SvcHost.exe呼叫的服務原理與實踐(1)
- 建立SvcHost.exe呼叫的服務原理與實踐(2)
- C# 實現 gRPC 服務和呼叫C#RPC
- 轉享:Ehcache 服務和RESTful Web ServicesRESTWeb
- Remoting和Web服務的區別REMWeb
- 一個電商專案的Web服務化改造7:Dubbo服務的呼叫,4個專案Web
- (2)什麼是服務拆分和遠端呼叫
- SpringCloud入門(二)服務間呼叫和案例SpringGCCloud
- Yao:一個用於建立Web服務和儀表板的低程式碼引擎Web
- SpringCloud之服務呼叫SpringGCCloud
- openlayer呼叫wms服務端服務端
- 使用SCA和JAX-RS建立RESTful服務REST
- InfoQ: 建立RESTful服務,有GET和POST足矣?REST
- ASP.NET Web 服務、企業服務和 .NET Remoting 的效能ASP.NETWebREM
- webapi建立和呼叫WebServiceWebAPI
- 建立Linux服務Linux
- 使用dubbo+zookeeper釋出服務與呼叫服務
- 使用nodejs和express搭建http web服務NodeJSExpressHTTPWeb
- go微服務系列(三) - 服務呼叫(http)Go微服務HTTP
- 搭建 Restful Web 服務RESTWeb
- Linux web服務LinuxWeb
- java使用jolt呼叫tuxedo服務JavaUX
- ArcGIS Pro建立、釋出、呼叫GP服務全過程示例(等高線分析)
- windowsSevice程式和topshelf程式建立服務對比Windows
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- Nginx服務系列——靜態資源web服務NginxWeb
- nacos實現Java和.NetCore的服務註冊和呼叫JavaNetCore
- node中建立服務程式
- Windows手工建立服務方法Windows