引言
以前使用windows服務(wù),于是學(xué)習(xí)并記錄下來:windows服務(wù)的創(chuàng)建、安裝、調(diào)試全過程及引發(fā)的后續(xù)學(xué)習(xí)。現(xiàn)如今需要用到webservice,對此感覺到很困惑。經(jīng)過幾天的學(xué)習(xí)、查閱資料,終于大致搞清如何運用,至于它的根本原理,暫時還不能完全理解,以后有機會再詳細(xì)研究吧。
定義:
webservice是一個平臺獨立的,低耦合,自包含的、基于可編程可編程的應(yīng)用程序,可使用開放的xml標(biāo)準(zhǔn)來描述、發(fā)布、發(fā)現(xiàn)、協(xié)調(diào)和配置這些應(yīng)用程序,用于開發(fā)分布式的互操作的應(yīng)用程序。(百度定義)
Web Service技術(shù), 能使得運行在不同機器上的不同應(yīng)用無須借助附加的、專門的第三方軟件或硬件, 就可相互交換數(shù)據(jù)或集成。依據(jù)Web Service規(guī)范實施的應(yīng)用之間, 無論它們所使用的語言、 平臺或內(nèi)部協(xié)議是什么, 都可以相互交換數(shù)據(jù)。Web Service是自描述、 自包含的可用網(wǎng)絡(luò)模塊, 可以執(zhí)行具體的業(yè)務(wù)功能。Web Service也很容易部署, 因為它們基于一些常規(guī)的產(chǎn)業(yè)標(biāo)準(zhǔn)以及已有的一些技術(shù),諸如的xml、HTTP。Web Service減少了應(yīng)用接口的花費。Web Service為整個企業(yè)甚至多個組織之間的業(yè)務(wù)流程的集成提供了一個通用機制。
個人理解:webservice是一個獨立的平臺,是用xml來描述的,可以幫組不同平臺下的系統(tǒng)建立數(shù)據(jù)交互機制。比如:在一個很龐大的asp.net網(wǎng)站上創(chuàng)建一個webservice,公司內(nèi)部的其他部門開發(fā)的系統(tǒng)需要引用網(wǎng)站的一些數(shù)據(jù),那么在網(wǎng)站上面創(chuàng)建一個webservice,其他系統(tǒng)直接添加web服務(wù)即可調(diào)用網(wǎng)站上的一個數(shù)據(jù)或者是方法等等。
創(chuàng)建一個簡單的webservice:
講述碰到的第一個小問題:本人使用的visual studio2010,在新建項目時找不到web服務(wù)?
直接選擇.net4.0,可以選擇創(chuàng)建asp.net空模板,然后添加新項選擇web服務(wù)模板即可。此方法最簡單。還有:選擇.net2.0,,3.0,3.5,就可以選擇webservice模板了,之后需要.net4.0新特性,在項目屬性窗口或者頁窗口的Build選項卡中選擇.net4.0即可。
新建一個空的asp.net項目,添加webservice頁面,編寫:

namespace FirstWebservice{ /// <summary> /// WebService1 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = Wsiprofiles.BasicPRofile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允許使用 ASP.NET Ajax 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod(Description = "求和的方法")] public double addition(double i, double j) { return i + j; } [WebMethod(Description = "求差的方法")] public double subtract(double i, double j) { return i - j; } [WebMethod(Description = "求積的方法")] public double multiplication(double i, double j) { return i * j; } [WebMethod(Description = "求商的方法")] public double division(double i, double j) { if (j != 0) return i / j; else return 0; } }}
至此創(chuàng)建了一個webservice,里面包含加減乘除4個方法。如下圖顯示:

Asp.net調(diào)用webservice:
下面創(chuàng)建一個asp.net項目調(diào)用webservice:
首先引用webservice,將服務(wù)的網(wǎng)站網(wǎng)址加入服務(wù)引用即可。添加服務(wù)引用界面如圖:

編寫調(diào)用的方法:
protected void Button1_Click(object sender, EventArgs e) { string selectFlag = selectOper.Value; ServiceReference1.WebService1SoapClient web = new ServiceReference1.WebService1SoapClient(); if (selectFlag.Equals("+")) { Result.Text = (web.addition(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("-")) { Result.Text = (web.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("*")) { Result.Text = (web.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } else if (selectFlag.Equals("/")) { Result.Text = (web.division(double.Parse(Num1.Text), double.Parse(Num2.Text))).ToString(); } }
在運行界面內(nèi),隨即選擇“-”號,最后得到的運算如下圖:

Winform調(diào)用webservice:
既然上面在介紹webservice時說了其是夸平臺的,那么創(chuàng)建一個winform系統(tǒng)調(diào)用webservice。同樣先添加webservice,
private void button1_Click(object sender, EventArgs e) { ServiceReference1.WebService1SoapClient web = new ServiceReference1.WebService1SoapClient(); this.txt3.Text = (web.multiplication(double.Parse(this.txt1.Text), double.Parse(this.txt2.Text))).ToString(); }
可以看出winform的調(diào)用和asp.net調(diào)用基本是相同的。在此也就沒有一一驗證,只是簡單的選擇“*”作為運算符,運行結(jié)果如下:

總結(jié):
上文簡單描述了webservice的基本認(rèn)識,接著創(chuàng)建了一個相當(dāng)簡單的webservice,然后創(chuàng)建一個asp.net項目和winform系統(tǒng)對它進行調(diào)用,所有一切基本上完成了webservice的使用過程。大家平時看到的更高級的webservice,或者可以說是更為復(fù)雜的webservice吧,這些都是在最簡單的webservice基礎(chǔ)上增加的一些很復(fù)雜的業(yè)務(wù)邏輯,抽絲剝繭后還是基本的webservice應(yīng)用。
新聞熱點
疑難解答