Luf*_*ing 3 appdomain .net-core
从记忆中,微软拿走AppDomain了,这个机制已经被关闭了。
现在突然发现AppDomain又回来了:
程序集 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 类。
这是我的问题:为什么?
为什么停产了?AppDomains 需要运行时支持并且通常非常昂贵。虽然仍由 CoreCLR 实现,但它在 .NET Native 中不可用,我们不打算在那里添加此功能。
我应该用什么代替?AppDomains 用于不同的目的。对于代码隔离,我们推荐进程和/或容器。对于程序集的动态加载,我们建议使用新的 AssemblyLoadContext 类。
此外
当然,仅仅因为今天 .NET Core 中没有某些东西并不意味着我们停止了它。在大多数情况下,这只是意味着我们没有时间调查移植是否有意义或认为它与 .NET Core 当前提供的应用程序模型无关。因此,这是我们非常希望获得您的反馈的领域。
那么实际上支持什么?
在 .NET Core 上,AppDomain 实现受设计限制,不提供隔离、卸载或安全边界。对于 .NET Core,只有一个 AppDomain。通过 AssemblyLoadContext 提供隔离和卸载。安全边界应由进程边界和适当的远程技术提供。
它适用于某些任务,但在很多方面都不受支持。
适用于
.NET 核心
- 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 NotSupportedException或者PlatformNotSupportedException取决于何时何地以及为什么
进一步阅读
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |