"C#高级编程·第7版·远程对象客户端和服务器的使用"
在.NET框架中,远程对象客户端和服务器的应用是分布式计算的核心部分。本文档主要关注.NET Remoting技术,它允许对象在不同进程甚至不同计算机之间进行通信。在深入探讨.NET Remoting架构之前,我们首先理解基础概念:远程对象、客户端和服务器。
远程对象是能够跨越网络在不同应用程序域(AppDomain)之间交互的对象。在.NET中,为了使对象成为远程对象,它必须从`System.MarshalByRefObject`基类派生。这个基类确保对象在创建它的应用程序域内运行,并通过代理来跨域访问。代理对象持有远程对象的引用,使得即使在不同的系统中,多个客户端也能访问同一个远程对象实例。
图54-3展示了客户端和服务器应用程序中的主要.NET Remoting类。在这个例子中,`Hello`是实现的远程对象,`HelloServer`是服务器端的主类,而`HelloClient`则是客户端的主类。`Hello`类继承自`MarshalByRefObject`,并提供了构造函数和方法,如`Greeting()`,这些可以在客户端调用。
`MarshalByRefObject`类除了继承`Object`类的方法外,还提供了初始化和管理生命周期服务的方法。生命周期服务定义了远程对象在何时何地被销毁,这通常涉及到租约管理。租约机制允许服务器控制对象的存活时间,以及客户端如何与之通信。
为了更好地理解.NET Remoting的工作原理,文档中给出了一段示例代码,创建了一个名为`RemoteHello`的程序集,包含一个名为`Hello`的类。`Hello`类派生自`MarshalByRefObject`,在构造函数中打印消息,并包含一个可由客户端调用的`Greeting()`方法。
这个例子展示了如何创建基本的.NET Remoting应用程序,包括客户端如何与服务器通信,以及如何利用`MarshalByRefObject`来创建远程对象。在后续章节中,文档会进一步讨论更复杂的.NET Remoting特性,如自定义序列化、通道和服务生命周期管理,这些都是实现高效和安全的分布式系统的关键元素。