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