使用ASP.NET 4.5,可以使用Assembly.Load()
或AppDomain.CurrentDomain.Load()
在运行时动态加载程序集。这可用于以模块的形式向正在运行的Web应用程序添加新功能,而无需重建甚至重新启动应用程序。
我想知道如何使用面向Core框架的新ASP.NET vNext(5.0?)来完成此操作。我知道这可以使用完整框架来完成,因为System.AppDomain
可用,并且重载Assembly.Load()
。当我更改为定位Core框架时,我不再有System.AppDomain
可用且Assembly.Load()
变得有限。
有没有办法在ASP.NET 5.0 Core框架中获得这种动态模块化功能?
答案 0 :(得分:3)
我不确定会有什么好的答案,因为Asp.Net 5是如此新颖,并且没有很多完整的文档。
理论上它应该是可能的,它只会与你习惯的不同。
查看源代码,有一个接口IAssemblyLoadContext,可以让你获得程序集。还有IAssemblyLoader。
这些是由“kre”主机使用的,它是Asp.Net 5的基础部分,它基本上可以提升您的应用程序。因此,您需要将IAssemblyLoader
添加到底层主机,以便kre。
不幸的是,我还没有在代码中看到很多扩展点。我们会获得这些扩展点吗?我不知道。您可以在github页面上记录问题。也有可能存在我目前没有看到的扩展点。
回到这个问题,您能否将这种可扩展性添加到Asp.Net 5 Core?是的,你可以创建自己的主机,类似于默认主机,然后包含你的自定义加载器,然后用它启动你的应用程序。
答案 1 :(得分:1)
您可以尝试ExtCore框架
它允许开箱即用的模块化和可扩展的 ASP.NET 5 应用程序。
简而言之