我已经通过参考听说过元帅,按照出血和元帅的元帅。这3个有什么区别?我知道这些是在跨appdomains /序列化传输数据时使用的,但不是更多。
答案 0 :(得分:39)
不同形式的编组用于描述对象在通过正常函数调用在AppDomain
实例之间传递时的行为方式。 AppDomain
通常被称为轻量级进程,并为托管对象提供了一个隔离的容器。这里是不同类型的快速细分
从MarshalByRefObject
派生的所有类型都将通过引用进行编组。这些对象实例不会在AppDomain
个实例之间传输。它们是在特定的AppDomain
中分配的,不要离开它。
在MarshalByRefObject
边界上传递对AppDomain
的引用时,会在目标AppDomain
中创建代理。此代理可用于操纵原始AppDomain
中的对象,但对象本身不能直接访问。
基本上与MarshalByRefObject
相反。当这些值跨越AppDomain
边界传递时,它们将通过二进制序列化进行序列化,并在目标AppDomain
实例中进行反序列化。结果是两个,希望是独立的价值观。每个域中一个。
某些类型的类型称为域中立。特别是string
,Type
和其他反映成员。这些对象不存在于特定的AppDomain
中,对它们的引用可以在它们之间自由共享。它们类似于参考编组,因为不会创建重复项,也不会创建代理。相反,直接引用在AppDomain
个实例之间共享。
你应该看一下Joe Duffy关于这个主题的博客文章