[ASP.NET学习笔记之二十九]在Web Service中的异步开发模式

Web Service中的异步开发模式

 

议题

1.         异步服务概览

2.         客户端异步方法

-基于代理的开发模式

3.         异步服务器端行为

Soap one-way方法

WSE

SoapMSMQ

 

异步方法概览

异步方法

     不必等方法处理完成而直接返回

     可以在服务器和客户端上实现

客户端异步方法

     完全在客户端实现

     通常在proxy或者plumbing层中实现

异步服务器端行为

     用于改善服务器扩展性

     作为同步方法的一部分实现

异步方法概览

动机

对于同步方法

     UI线程依赖于方法的实现

方法执行时间过长将导致UI无法及时与用户进行交互

     服务器线程受到其他服务器的支配

线程是稀缺资源

     Windows客户端中,每一个进程都有单一的UI线程

     在服务器中,可扩展性依赖于线程的使用

对于异步方法

     在用户交互方面

提供良好的用户体验

及时交互响应

     在服务器

改善可扩展性

将服务器与通讯问题隔离

 

客户端异步方法

基于Proxy的方法

异步行为的最简单类型

缺省方式

     Visual StudioWSDL.exe直接支持

     客户端代理包含异步方法

效果和影响

     改进UI响应度

     在服务器不需要实现异步操作

       对服务器透明

     客户端能够在任何时间选择阻塞

 

WSDL.EXE可以生成异步方法

     将方法放入调用队列就立即返回

     通过.NET异步编程模式

通过BeginInvoke/EndInvoke实现

     充分利用delegateIASyncResult特性

Begin×××和End×××

Begin×××返回IASyncResult

客户端可以轮询、等待或者delegate方法

 

结束状态查询方法

     轮询ISAyncResult.IsComplete以判断处理是否结束

允许客户端继续其他工作

     使用IAsyncResult.AsyncWaitHandle

允许客户端使用Wait处理语义

     调用delegate方法

等待被运行时调用的delegate

     阻塞调用End方法

最简单模型

 

线程池

客户端线程池

     性能较IAsyncResult略高

     对于无响应的请求特别有用

     Dlegate能够被异步调用

WaitCallBack

QueueUserWorkItem

     支持delegate方法调用

     可以选择提供参数对象

 

服务器端异步方法

在服务器端实现异步方法

实现方式

     BeginInvoke/EndInvoke

     Soap one-way方法

     Web Service EnhanceWSE

     MSMQ

 

One-Way

将单向消息发送到端点

     例如:不需要响应的请求

问题

     没有返回值

     无法断盘方法结束时间

对于结果需要显示的通知或者轮询

 

通知

从端点发送的单向消息

客户端通知策略

     客户端能够轮询完成状态

要求客户端提供相关令牌

注意可扩展性问题

     服务器能够通知客户端

WS-Eventing或者类时机制

广播通道

 

One-Way方法实现

使用[SoapDocumentMethod]定义One-way方法

     [SoapDocumentMethodOneWaytrue]

     数据包反序列化后,服务器端方法立即返回

     客户端方法不会从调用的服务器端方法中收到返回值

One-way方法不适用于

     方法需要对结果轮询

其他方法更加适合

     方法需要同步

 

WSE

WSE支持面向消息的编程

     SoapSenderSoapReceiver基类

     支持发送和接收SoapEnvelopes

     更多的事务模型

通过SoapClientSoapService提供

SoapSenderSoapReceiver

     客户端和服务器同时实现

     客户端使用SoapSender发送消息

可选择使用SoapReceiver接收消息

     服务器使用SoapReceiver接收消息

可选择使用SoapSender发送通知和回应

使用MSMQ

MSMQ用于消息传输

n         适用于Web Service

n         具有可靠的异步行为

要求能够在服务中提供可靠的队列

允许多监听者使用单一队列

n         支持事务

同时支持本地事务和企业事务

SWC安装在Windows Server 2003Windows XP SP2

 

Claim-Check模式

n         提供主要的异步解决方案

使用同步方法来接收请求

返回用于获得服务状态的令牌

绝大部分工作表现为异步

n         同步方法

检查输入参数和业务逻辑规则

事务记录请求

带有令牌的相关请求

n         异步部分

处理请求

发送请求通知

 

Claim-Check模式实现

Web ServiceMSMQ能够进行整合

n         使用企业服务来协调事务

数据库记录请求

MSMQ事务持久的向队列添加请求

n         异步方法使得事务变得复杂

没有可行的方法确定一个事务的边界

当请求删除队列时,需要保证事务性

n         下面是我们所不希望的

服务丢失请求

请求处于不一致状态

 

使用WSE进行MSMQ操作

SoapMSMQ

n         简化使用WSE进行MSMQ操作

n         开源软件

n         完全支持事务

要求下列Claim-Check模式

在事务中,请求要被同步初始化

同步阶段排队请求,并且返回令牌

异步阶段处理各个事务

所有持有令牌的请求都保证会被处理,但可能会不成功

支持向客户端发送通知

 

总结

n         异步方法能够

改善客户端响应

增加服务器端的扩展性

n         对于异步开发的广泛选择

客户端异步代理方法

使用Soap one-way方法

WSE SoapSenderSoapReceiver

WSE自定义SoapMSMQ传输

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值