.NET中应用程序域的常见用法和最佳实践?

时间:2009-10-28 18:36:53

标签: c# .net applicationdomain

何时在应用程序中创建新的应用程序域有哪些指导原则和最佳做法?

此外,在应用程序中如何使用多个应用程序域有哪些常见用途和示例?

3 个答案:

答案 0 :(得分:7)

我见过的最常见的情况是能够使用与主程序不同的安全模型提供可扩展性。

在单独的AppDomain中加载插件允许两件事:

  1. 您可以实施更受限制的安全模型
  2. 如果插件有问题,您可以阻止插件拆除
  3. AppDomains的另一个好处是加载和检查程序集。在单独的AppDomain中执行此操作允许您从单独的程序集中收集信息(或运行代码),然后从进程的空间卸载整个程序集。如果直接加载程序集,则无法卸载它。如果您希望能够在运行时将类型“升级”为新版本(即:加载远程程序集,并在以后重新加载它),这也很有用。

答案 1 :(得分:5)

当您需要在应用程序中托管不可靠或不信任它们的第三方组件(如插件)或者您希望能够卸载它们时,建议创建新域。

答案 2 :(得分:3)

一个典型的例子是插件/类似插件的情况。它不仅允许您在需要时卸载DLL,还可以让您更好地控制插件允许执行的操作。

此外,如果您要创建要再次卸载的临时程序集(代码生成),这是一种很好的方法。 (LCG只允许实现单个方法,如果你想实现一个完整的类,你需要发出一个“真正的”程序集。)