异步远程处理

本主题介绍一项传统技术,保留该技术是为了向后兼容现有的应用程序,不建议对新的开发使用该技术。现在应该使用  Windows Communication Foundation (WCF) 来开发分布式应用程序。

除了配置和 .NET 远程处理本身的要求外,远程处理方案中的异步编程与单个应用程序域或上下文中的异步编程相同。有关使用 .NET 远程处理以及同步和异步委托的完整示例,请参见远程处理示例:异步远程处理

与单个应用程序域的异步编程一样,在 .NET 远程处理方案中使用异步编程意味着:

  • 调用方决定一个特定的远程调用是否为异步的。

  • 远程类型不必显式支持其客户端的异步行为。

  • 运行库强制实施完整的类型安全。

  • 必须适当使用 System.Threading 对象等待或同步您的方法。

但是,在一个跨应用程序域或上下文边界进行调用的应用程序中,.NET 远程处理会要求您配置客户端应用程序,以便它可以接收来自服务器的远程调用(通过指定客户端信道上的“0”端口可以完成此操作)。之所以有这种要求,是因为一旦进行异步调用,如果不允许服务器回调客户端,将无法检索调用的结果。

客户端不需要自行扩展 MarshalByRefObject 或配置任何远程类型,但除此之外,它必须与任何要成为服务器的远程类型遵循相同的规则:

  • 回调方法必须是实例方法。静态方法调用不能远程处理。

  • 信道必须注册才能侦听回调函数。

另请参见

任务

如何:异步调用远程对象的方法

概念

异步调用远程对象的方法时出现的问题
远程处理示例:异步远程处理
远程应用程序的配置

其他资源

.NET Framework 远程处理概述