服务器端代码:
Code
public class RandomNum : System.Web.Services.WebService
{
public RandomNum()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public int GetRandNum()
{
Random rnd = new Random(DateTime.Now.Second);
return rnd.Next();
}
[WebMethod]
public int GetRangeNum(int minVlaue, int maxValue)
{
return new Random(DateTime.Now.Second).Next(minVlaue, maxValue);
}
}
客户端代码:
Code
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Service.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
<script language="javascript" type="text/javascript">
//得到介于minValue和maxVuale 之间的随机数
function GetRandomNum(minValue,maxVuale)
{
if(arguments.length!=2)
{
//根据参数的个数来判断调用服务器webmethod方法
Smaple.RandomNum.GetRandNum(GetRandomNumSuccessed,GetRndNumFailed);
}
else
{
Smaple.RandomNum.GetRangeNum(minValue,maxVuale,GetRandomNumSuccessed,GetRndNumFailed);
}
}
//方法成功返回调用的回调函数
function GetRandomNumSuccessed(results)
{
successedMessage.innerHTML=results.toLocaleString();
}
//方法调用出现异常的回调函数
function GetRndNumFailed(results)
{
failedMessage.innerHTML="错误";
}
</script>
<input ID="Button1" type="button" value="Button" onclick="GetRandomNum()"/>
<input type="text" value="rangeNum", onmouseover ="GetRandomNum(1111,100)" /></div>
<div id="failedMessage" style="color:Red"></div>
<div id="successedMessage" style="color:Red"></div>
实现原理:
web service 发布后,客户端添加引用,之后vs实际上在此时已经在后台生成本地代理类。之后看起来像是对web service的操作,实际上是对本地代理类的操作。代理类中处理网路访问逻辑,客户端的使用就象操作本地类一样简单便捷。
客户端发出web service请求后,请求到达代理类,代理类处理请求从服务端获得SOAP数据包,而后进行数据处理后转发客户端。此中间涉及到的关于SOAP,WSDL等定义,简单的可以理解为:SOAP中定义了传输数据类型的格式和规则,而WSDL则以XML的形式定义了web service的消息和有关操作,通过http传输协议进行数据传输...(摘自CSDN http://blog.csdn.net/JustLovePro/archive/2008/08/27/2836898.aspx)