具有 ASP.NET vNext Core CLR 的模块化功能
本文关键字:模块化 功能 CLR Core ASP NET vNext 具有 | 更新日期: 2023-09-27 18:33:38
在 ASP.NET 4.5 中,可以使用 Assembly.Load()
或 AppDomain.CurrentDomain.Load()
在运行时动态加载程序集。这可用于以模块的形式向正在运行的 Web 应用程序添加新功能,而无需重新生成甚至重新启动应用程序。
我想知道如何使用针对核心框架的新 ASP.NET vNext(5.0?(来完成此操作。我知道这可以通过完整的框架来完成,因为System.AppDomain
与重载的Assembly.Load()
一起可用。当我更改为面向核心框架时,我不再有可用的System.AppDomain
,Assembly.Load()
变得有限。
有没有办法在 ASP.NET 5.0 Core框架中获得这种动态模块化功能?
我不确定什么是好的答案,因为 Asp.Net 5 太新了,而且没有很多完整的文档。
从理论上讲应该是可能的,只是与您习惯的不同。
查看源代码,有一个接口 IAssemblyLoadContext,它将允许您获取程序集。 还有IAssemblyLoader。
这些由"kre"主机使用,它是 Asp.Net 5的基础部分,基本上可以增强您的应用程序。 因此,您需要将IAssemblyLoader
添加到底层主机,以便 kre。
不幸的是,到目前为止,我在代码中还没有看到很多扩展点。 我们会得到这些扩展点吗? 我不知道。 您可以在 github 页面上记录问题。 也有可能有一个我目前没有看到的扩展点。
回到这个问题,你能为 Asp.Net 5 Core添加这种可扩展性吗? 是的,您可以创建自己的主机,类似于默认主机,然后包含自定义加载程序,然后使用该主机启动应用程序。
你可以试试 ExtCore 框架
它允许开箱即用的模块化和可扩展 ASP.NET 5 个应用程序。
总之
- 它允许同时使用来自 dll 和 nuget 包的两个模块。
- 它允许所有模块在单个上下文中使用存储,并拥有自己的模型和存储库。
- 每个扩展都可以有控制器、视图、静态内容等。