.net 什么是StreamingContextState.CrossAppDomain?

.net 什么是StreamingContextState.CrossAppDomain?,.net,streaming,appdomain,.net,Streaming,Appdomain,MSDN文件说明: streamingContextState.CrossAppDomain指定源或目标上下文是不同的应用程序域。 我知道什么是应用程序域,但它仍然不能帮助我理解流化ContextState的实际想法。 有人能用一种简单(不太专业)的语言给我解释一下吗。 我不太擅长仅仅通过阅读文档来理解概念。这里的想法是,如果您愿意,可以在不同的场景中使用不同的序列化来节省资源。例如,您的一些数据可能位于某个操作系统资源中,该资源将用于您的整个流程 如果您在一个进程中有多个AppDomains,

MSDN文件说明:
streamingContextState.CrossAppDomain指定源或目标上下文是不同的应用程序域。

我知道什么是应用程序域,但它仍然不能帮助我理解
流化ContextState
的实际想法。 有人能用一种简单(不太专业)的语言给我解释一下吗。 我不太擅长仅仅通过阅读文档来理解概念。

这里的想法是,如果您愿意,可以在不同的场景中使用不同的序列化来节省资源。例如,您的一些数据可能位于某个操作系统资源中,该资源将用于您的整个流程

如果您在一个进程中有多个
AppDomain
s,并且正在使用远程处理在它们之间进行通信,那么当您发现
CrossAppDomain
选项时,您可以只复制底层操作系统句柄-该现有句柄在
AppDomain
中同样有效,因为操作系统句柄并不真正了解应用程序域

IIRC,
string
实际上在整个进程空间中都是有效的,不需要序列化-因此保留引用可能是一个有趣的例子

其他选项包括相同的应用程序域、相同的机器、不同的机器等

不过,在我看来,这只会让你面临更多的复杂性。只有在非常特殊的情况下才值得担心。在一般情况下,最好只是序列化到预定义的存储表示形式,然后重新水化