本文介绍了使用 AppDomain 的好例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在面试中不断被问及 AppDomains,并且我了解基础知识:

I keep getting asked about AppDomains in interviews, and I know the basics:

  • 它们是应用程序中的隔离级别(使它们与应用程序不同)
  • 它们可以有线程(使它们与线程不同)
  • 一个应用域中的异常不会影响另一个应用域
  • appdomains 不能访问彼此的内存
  • 每个应用程序域可以有不同的安全性

我仍然不明白是什么让它们变得必要.我正在寻找一个合理的具体情况,当您使用它时.

I still don't get what makes them necessary. I'm looking for a reasonable concrete circumstance when you would use one.

答案:

  • 不受信任的代码
    • 核心应用保护
      不受信任的/第 3 方插件通过隔离在具有安全限制的单独应用程序域中而被禁止破坏共享内存和对注册表或硬盘驱动器的非授权访问,从而保护应用程序或服务器.例如ASP.NET 和 SQL Server 托管组件代码
    • 稳定性
      应用细分为安全、独立的特性/功能
    • 架构灵活性
      在单个 CLR 实例或每个程序中自由运行多个应用程序.

    还有什么吗?

    推荐答案

    可能最常见的是加载包含来自不受信任方的插件代码的程序集.代码在其自己的 AppDomain 中运行,从而隔离应用程序.

    Probably the most common one is to load assemblies that contain plug-in code from untrusted parties. The code runs in its own AppDomain, isolating the application.

    此外,无法卸载特定程序集,但可以卸载 AppDomains.

    Also, it's not possible to unload a particular assembly, but you can unload AppDomains.

    对于完整的纲要,Chris Brumme 有一个关于此的大量博客条目:

    For the full rundown, Chris Brumme had a massive blog entry on this:

    https://devblogs.microsoft.com/cbrumme/appdomains-application-域/

    这篇关于使用 AppDomain 的好例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-27 09:27