我一直被问到关于AppDomains的问题,在面试中,我知道基本概念:
- 它们是应用程序内部的隔离级别(使它们不同于应用程序)
- 它们可以拥有线程(使它们不同于线程)
- 一个AppDomain中的异常不会影响另一个AppDomain
- AppDomains不能访问彼此的内存
- 每个AppDomain可以具有不同的安全性
我仍然不明白它们为什么必要。我正在寻找一个合理的具体情况,您何时会使用它。
答案:
- 不受信任的代码
- 核心应用程序受保护
不受信任/第三方插件通过在单独的AppDomain中进行隔离并带有安全限制来防止损坏共享内存或未经授权访问注册表或硬盘,从而保护应用程序或服务器,例如ASP.NET和SQL Server托管组件代码 - 受信任的代码
- 稳定性
将应用程序分成安全、独立的功能和特性 - 架构灵活性
自由运行多个应用程序在单个CLR实例中或者每个程序在各自的实例中。
还有其他需要补充的吗?