WebService跟ashx實現的功能比較類似,只是它就是只是提供數據來給其他應用程序來使用的,如果是本程序內部使用的話,推薦使用ashx,如果是公司內部所有的應用程序都使用的數據的話,這個時候最好使用WebService(因為有一套自己的數據邏輯,增刪改查,以后計算有一個系統是用jsp來開發的,那么也可以直接調用里面的method來達到增刪改查的效果,並且可以獲得返回的數據等,很是方便)。方便我們查看,維護起來也比較方便一些。具體使用如下,我們在vs 2013 中,先創建一個空的web應用程序,然后添加web服務即可。WebService的后綴名是asmx(Active Server Method).
我們可以在里面添加代碼,具體代碼如下:
public class WebService1 : System.Web.Services.WebService { [WebMethod(Description = "Hello方法")] public string HelloWorld() { return "Hello World"; } [WebMethod(Description = "兩個數值相加")] public void Add(int i, int j) { var result = new { sum = (i + j).ToString() }; Context.Response.Write(JsonConvert.SerializeObject(result)); Context.Response.End(); } }
我們在[WebMethod]中添加description是為了以后方便維護。現在我們直接按F5看一下效果,如圖所示:
看到上面的description的重要性了吧,方便我們查看一個asmx頁面有幾個方法,並且功能是什么。上面還說了要更改namespace,我們這里最好更改成網站的域名。
然后我們在項目中右鍵添加服務引用即可,如圖所示:
記住了上面要定位到具體的asmx而不是某一個網址,命名空間一會要使用的,所以這里記憶一下。然后我們就可以在頁面里面通過命名空間和類名調用了,具體調用代碼如下:
ServiceReference2.WebService2SoapClient web2 = new WebService2SoapClient(); Response.Write(web2.HelloWorld());
默認WebService返回的是xml,如果我們想返回json格式的數據的話,就要使用一些工具類或者Javascript序列化來實現了就像最上面的Add方法,這種add返回的值通常我們在前端js進行調用。大體上就是通過jquery的ajax來調用網址,然后獲取data的值,最后顯示到界面上。
如何控制權限有的人能看有的人不能看呢?如何讓他們不能直接訪問asmx頁面查看里面有什么方法呢?