您的位置:首页 > 其它

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

2012-09-02 15:34 232 查看

7.1. Requirements for an Asynchronous Mechanism

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.NET提供了所有这些选项,会使初次使用异步调用的人感到困惑。本章会展示每个选项并给出什么时候使用的建议。首先,让我们讨论下委托。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: