.NET有一个称为远程处理的东西,你可以在不同的应用程序域甚至物理机器之间传递对象.我不完全理解魔法是如何完成的,因此这个问题.
在远程处理中,有两种传递对象的基本方法 - 它们可以被序列化(转换为一堆字节并在另一端重建)或者它们可以从MarshalByRefObject继承,在这种情况下.NET会生成一些透明代理,所有这些都是方法调用被转发回原始实例.
这非常酷,就像魔法一样.而且我不喜欢编程中的魔法.纵观MarshalByRefObject
与反射我看不到任何会使其有别于任何其他典型的对象.甚至不是一个奇怪的内部属性或任何东西.那么整个透明代理事件是如何组织起来的呢?我可以自己制作这样的机制吗?我可以制作一个MyMarshalByRefObject
不会继承的替代品,MarshalByRefObject
但仍会采取相同的行动吗?或者正在MarshalByRefObject
接受.NET引擎本身的一些特殊处理,整个远程专长是不可复制的?