COM+ 异步方法调用全解析
在传统的 COM+ 模型中,当客户端应用程序调用对象上的方法时,客户端线程会被阻塞,直到该方法执行并返回结果。同步调用是客户端最常用的技术,但有时客户端应用程序希望在调用进行时执行其他工作,而不是等待调用完成。
异步方法调用的实现方式
客户端可以创建一个工作线程来进行方法调用,这样主线程就可以在工作线程阻塞等待方法调用返回时执行其他任务。不过,如果底层基础设施能提供这种服务会更好,它可以减少客户端的线程管理代码,特别是在客户端需要进行大量并发调用时。此外,基础设施还可以优化底层调用,提高性能。
Windows 2000 下的 RPC 层支持异步调用,COM+ 利用这一特性在接口方法级别支持异步调用处理。客户端和服务器可以独立处理异步方法调用:
- 客户端代码可以在服务器无需实现任何特殊代码的情况下进行异步方法调用,COM+ MIDL 编译器可以生成处理这些工作的代理和存根代码。
- 服务器代码可以异步处理调用,即使客户端进行同步方法调用,服务器也可以异步处理该调用,同样是 MIDL 生成的代理和存根代码发挥作用。
示例:简单服务器组件
为了探索 COM+ 对异步调用的支持,我们开发一个简单的服务器组件,该组件返回两个数的和。以下是接口定义:
interface IMySum : IUnknown
{
HRESULT GetSum([in] long lVal1, [in] long lVal2,
[out, retval] long* plSum);
};
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



