最佳实践如何使用.net CORE隔离动态代码/程序集

Boa*_*ler 6 .net c# appdomain asp.net-core-mvc asp.net-core

使用.NET 4.5,我创建了一个可扩展的Web应用程序.使用来自第三方的运行时认证代码执行.

为此,我使用app域和进程间通信.

现在我看到我使用的很多技术都不再支持.NET核心了

喜欢:

  • 应用程序域
  • 远程处理
  • BinarySerzializers

对于大多数人来说,有明显的解决方案.但删除AppDomains是一件困难的事情.

如果我理解正确,我应该使用流程.但是,如果我的应用程序有大约100个扩展(多个客户)?这意味着我必须在微服务中创建100个进程(微服务)或至少组合一些进程.

但我对任何一个都感觉不舒服.从某种意义上说,我最终会有数百个进程.如果我分组,我仍然可以在他们之间受到影响.

那么选择什么是正确的方法呢?

Soc*_*ock 2

一种可能的解决方案可能是使用AssemblyLoadContextAppDomains 来代替。

这并不是 AppDomains 和为您提供的隔离级别的直接替代,但它可能足以满足您的需求 - 它允许您使用 和 的等效项AppDomain.LoadFile,AppDomain.ResolveEvent为您提供程序集加载隔离。

目前没有任何关于此的真正文档,但在这里这样做存在一个问题: https: //github.com/dotnet/coreclr/issues/5463