转:Web Service入门开发简单例子--很详尽
.net平臺內建了對Web Service的支持,包括Web Service的構建和使用。與其它開發平臺不同,使用.net平臺,你不需要其他的工具或者SDK就可以完成Web Service的開發了。.net Framework本身就全面支持Web Service,包括服務器端的請求處理器和對客戶端發送和接受SOAP消息的支持。下來我們就一步一步的用Microsoft Visual Studio .net 2005(后面簡稱VS.Net 2005)創建和使用一個簡單的Web Service。
2.1、用創建一個最簡單的Web Service
首先,打開VS2005,打開“文件-新建-網站”,選擇“ASP.NET Web服務”。
查看Service.cs代碼,你會發現VS.Net 2005已經為Web Service文件建立了缺省的框架。原始代碼為:
?1?using?System;
?2?using?System.Web;
?3?using?System.Web.Services;
?4?using?System.Web.Services.Protocols
?5?[WebService(Namespace?=?"http://tempuri.org/")]
?6?[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]
?7?public?class?Service?:?System.Web.Services.WebService
?8?{
?9?????public?Service?()?
10?????????//如果使用設計的組件,請取消注釋以下行?
11?????????//InitializeComponent();?
12?????}
13?????[WebMethod]
14?????public?string?HelloWorld()?{
15?????????return?"Hello?World";
16?????}
17?}
?
默認工程里面已經有一個Hello World的方法了,直接運行看看效果,
點擊顯示頁面上圖中的“HelloWorld”超鏈接,跳轉到下一頁面
再點擊“調用”按鈕,就可以看到用XML格式返回的Web Service結果下圖。說明我們的Web Service環境沒有問題,而且還初步接觸了一下最簡單的Web Service。
2.2、創建一個簡單帶有功能的Web Service
?????? 上面我們宏觀的了解了webservice,其實它就是個對外的接口,里面有函數可供外部客戶調用(注意:里面同樣有客戶不可調用的函數).假若我們是服務端,我們寫好了個webservice,然后把它給了客戶(同時我們給了他們調用規則),客戶就可以在從服務端獲取信息時處于一個相對透明的狀態.即是客戶不了解(也不需要)其過程,他們只獲取數據.在代碼文件里,如果我們寫了一個函數后,希望此函數成為外部可調用的接口函數,我們必須在函數上面添上一行代碼[WebMethod(Description="函數的描述信息")],如果你的函數沒有這個申明,它將不能被用戶引用.下來我們開始編寫一個簡單的Web Service 的例子。
???? 先把默認的HelloWorld方法注釋掉,簡單的寫了求加減乘除運算的四個方法;
?1?using?System;
?2?using?System.Web;
?3?using?System.Web.Services;
?4?using?System.Web.Services.Protocols;
?5?
?6?[WebService(Namespace?=?"http://tempuri.org/")]
?7?[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]
?8?public?class?Service?:?System.Web.Services.WebService
?9?{
10?????public?Service?()?{
11?????????//如果使用設計的組件,請取消注釋以下行?
12?????????//InitializeComponent();?
13?????}
14?????//[WebMethod]
15?????//public?string?HelloWorld()?{
16?????//????return?"Hello?World";
17?????//}????????????
18?????[WebMethod(Description="求和的方法")]
19?????public?double?addition(double?i,double?j)
20?????{
21?????????return?i?+?j;
22?????}
23?????[WebMethod(Description="求差的方法")]
24?????public?double?subtract(double?i,?double?j)
25?????{
26?????????return?i?-?j;
27?????}
28?????[WebMethod(Description="求積的方法")]
29?????public?double?multiplication(double?i,?double?j)
30?????{
31?????????return?i?*?j;
32?????}
33?????[WebMethod(Description="求商的方法")]
34?????public?double?division(double?i,?double?j)
35?????{
36?????????if?(j?!=?0)
37?????????????return?i?/?j;
38?????????else
39?????????????return?0;?
40?????}
41?}
42?
運行可以看到我們自己寫的可以被調用的方法,如下圖:
同樣點擊addition方法,進入addition方法的調用頁。
在參數上面輸入參數i=3,j=3,如上圖,點擊調用,就可以看到用XML格式返回的Web Service結果(i與j相加的結果)下圖
到這里,我們會發現,其實webservice并不是那么的神秘,它也不過只是個接口,對我們而言,側重點就是是接口函數的編寫.
2.3、用ASP.NET調用Web Service
首先,打開VS2005,打開“文件-新建-網站”,選擇“ASP.NET網站”。
選好存儲位置,語言后點擊確定,進入默認頁面。然后先添加Web引用,把WebService引到當前的工程里面。方法是:在資源管理器中點擊右鍵,選擇添加Web 引用,調出對話框:
在URL中填入,前面寫好的WebService運行后瀏覽器上面顯示的地址,點擊“前往”按鈕,如上圖,就會顯示出所引用的WebService中可以調用的方法,然后點擊“添加引用”,就將webservice引用到了當前的工程里面 ,如下圖,解決方案中會出現引進來的WebService文件
我們在這就練習調用webservice的四個方法,做一個簡單的調用的例子,先在網站的前臺添加幾個控件,代碼如下:
?1?<%@?Page?Language="C#"?AutoEventWireup="true"??CodeFile="Default.aspx.cs"?Inherits="_Default"?%>
?2?
?3?<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
?4?<html?xmlns="http://www.w3.org/1999/xhtml"?>
?5?<head?runat="server">
?6?????<title>Webservice調用實例</title>
?7?</head>
?8?<body>
?9?????<form?id="form1"?runat="server">
10?????????<div>
11?????????????<asp:TextBox?ID="Num1"?runat="server"></asp:TextBox>
12?????????????<select?id="selectOper"?runat?=?"server">
13?????????????????<option>+</option>
14?????????????????<option>-</option>
15?????????????????<option>*</option>
16?????????????????<option>/</option>
17?????????????</select>
18?????????????<asp:TextBox?ID="Num2"?runat="server"></asp:TextBox>
19?????????????<span?id?=?E?runat?=?"server"></span>
20?????????????<asp:TextBox?ID="Result"?runat="server"></asp:TextBox>
21?????????</div>
22?</form>
23?</body>
24?</html>
25?
然后在后臺寫調用的代碼,調用之前和使用其它的對象一樣,要先實例化,實例化的方法是localhost.Service a = new localhost.Service();然后就可以通過a來訪問WebService里面提供的方法了。在這個例子里面,動態的創建了一個button控件來觸發WebService的調用,后臺代碼如下:
?1?using?System;
?2?using?System.Data;
?3?using?System.Configuration;
?4?using?System.Web;
?5?using?System.Web.Security;
?6?using?System.Web.UI;
?7?using?System.Web.UI.WebControls;
?8?using?System.Web.UI.WebControls.WebParts;
?9?using?System.Web.UI.HtmlControls;
10?public?partial?class?_Default?:?System.Web.UI.Page?
11?{
12?????protected?void?Page_Load(object?sender,?EventArgs?e)
13?????{
14?????????//在頁面加載的時候動態創建一個按鈕,在它的事件里調用Webservice
15?????????Button?btn?=?new?Button();
16?????????btn.Width?=?20;
17?????????btn.Text?=?"?=?";
18?????????btn.Click?+=new?EventHandler(btn_Click);
19?????????E.Controls.Add(btn);
20?????}
21?????///?<summary>
22?????///?定義動態創建Button的Click事件,在這個事件中調用Webservice
23?????///?</summary>
24?????///?<param?name="sender"></param>
25?????///?<param?name="e"></param>
26?????void?btn_Click(object?sender,?EventArgs?e)
27?????{
28?????????if?(Num1.Text?!=?""?&&?Num2.Text?!=?"")
29?????????{
30?????????????//實例化引用的webservice對象
31?????????????localhost.Service?WebserviceInstance?=?new?localhost.Service();
32?????????????int?Oper?=?selectOper.SelectedIndex;
33?????????????switch(?Oper)
34?????????????{
35?????????????????//通過實例化的webservice對象來調用Webservice暴露的方法
36?????????????????case?0:
37?????????????????????Result.Text?=?WebserviceInstance.addition(double.Parse(Num1.Text),?double.Parse(Num2.Text)).ToString();
38?????????????????????break;
39?????????????????case?1:
40?????????????????????Result.Text?=?WebserviceInstance.subtract(double.Parse(Num1.Text),?double.Parse(Num2.Text)).ToString();
41?????????????????????break;
42?????????????????case?2:
43?????????????????????Result.Text?=?WebserviceInstance.multiplication(double.Parse(Num1.Text),?double.Parse(Num2.Text)).ToString();
44?????????????????????break;
45?????????????????case?3:
46?????????????????????Result.Text?=?WebserviceInstance.division(double.Parse(Num1.Text),?double.Parse(Num2.Text)).ToString();
47?????????????????????break;
48?????????????}
49?????????}
50?????}
51?}
52?
運行后可以看到效果,如下圖所示,在前面兩個Textbox里面輸入兩個操作數,在中間的下拉列表中選擇操作符,然后點擊“=”號,將計算的結果輸出到第三個Textbox里面。
而整個計算并不是在本地進行的,是在Web服務端進行計算的然后將結果通過XML返還給了調用方的,所以,在運行該程序的時候,WebService程序還必須啟動(所謂的啟動,就是那邊的項目解決方案是必須是打開的),否則會報無法連接遠程服務器的異常,如下圖:
到此一個一個簡單的WebService的開發和調用就已經完成了,在實際應用中可以根據自己的需要,寫一些功能強大的,復雜的WebService,不管多么復雜,整個流程都是這樣的。
轉載于:https://www.cnblogs.com/ATually/archive/2010/08/19/1803358.html
總結
以上是生活随笔為你收集整理的转:Web Service入门开发简单例子--很详尽的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.5 安装配置方法图文教程
- 下一篇: springboot/git学习资源记录