我大致了解什么是AppDomain,但是我不完全了解AppDomain的用途。

我参与了一个基于大型服务器的C#/ C ++应用程序,并且想知道如何使用AppDomains可以提高稳定性/安全性/性能。

特别是:


我了解一个域中的错误或致命异常不会影响在同一进程中运行的其他应用程序域-这对于非托管/ C ++异常(甚至可能是堆损坏或其他内存问题)也同样适用。
AppDomain之间的通信如何工作?
使用AppDomains与仅产生许多进程有何不同?

最佳答案

AppDomain的基本用例是在托管第3方代码的环境中,因此不仅有必要动态加载程序集,而且还要卸载它们。

无法单独卸载装配。因此,您必须创建一个单独的AppDomain来容纳可能需要卸载的所有内容。然后,您可以在必要时丢弃并重建整个AppDomain。

顺便说一下,CLR的任何功能都无法防止破坏堆的本机代码。最终,CLR是本地实现的,并且共享相同的地址空间。因此,该过程中的本机代码可以在CLR的所有内部进行涂抹!隔离行为不良(即大多数)的本机代码的唯一方法是在操作系统级别进行实际的进程隔离。启动多个.exe进程,并使它们通过某些IPC机制进行通信。

关于c# - 应用程序域有什么用途?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4349801/

10-15 10:02