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

标签 .net remoting appdomain

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

最佳答案

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

关于.net - 用于在同一进程中的 .Net AppDomains 之间进行通信的底层机制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1181159/

相关文章:

c# - Windows XP 上某些语言的 Treeview 编码问题

.net - 有没有一种方法可以从多个 .NET 项目创建一个 Azure Function App,并拥有所有这些项目的所有 Functions?

java - 在不同远程对象之间拆分远程 EJB 功能

.net - 我可以 Hook 远程对象的到期时间吗?

azure - 如何从 Microsoft Azure 转出域名?

c# - 带锁的字典还是并发字典?

c# - 我应该将Power Collection的OrderedMultiDictionary用作优先级队列吗?

c# - EasyHook,.NET Remoting 在客户端和服务器之间共享接口(interface)?

ASP.NET 数据缓存 - 应用域重启后保留内容

c# - 处理来自子 AppDomain 的不可序列化的未处理异常