Programming .NET Components 2nd 学习笔记(十一)

7.1. Requirements for an Asynchronous Mechanism

要充分利用.NET异步调用的各种选项,首先需要理解现在的面向构件异步调用支持的普遍需求。其中包括下列内容:

·         同一段构件代码应该可以使用在同步和异步调用中。这能使构件开发人员专注于业务逻辑并便于使用标准机制。

·         第一个必要的需求是由客户端决定是同步还是异步调用构件。这意味着客户端对同步和异步调用会有不同的代码。

·         客户端应该能发出多个异步调用,并在进程中有多个异步调用。它应该能区分多个方法的完成结果。

·         出于同样的原因,构件应该能服务多个并发调用。

·         如果构件的方法有输出参数或者返回值,在控制权返回给客户端时,这些参数或结果是无效的。在方法完成时,客户端需要有一种方法来获取这些值。

·         同样的,构件端的错误应该传递到客户端。任何在方法执行时抛出的异常应该之后再客户端重放。

·         异步调用机制应该能被直接、简单地使用(这更像是设计指导而不是需求)。例如,该机制应该隐藏实现细节,比如说工作线程用来分配尽可能多的调用。

 

当客户端发起一个异步方法调用时,它可以选择:

·         在调用过程中执行一些工作,保持阻塞直到调用完成。

·         在调用过程中执行一些工作,然后轮询是否调用完成。

·         在调用过程中执行一些工作,等待预定的一段时间,然后停止监视,即使方法未执行完毕。

·         同时等待多个方法的完成。客户端可以选择等待所有或者某些方法完成。

·         当方法完成时接收通知。通知采用客户端提供的回调方法的形式。回调方法应包含标识哪个方法完成以及返回值的信息。

 

.NET提供了所有这些选项,会使初次使用异步调用的人感到困惑。本章会展示每个选项并给出什么时候使用的建议。首先,让我们讨论下委托。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值