- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
.NET 有应用程序域的概念,据我了解,它可用于将程序集加载到内存中。我对应用程序域进行了一些研究,并去本地的书店了解了有关此主题的一些其他知识,但它似乎非常稀缺。
我所知道的是,我可以使用应用程序域将程序集加载到内存中,并且可以在需要时卸载它们。
我提到的应用程序域还有哪些功能?线程是否尊重应用程序域边界?除了通信性能之外,在除主应用程序域之外的不同应用程序域中加载程序集是否还有其他缺点?
讨论应用程序域的资源链接也很好。我已经查看了 MSDN,其中没有太多关于它们的信息。
最佳答案
AppDomains 最好被可视化为一个非常轻量级的进程。
每个 .Net 进程可以有 N 个 AppDomain,但一般来说只有一个。 AppDomains 的真正优势是它们在您的进程内提供了隔离边界。对象只能通过远程处理或序列化跨 AppDomain 边界相互通信。
还可以在一个进程内以完全不同的安全级别运行 2 个 AppDomain。这可以让您以完全信任运行主应用程序,同时以低得多的信任级别运行不受信任的插件。
对于线程是否尊重 AppDomain 很难一概而论。单个线程可能位于 N 个不同的 AppDomain 中。如果一个 AppDomain 中的对象对另一个 AppDomain 中的对象进行远程调用,则可能会出现这种情况。该线程必须在 AppDomain 之间转换才能完成。
AppDomains 的缺点主要是复杂性。远程处理可能需要一些时间来熟悉,并且正确设置 AppDomain 可能是一个不简单的过程。
您可能想浏览一下 AppDomains 上的 MSDN 文档。很难找到描述它们的简洁教程,因为它们具有各种复杂的功能。这提供了一个很好的概述,如果它不能直接回答您的问题,至少会为您指明正确的位置。
http://msdn.microsoft.com/en-us/library/cxk374d9.aspx
此文档不再维护,请参阅此更新版本: https://msdn.microsoft.com/en-us/library/2bh4z9hs(v=vs.110).aspx
关于.net - 我不明白应用程序域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622516/
我是一名优秀的程序员,十分优秀!