入門之前先簡單介紹下WCF。在用WebService做開發時,很多人都不知道WCF和WebService之間的關系。實際上WCF包含了WebService,這是一個很強悍的通信技術應用框架。微軟把.NET平台下所有涉及到分布式通信的一些技術都融合到wcf中來。比如webservice已經融合到wcf來了、MSQ(微軟的消息隊列)、甚至還融合一些通信協議,比如TCP,UDP協議。所以wcf把.NET平台下的通信問題給解決了。
這樣說你也許看了可能還無法理解,這里我們來模擬一個如何解決跨系統、跨平台、跨服務器進行通信情景(如下圖)。
WebService的本質:可以用來解決通信的問題--------------------------------------------------------------------
需求:讓張三公司下的這些系統能夠進行通信,比如我用C#來寫一個計算加減乘除的程序讓JAVA或PHP的系統直接來用它。
這無疑是一件令人難以理解的問題。這時候我們可以嘗試使用WebService來處理這一件費解的事。
如何創建及使用WebService?
步驟:
1.添加一個Web服務
2.添加完成后,可以看到會產生一個.asmx的文件,我們需要看的是產生的.asmx.cs后台頁面。在.NET3.5或早期版本,這個CS頁面一般會自動生成到App_Code文件夾里。當然,.NET4.0(包含更高版本)是以節點方式產生。這里看下這個文件的代碼結構:
/// <summary> /// WebServiceDemo 的摘要說明 /// </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 WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello "; } }
這個代碼其實很簡單,一個普通類來繼承System.Web.Services.WebService這個基類。
[WebMethod]屬性會將方法附加到Public 方法表示希望將該方法公開為 XML Web services 的一部分。通俗的講就是在沒有加這個屬性時,你寫的WebService就無法被外部訪問。
3.創建一個簡單的WebService
[WebMethod]
public int Add(int a, int b) { return a + b; }
4.引用:通過Winform程序去調用它
-4.1創建完winform程序后,添加服務引用
-4.2將WebService地址放到地址去搜索服務,這樣就可以看到剛才創建的方法了
5.啟用剛才創建的winform程序來調用這個程序
private void button1_Click(object sender, EventArgs e) { int a = int.Parse(t1.Text); int b = int.Parse(t2.Text); Var_WebService.WebServiceDemoSoapClient client = new Var_WebService.WebServiceDemoSoapClient();//WebService走的是Soap協議 int result= client.Add(a, b); MessageBox.Show(result.ToString()); }
結果: