MarshalByValue对象有什么意义?

时间:2010-05-24 06:58:09

标签: c# .net clr

我们知道MarshalByRef允许我们在不同的AppDomain中创建一个对象,并使用Proxy对象来访问它。并且该对象的行为位于它实际存在的AppDomain的不同上下文中。这在隔离和安全方面听起来相当可行。

但为什么还有MarshalByValue? MarshalByValue只是导致一个新的反序列化对象,它是另一个AppDomain中对象的精确副本。如果我们需要该对象,为什么不在当前的AppDomain中创建它?为什么还要先在另一个AppDomain中创建它,然后通过MarshaoByValue将其恢复?

非常感谢。

1 个答案:

答案 0 :(得分:2)

取自MSDN: -

  

考虑MarshalByRefObject时   对象,对象的所有调用都是   往返服务器。有时,   由值组合的对象   而不是通过参考,   以便随后调用   编组对象将是本地的   远程。在DCOM中,实施   需要按值编组的对象   实质性工作。使用.NET远程处理,   所需要的就是   按值返回的对象是   序列化的。