异步远程处理
除了配置和 .NET 远程处理本身的要求外,远程处理方案中的异步编程与单个应用程序域或上下文中的异步编程相同。有关使用 .NET 远程处理以及同步和异步委托的完整示例,请参见远程处理示例:异步远程处理。
如同单个应用程序域异步编程一样,在 .NET 远程处理方案中使用异步编程意味着:
调用方决定一个特定远程调用是否为异步的。
远程类型不必显式支持它们的客户端的异步行为。
运行库强制实施完整的类型安全。
必须适当使用 System.Threading 对象等待或同步您的方法。
但是,在一个跨应用程序域或上下文边界进行调用的应用程序中,.NET 远程处理要求您配置 .NET 远程处理系统,并且要求确保客户端编程模型也符合作为远程调用目标的条件。其原因很简单:如果使用异步调用,则可能会使用 .NET 远程处理系统将从服务器中调用的回调函数。例如,如果您将委托传递给(不能远程处理的)静态方法,或忘记将信道端口设置为“0”(以便使系统能够为您选择客户端端口),对服务器的调用可以完成,但因为对客户端的回调无法完成,您将无法得到结果。
客户端不需要自行扩展 MarshalByRefObject 或配置任何远程类型,但除此之外,它必须与任何要成为服务器的远程类型遵循相同的规则:
实例必须接收回调函数。
信道必须注册以侦听回调函数。
请参见
任务
概念
与异步调用远程对象的方法有关的问题
远程处理示例:异步远程处理
远程应用程序的配置