【问题标题】:Why did Microsoft bring AppDomain back to .NET Core 3.0?为什么微软将 AppDomain 带回 .NET Core 3.0?
【发布时间】:2019-10-28 00:00:55
【问题描述】:

根据记忆,微软带走了AppDomain,这个机制已经关闭了。

现在突然发现AppDomain又回来了:

Assembly System.Runtime.Extensions,版本=4.2.1.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a\dotnet\packs\Microsoft.NETCore.App.Ref\3.0.0\ref\netcoreapp3.0\System.Runtime.Extensions.dll

程序集包含 AppDomain 类。

这是我的问题:为什么?

【问题讨论】:

    标签: .net-core appdomain


    【解决方案1】:

    Porting to .NET Core

    为什么停产? AppDomain 需要运行时支持并且是 一般相当昂贵。虽然仍由 CoreCLR 实现,但它是 在 .NET Native 中不可用,我们不打算添加它 有能力。

    我应该改用什么? AppDomains 用于不同的 目的。对于代码隔离,我们推荐进程和/或 容器。对于程序集的动态加载,我们推荐新的 AssemblyLoadContext 类。

    此外

    当然,只是因为有些东西不是 今天在 .NET Core 中可用并不意味着我们停止使用它。多数情况 案件,这只是意味着我们没有时间调查是否 移植是有意义的,或者认为它与 .NET Core 当前提供的应用程序模型。因此,这是一个区域 我们非常希望收到您的反馈。

    那么实际支持的是什么?

    AppDomain Class

    在 .NET Core 上,AppDomain 实现受设计和限制 不提供隔离、卸载或安全边界。为了 .NET Core,只有一个 AppDomain。隔离和卸载是 通过 AssemblyLoadContext 提供。安全边界应该是 由进程边界和适当的远程技术提供。

    它适用于某些任务,但在很多情况下不支持 方式。

    适用于

    .NET Core

    • 3.0 2.2 2.1 2.0

    .NET 框架

    • 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0 1.1

    .NET 标准

    • 2.1 2.0

    如果您使用不受支持的东西会怎样?

    它要么不存在,要么你得到一个很大的讨厌的明显 throw new NotSupportedExceptionPlatformNotSupportedException 取决于何时何地和为什么

    进一步阅读

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      相关资源
      最近更新 更多