深入学习Web Service系列之异步开发模式
2005-12-11 23:44
483 查看
概述[/b]
在本篇随笔中,通过一些简单的示例来说一下Web Service中的异步调用模式。调用Web Service方法有两种方式,同步调用和异步调用。同步调用是程序继续执行前等候调用的完成,而异步调用在后台继续时,程序也继续执行,不必等待方法处理完成而直接返回。具体的调用流程见下图:
private void btn_AsyncClient_Click(object sender, System.EventArgs e)
7public void UpdateResult(object sender, EventArgs e)
7
11public void OnHelloComplete(IAsyncResult ar)
12
18private void btn_CallBack_Click(object sender, System.EventArgs e)
24 [System.Web.Services.Protocols.SoapDocumentMethod(OneWay=true)]
示例代码:
1private void btn_OneWay_Click(object sender, System.EventArgs e)
7
11private void btn_onewayGet_Click(object sender, System.EventArgs e)
17 public class MyReceiver: SoapReceiver
5private void button4_Click(object sender, System.EventArgs e)
7private ArrayList Listeners
2
9 [WebMethod]
10 public void AddListener(string listener)
11
23 [WebMethod]
24 public void FireEvent()
25 {
26 int i;
27
28 for(i = 0;i < this.Listeners.Count;i++)
29 {
30 SoapEnvelope envelope = new SoapEnvelope();
31
32 envelope.SetBodyObject("Hello World!");
33
34 envelope.Context.Addressing.Action = new Action((string)(this.Listeners[i]));
35
36 envelope.Context.Addressing.ReplyTo = new ReplyTo(new System.Uri((string)(this.Listeners[i])));
37
38 SoapSender peerProxy = new SoapSender(new System.Uri((string)(this.Listeners[i])));
39
40 peerProxy.Send(envelope);
41 }
42 }
服务端使用[/b]WSE [/b]自定义[/b]SoapMSMQ[/b]传输[/b][/b]
SoapMSMQ是一款开源软件,简化使用WSE进行MSMQ操作,下载地址:
http://www.codeproject.com/useritems/SoapMSMQ.asp
SoapMSMQ完全支持事务,具有如下特点:
l 在事务中,请求要被同步初始化
l 同步阶段排队请求,并且返回令牌
l 异步阶段处理各个事务
l 所有持有令牌的请求都保证会被处理,但可能会不成功
l 支持向客户端发送通知
对SoapMSMQ感兴趣的朋友可以下载下来后,做进一步的研究。
总结[/b][/b]
异步方法调用改善了客户端的响应和用户体验,增加了服务端的可扩展性。当方法需要耗费大量的时间时,可以采用异步方式调用,提供系统并发处理的能力。对于异步方式的开发,我们可以有如上所述的广泛选择。
示例程序界面:
下载地址:
http://files.cnblogs.com/Terrylee/AsyncDemo.rar
在本篇随笔中,通过一些简单的示例来说一下Web Service中的异步调用模式。调用Web Service方法有两种方式,同步调用和异步调用。同步调用是程序继续执行前等候调用的完成,而异步调用在后台继续时,程序也继续执行,不必等待方法处理完成而直接返回。具体的调用流程见下图:
private void btn_AsyncClient_Click(object sender, System.EventArgs e)
7public void UpdateResult(object sender, EventArgs e)
7
11public void OnHelloComplete(IAsyncResult ar)
12
18private void btn_CallBack_Click(object sender, System.EventArgs e)
24 [System.Web.Services.Protocols.SoapDocumentMethod(OneWay=true)]
示例代码:
1private void btn_OneWay_Click(object sender, System.EventArgs e)
7
11private void btn_onewayGet_Click(object sender, System.EventArgs e)
17 public class MyReceiver: SoapReceiver
5private void button4_Click(object sender, System.EventArgs e)
7private ArrayList Listeners
2
9 [WebMethod]
10 public void AddListener(string listener)
11
23 [WebMethod]
24 public void FireEvent()
25 {
26 int i;
27
28 for(i = 0;i < this.Listeners.Count;i++)
29 {
30 SoapEnvelope envelope = new SoapEnvelope();
31
32 envelope.SetBodyObject("Hello World!");
33
34 envelope.Context.Addressing.Action = new Action((string)(this.Listeners[i]));
35
36 envelope.Context.Addressing.ReplyTo = new ReplyTo(new System.Uri((string)(this.Listeners[i])));
37
38 SoapSender peerProxy = new SoapSender(new System.Uri((string)(this.Listeners[i])));
39
40 peerProxy.Send(envelope);
41 }
42 }
服务端使用[/b]WSE [/b]自定义[/b]SoapMSMQ[/b]传输[/b][/b]
SoapMSMQ是一款开源软件,简化使用WSE进行MSMQ操作,下载地址:
http://www.codeproject.com/useritems/SoapMSMQ.asp
SoapMSMQ完全支持事务,具有如下特点:
l 在事务中,请求要被同步初始化
l 同步阶段排队请求,并且返回令牌
l 异步阶段处理各个事务
l 所有持有令牌的请求都保证会被处理,但可能会不成功
l 支持向客户端发送通知
对SoapMSMQ感兴趣的朋友可以下载下来后,做进一步的研究。
总结[/b][/b]
异步方法调用改善了客户端的响应和用户体验,增加了服务端的可扩展性。当方法需要耗费大量的时间时,可以采用异步方式调用,提供系统并发处理的能力。对于异步方式的开发,我们可以有如上所述的广泛选择。
示例程序界面:
下载地址:
http://files.cnblogs.com/Terrylee/AsyncDemo.rar
相关文章推荐
- 深入学习Web Service系列之异步开发模式(转载)
- 深入学习Web Service系列----异步开发模式
- 深入学习Web Service系列之异步开发模式
- 入学习Web Service系列之异步开发模式
- [ASP.NET学习笔记之二十九]在Web Service中的异步开发模式
- MongoDB深入学习系列(一)---开发环境配置及工具介绍
- SSM框架系列学习总结5之Mybatis实现基本CRUD和代理开发模式
- solidworks二次开发 学习日记--4 异步模式
- PB11新开发模式的深入学习计划:以及开发思路应转变到框架重用和面向对象
- 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
- 深入学习RBAC系列模型——RBAC0模型的开发与学习心得
- 在Web Service中的异步开发模式
- ios开发学习--按钮(Button)效果源码分享--系列教程3
- 【深入学习iOS开发(一)】Objective-C Reflection(Objective-C 反射机制)
- Web Control 开发系列(二) 深入解析Page的PostBack过程和IPostBackDataHandler
- hibernate学习系列-----(1)开发环境搭建
- Windows Phone 7开发技术在线学习系列活动正式开始
- 深入理解JavaScript系列(50):Function模式(下篇)
- 深入理解JavaScript系列(43):设计模式之状态模式详解
- 深入理解JavaScript系列(36):设计模式之中介者模式详解