烈焰门户技术文章ASP.Net
阅读文章

ASP.NET应用程序中异步调用Web Service的三种方法

[日期: 2008-05-05 ] 来源:   作者: [字体: ]

ASP.NET应用程序中异步调用Web Service的三种方法

    想必做.NET下开发的人对调用Web Service并不陌生,本文不介绍Web Service如何编写,只介绍.NET 应用程序中如何异步调用Web Service的几种方法。示例采用Windows应用程序。异步调用很有用,可以让客户端调用Web Service时(一般耗时未知),不至于阻塞客户端的UI线程导致假死的样子,还可以在调用Web Service的同时做些其它的处理。希望能对大家有所帮助,借此提出更好的解决方法。

    详细代码实现

    闲言少叙,直接进入主题吧。首先一个声明一个类(将来在客户端与服务器间传递):



public class Class1
...{
private int _ID;
private string _Name;
public int ID
...{
get
...{
return _ID;
}
set
...{
_ID = value;
}
}

public string Name
...{
get
...{
return _Name;
}
set
...{
_Name = value;
}
}
}





其次,声明一个Web方法:



// 省略系统生成的Web Service声明代码,采用默认的

public class Service1 : System.Web.Services.WebService

{

//省略系统生成的Web Service声明代码,采用默认的

[WebMethod]

public Class1 GetClass1 ( int p_TimeSpan )

{

System.Threading.Thread.Sleep( p_TimeSpan ); // 线程停止一段执行,假设一段处理的时间

Class1 r = new Class1();

r.Name = "Async Call";

r.ID = p_TimeSpan;

return r;

}

}




客户端调用代码,设计一个Windows Form窗体来测试,放入3个按钮控件(分别代表3种异步调用方法),一个进度条控件(表示调用Web Service后,客户端继续进行某些操作)。先把3种方法介绍一下:

1. 利用Backgroundworker对象,所在命名空间System.ComponentModel。MSDN原文解释:BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。

2. 利用wsdl.exe生成Web Service的客户端代理类,调用其中WebMethod的Async方法。

3. 利用wsdl.exe生成Web Service的客户端代理类,分别调用其中WebMethod的Begin与End方法。



先用wsdl.exe把上面的Web Service生成客户端代理类并把他编译成类库引入Windows应用项目(这里我没有编译类库,而是直接把代理类.cs文件加入到了Windows应用项目中)。

进入Visual Studio命令行模式,运行

wsdl /out:MyService.cs http://localhost:2732/Service1.asmx

参数说明:第二个参数是Web Service的URL,这个是我机器的本地环境,其他人需要根据情况修改!

注:第一种方式的调用,不采用手动生成Web Service客户端代理类也可以(项目中直接添加Web引用)。后面两种方法都是通过Web Service代理类中提供的方法实现,因此必须生成这个代理类。



看一下处理进度条控件值的代码,几种调用方法都会用到,

private void ChangeProcessBar ( )

{

for ( int i = 0; i < 10; i++ )

{

progressBar1.Value = i;

// 不知道用多少时间,慢慢走吧:)

System.Threading.Thread.Sleep( 500 );

}

}

[1] [2] [3] [4] [5] 下一页   
阅读:
录入: ☆我就‰喜欢☆ 打印 错误报告
上一篇: ASP.NET数据双向绑定机理
下一篇: 关于Asp.net ajax下的异常处理
相关文章
本文评论(点击查看所有评论
发表评论
希望 寒冷 强悍 惊讶 开心 吃饭 恭喜 流泪 爱你 啊困 心碎
偷笑 咒骂 流汗 大哭 求爱 装酷 砖头 头晕 出气 呲牙 吸烟

点评:


  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规!
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任!
  • 本站管理人员有权保留或删除其管辖留言中的任意内容!
  • 本站有权在网站内转载或引用您的评论!
  • 参与本评论即表明您已经阅读并接受上述条款!
关于烈焰网 | 意见投诉 | 网站地图 | 联系方式 | Ajax技术
Copyright © 烈焰门户 www.Jvqq.Net.Cn All Rights Reserved 京ICP备07022601号