WebService 的創建,部署和使用
轉自:http://blog.csdn.net/yexuanbaby/article/details/9029605/
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值,盡量使用字符串來替
代,最好在字符串中加上幹擾碼等.
WebService 的創建,部署和使用