首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在同一进程中的.Net AppDomains之间通信的底层机制是什么?

用于在同一进程中的.Net AppDomains之间通信的底层机制是什么?
EN

Stack Overflow用户
提问于 2009-07-25 04:04:30
回答 3查看 930关注 0票数 4

我意识到理性的下意识反应应该是“远程处理你这个笨蛋!阅读MSDN文档。”我能找到的关于.Net远程处理的每一条信息都是关于进程间通信的:套接字,共享内存,涉及到进程时的pipes...the经典,但AppDomain并不是一个真正的进程。然而,AppDomains似乎享受着成为其中一员的大部分好处。从学术角度来看,与驻留在同一进程中的实体之间的通信相比,OS IPC原语非常繁重。在同一进程中,当通信跨越AppDomain边界时,是否使用特殊的AppDomain管道?我怀疑。如果微软为了适应AppDomains而改变了Windows内核中进程隔离的基本原理,我会感到震惊。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-25 04:43:06

在这种情况下,有一条快速路径。不需要进程间通信,因为应用程序域驻留在相同的进程中,并且CLR可以完全访问所有这些应用程序域和整个地址空间。它实际上只是调用堆栈中的一些标记,用于安全和异常处理目的,以及appdomain提供的可卸载性。

票数 4
EN

Stack Overflow用户

发布于 2009-07-25 07:16:22

问题的边注,或者更多的是历史脚注。这并不是全新的,COM在封送线程之间的接口方面有一些类似的语义:一个线程将使用CoMarshalInterThreadInterfaceInStream将接口封送到流中,然后另一个线程将使用CoGetInterfaceAndReleaseStream从流中提取接口。

票数 1
EN

Stack Overflow用户

发布于 2009-07-25 07:35:18

进程内AppDomains之间通信的基本方式实际上是远程处理。这允许一个对象驻留在一个AppDomain中,并让其他对象通过另一个域中的透明代理通过它进行通信。

是的,AppDomains并不是一个真正的过程,但最好将它们想象为非常轻量级的过程。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1181159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档