最佳实践如何隔离动态代码/程序集与.net CORE
本文关键字:代码 动态 程序集 CORE net 隔离 何隔离 最佳 | 更新日期: 2023-09-27 17:51:22
我用。net 4.5创建了一个可扩展的web应用程序。在运行时执行第三方认证的代码。
为此,我使用应用程序域和进程间通信。
现在我发现我用于此的许多技术在。net core中不再支持
:
- AppDomains
- Remoting
- BinarySerzializers
对于其中的大多数,有明显的解决方案。但是移除AppDomains是一件很困难的事情。
如果我理解正确的话,我应该使用进程。但是如果我的应用程序有大约100个扩展(多个客户)呢?这意味着我必须创建100个进程(微服务),或者至少将一些进程分组在微服务中。
但是两个我都觉得不太舒服。在一种情况下,我最终会得到数百个过程。如果我分组,我仍然可以得到它们之间的影响。
那么正确的选择是什么呢?
一个可能的解决方案是使用AssemblyLoadContext
代替AppDomains。
这不是AppDomains和隔离级别的直接替代,但它可能足以满足您的需求-它允许您使用相当于AppDomain.LoadFile
和AppDomain.ResolveEvent
的组件加载隔离。
目前没有任何真正的文档,但是在这里这样做会有一个问题:https://github.com/dotnet/coreclr/issues/5463