MarshalByRefObject 是 .NET 框架中的一个类,用于支持在支持远程处理的应用程序中跨应用程序域边界访问对象。当一个对象继承自 MarshalByRefObject 时,意味着该对象可以通过引用进行封送(marshaling),从而允许它在不同的应用程序域中使用,而不需要被复制。
主要特性:
远程处理(Remoting):派生自 MarshalByRefObject 的对象可以被远程访问。客户端应用程序域中会创建一个代理,而不是复制对象,该代理会将调用转发到服务器应用程序域中的实际对象。
应用程序域边界:在 .NET 中,应用程序域为代码执行提供了隔离。MarshalByRefObject 允许对象跨这些边界共享,而无需复制对象本身。
代理机制:当对象通过引用封送时,客户端域中会创建一个透明代理。该代理负责与服务器域中的实际对象进行通信。
使用场景:
分布式应用程序:在构建分布式系统时,对象需要跨不同进程或机器访问。
插件架构:将插件或组件加载到单独的应用程序域中以实现隔离和安全性。
跨域通信:在同一进程中的不同应用程序域之间共享对象。
示例:
using System;
public class MyRemoteObject : MarshalByRefObject
{
public string Greet(string name)
{
return $"你好, {name}!";
}
}
class Program
{
static void Main()
{
// 创建一个新的应用程序域
AppDomain domain = AppDomain.CreateDomain("新域");
// 在新域中创建 MyRemoteObject 的实例
MyRemoteObject remoteObject = (MyRemoteObject)domain.CreateInstanceAndUnwrap(

1130

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



