.NET C#創(chuàng)建WebService服務(wù)簡單實(shí)例
Web service是一個(gè)基于可編程的web的應(yīng)用程序,用于開發(fā)分布式的互操作的應(yīng)用程序,也是一種web服務(wù)
WebService的特性有以下幾點(diǎn):
1.使用XML(標(biāo)準(zhǔn)通用標(biāo)記語言)來作為數(shù)據(jù)交互的格式。
2.跨平臺性,因?yàn)槭褂肵ML所以只要本地應(yīng)用可以連接網(wǎng)絡(luò)解析XML就可以實(shí)現(xiàn)數(shù)據(jù)交換,比如安卓、IOS、WindowsPhone等都可以實(shí)現(xiàn)對Web service的數(shù)據(jù)交互。
3.基于HTTP協(xié)議,直接跨越防火墻,通用型強(qiáng);
下面使用Visual Studio 2013(其他VS版本亦是如此)來創(chuàng)建一個(gè)簡單Web service服務(wù)。
一、打開Visual Studio->文件->新建->網(wǎng)站
二、之后選擇ASP.NET空網(wǎng)站,再點(diǎn)擊“確定”
三、新建網(wǎng)站后你會看到解決方案管理器中看到一個(gè)web.config,待會我們可以通過配置這個(gè)文件來實(shí)現(xiàn)瀏覽器對WebService的遠(yuǎn)程調(diào)用。
現(xiàn)在,右鍵解決方案中的項(xiàng)目名添加一個(gè)WebService項(xiàng)目。
四、之后,你可以在項(xiàng)目模版中找到Web服務(wù)(ASMX),添加它!
五、創(chuàng)建之后在APP_Code文件夾中創(chuàng)建一個(gè)WebService.cs文件
在網(wǎng)站根目錄下會同時(shí)創(chuàng)建一個(gè)WebService.asmx文件
這兩個(gè)文件中WebService.cs負(fù)責(zé)邏輯部分,WebService.asmx提供服務(wù)部分。將來引用WebService服務(wù)時(shí)將直接引用WebService.asmx文件來調(diào)用WebService服務(wù),服務(wù)的執(zhí)行部分就是WebService.cs文件
現(xiàn)在打開WebService.cs文件來編輯邏輯部分實(shí)行一個(gè)簡單的《客戶端調(diào)用web服務(wù)實(shí)現(xiàn)一個(gè)簡單的加法運(yùn)算,并返回以字符串給客戶端運(yùn)算結(jié)果》
/* Web.Services.cs文件 */ using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; /// <summary> /// WebService 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消注釋以下行。 // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService () { //如果使用設(shè)計(jì)的組件,請取消注釋以下行 //InitializeComponent(); } /// <summary> /// 方法上頭的[WebMethod]是聲明一個(gè)web服務(wù)方法,如果你想寫個(gè)方法能讓客戶端調(diào)用并返回結(jié)果就必須在方法上頭標(biāo)注[WebMethod] /// 如果是只負(fù)責(zé)邏輯運(yùn)算或私有方法,并不打算給客戶端結(jié)果,只給類方法內(nèi)部調(diào)用就無需聲明[WebMethod] /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns>將運(yùn)算結(jié)果轉(zhuǎn)換成字符串返回</returns> [WebMethod] public string HelloWorld(int a, int b) { int result = a + b; return result.ToString(); } }
上面的代碼寫了一個(gè)基本的方法供遠(yuǎn)程調(diào)用,將cs文件保存后,一個(gè)簡單的web服務(wù)就創(chuàng)建了!
下面我們啟動這個(gè)項(xiàng)目,用瀏覽器查看微軟為我們定義測試的調(diào)用頁面:
在這里我們可以看到我們寫的Hello方法可以調(diào)用了,我們單擊進(jìn)入這個(gè)方法進(jìn)入調(diào)用調(diào)試頁面:
輸入?yún)?shù),我們寫的是一個(gè)簡單的加法運(yùn)算,參數(shù)便是我們寫的HelloWorld方法的參數(shù)a和b,我們輸入兩個(gè)整數(shù)點(diǎn)擊調(diào)用,出現(xiàn)如下結(jié)果:
下面是web服務(wù)返回的結(jié)果,其中133就是HelloWorld參數(shù)a+b返回的結(jié)果:
<?xml version="1.0" encoding="UTF-8"?> <string xmlns="http://tempuri.org/">133</string>
到這里,以后我們想要調(diào)用一個(gè)web服務(wù)就可以通過以上方式把客戶端從服務(wù)器獲取數(shù)據(jù),訪問:"主機(jī)名/web服務(wù)名.asmx"就可以調(diào)用了。
得到的數(shù)據(jù)是個(gè)XML,所以客戶端得到數(shù)據(jù)后需要客戶端解析XML文件。
注意:以上創(chuàng)建在瀏覽器調(diào)用的web服務(wù)僅供本地計(jì)算機(jī)調(diào)試使用,需要配置web.config(之前提到過)才能實(shí)現(xiàn)遠(yuǎn)程調(diào)用調(diào)試
如果不配置,在遠(yuǎn)程調(diào)用會出現(xiàn):測試窗體只能用于來自本地計(jì)算機(jī)的請求解決 的問題。
如需遠(yuǎn)程調(diào)用可以參考一下方法:
在網(wǎng)站的解決方案的下方找到web.config
打開后添加如下配置即可:
<system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> <system.web>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net XML文件操作實(shí)現(xiàn)代碼
這幾天在項(xiàng)目中用到了XML文件配置存儲一些基本信息,如:參數(shù)、表格等一些信息存儲。由于記錄不是很多,所以用此文件來代替數(shù)據(jù)庫中設(shè)計(jì)的表結(jié)構(gòu)。2009-12-12asp.net生成高質(zhì)量縮略圖通用函數(shù)(c#代碼),支持多種生成方式
這兩天正在研究報(bào)表中餅圖的繪圖方法,文章中的某些做法值得參考.2008-08-08ASP.NET 防止按鈕多次提交核心實(shí)現(xiàn)代碼
防止按鈕多次提交通常都是在注冊表單中提示時(shí)的一個(gè)小功能,具體實(shí)現(xiàn)如下,由此需求的朋友可以參考下2013-08-08將DataRow轉(zhuǎn)成指定類型的類,并返回這個(gè)類的對象(帶值)
由于實(shí)際需要 將DataRow轉(zhuǎn)成指定類型的類,并返回這個(gè)類的對象(帶值) ,實(shí)現(xiàn)方法看下面的代碼。2008-04-04vs2012創(chuàng)建的ado.net模型無法實(shí)例化的解決方案
本文給大家分享的是升級vs2012后,發(fā)現(xiàn)創(chuàng)建數(shù)據(jù)模型無法實(shí)例化使用,嘗試了很多種方法,最后在度娘的幫助下,才解決了這個(gè)問題,這里記錄下來,分享給大家。2015-03-03VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼
這篇文章介紹了VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率 實(shí)例代碼,有需要的朋友可以參考一下2013-07-07.net core在服務(wù)器端獲取api傳遞的參數(shù)過程
這篇文章主要介紹了.net core在服務(wù)器端獲取api傳遞的參數(shù)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10