一个webservice的小demo

 .net平台内建了对Web Service的支持,包括Web Service的构建和使用。与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了。.net Framework本身就全面支持Web Service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。下来我们就一步一步的用Microsoft Visual Studio .net 2005(后面简称VS.Net 2005)创建和使用一个简单的Web Service。 

    webservice,其实它就是个对外的接口,里面有函数可供外部客户调用(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它给了客户(同时我们给了他们调用规则),客户就可以在从服务端获取信息时处于一个相对透明的状态.即是客户不了解(也不需要)其过程,他们只获取数据.在代码文件里,如果我们写了一个函数后,希望此函数成为外部可调用的接口函数,我们必须在函数上面添上一行代码[WebMethod(Description="函数的描述信息")],如果你的函数没有这个申明,它将不能被用户引用.下来我们开始编写一个简单的Web Service 的例子.

2.1、用创建一个最简单的Web Service 
首先,打开VS2005,打开“文件-新建-网站”,选择“ASP.NET Web服务”。 


在appcode/Service.cs中添加以下代码 


 1using System; 
 2using System.Web; 
 3using System.Web.Services; 
 4using System.Web.Services.Protocols; 
 5[WebService(Namespace = "http://tempuri.org/")] 
 6[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
 7public 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    [WebMethod(Description = "求和的方法")] 
18    public double addition(double i, double j) 
19    
20        return i + j; 
21    } 
22    [WebMethod(Description = "求差的方法")] 
23    public double qiucha(double i, double j) 
24    
25        if (i > j) 
26            return i - j; 
27        else 
28            return j - i;                   
29    }     
30
31


2.调用webService里的接口: 
1). 打开VS2005,打开“文件-新建-网站”,选择“ASP.NET网站”。 
2). 然后先添加Web引用,把WebService引到当前的工程里面。方法是:在资源管理器中点击右键,选择添加Web 引用,调出对话框; 
3). 在URL中填入,前面写好的WebService运行后浏览器上面显示的地址,点击“前往”按钮,如上图,就会显示出所引用的WebService中可以调用的方法,然后点击“添加引用”,就将webservice引用到了当前的工程里面 ,如下图,解决方案中会出现引进来的WebService文件 
下面看代码: 
default.aspx: 


 1<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> 
 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 3<html xmlns="http://www.w3.org/1999/xhtml" > 
 4<head runat="server"> 
 5    <title>无标题页</title> 
 6</head> 
 7<body> 
 8    <form id="form1" runat="server"> 
 9    <div> 
10        <asp:TextBox ID="Num1" runat="server"></asp:TextBox> 
11        <select id="selectOper" runat="server"> 
12            <option>+</option> 
13            <option>-</option> 
14         </select>          
15          <asp:TextBox ID="Num2" runat="server"></asp:TextBox> 
16           <span id = "E" runat = "server"></span> 
17           <asp:Button ID="btn" runat="server" Text="=" OnClick="btn_Click" />                 
18           <asp:TextBox ID="Result" runat="server"></asp:TextBox>         
19     
20    </div> 
21    </form> 
22</body> 
23</html> 
24


后台default.apsx.cs文件: 


 1using System; 
 2using System.Data; 
 3using System.Configuration; 
 4using System.Web; 
 5using System.Web.Security; 
 6using System.Web.UI; 
 7using System.Web.UI.WebControls; 
 8using System.Web.UI.WebControls.WebParts; 
 9using System.Web.UI.HtmlControls; 
10
11public partial class _Default : System.Web.UI.Page 
12
13    protected void Page_Load(object sender, EventArgs e) 
14    
15
16    } 
17    protected void btn_Click(object sender, EventArgs e) 
18    
19        if(Num1.Text!=null&&Num2.Text!=null) 
20        
21        localhost.Service objService=new localhost.Service(); 
22        int i = selectOper.SelectedIndex; 
23        switch (i) 
24        
25            case 0: 
26                Result.Text = objService.addition(double.Parse(Num1.Text),double.Parse(Num2.Text)).ToString(); 
27                break; 
28            case 1: 
29                Result.Text = objService.qiucha(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString(); 
30                break; 
31        } 
32        } 
33    } 
34
35


运行后可以看到效果,如下图所示,在前面两个Textbox里面输入两个操作数,在中间的下拉列表中选择操作符,然后点击“=”号,将计算的结果输出到第三个Textbox里面。 

注意:而整个计算并不是在本地进行的,是在Web服务端进行计算的然后将结果通过XML返还给了调用方的,所以,在运行该程序的时候,WebService程序还必须启动,否则会报无法连接远程服务器的异常. 
(参考自:http://www.cnblogs.com/zhangzheny/archive/2007/06/16/785734.html)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。