Microsoft .NET Remoting:技术概述

作者:袖梨 2022-07-02
Microsoft .NET Remoting:技术概述
Piet Obermeyer 和 Jonathan Hawkins
Microsoft Corporation
摘要:本文提供了 Microsoft .NET Remoting 框架的技术概述,其中包括了使用 TCP 通道或 HTTP 通道的示例。
目录
简介
远程对象
代理对象
通道
激活
对象的租用生存期
总结
附录 A:使用 TCP 通道进行远程处理的示例
附录 B:使用 HTTP 通道进行远程处理的示例
简介
Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这种框架提供了多种服务,包括激活和生存期支持,以及负责与远程应用程序进行消息传输的通讯通道。格式化程序用于在消息通过通道传输之前,对其进行编码和解码。应用程序可以在注重性能的场合使用二进制编码,在需要与其他远程处理框架进行交互的场合使用 XML 编码。在从一个应用程序域向另一个应用程序域传输消息时,所有的 XML 编码都使用 SOAP 协议。出于安全性方面的考虑,远程处理提供了大量挂钩,使得在消息流通过通道进行传输之前,安全接收器能够访问消息和序列化流。
通常,如果没有底层框架的支持,管理远程对象的生存期会非常麻烦。.NET Remoting 提供了许多可供选择的生存期模型,这些模型分为两个类别:
客户端激活对象
服务器激活对象
客户端激活对象受基于租用的生存期管理器的控制,这种管理器确保了租用期满时对象可被回收。而对于服务器激活对象,开发人员则可以选择“单一调用”模式或“单一元素”模式。
远程对象
任何远程处理框架的主要目的之一就是要提供必要的基础结构,以便隐藏远程对象调用方法和返回结果的复杂性。任何位于调用方应用程序域之外的对象,即使在同一台计算机上执行,也会被认为是远程对象。在应用程序域内部,原始数据类型按数值传递,而所有的对象按引用传递。因为本地对象引用仅在创建对象的应用程序域内有效,所以它们不能以这种方式传递到远程方法调用或从远程方法调用返回。所有必须跨越应用程序域的本地对象都必须按数值来传递,并且应该用 [serializable] 自定义属性作标记,否则它们必须实现 ISerializable 接口。对象作为参数传递时,框架将该对象序列化并传输到目标应用程序域,对象将在该目标应用程序域中被重新构造。无法序列化的本地对象将不能传递到其他应用程序域中,因而也不能远程处理。

相关文章

精彩推荐