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