如何在运行时将模块添加到MVC4而不重启AppDomain

时间:2013-03-15 15:23:30

标签: c# asp.net-mvc asp.net-mvc-4

我正在开发一个多租户MVC4门户网站,旨在托管动态生成的MVC4应用程序。

用例:客户端使用Web门户上载xml规范。规范被传递给生成mvc4应用程序的Web服务,编译它并将zip文件返回到包含视图,css,javascript和dll(编译的c#代码)的门户网站。然后,门户网站解压缩收到的zip文件,并将其内容放在门户网站内的文件夹(模块)中。然后客户端可以浏览新的“已部署”应用程序。可以部署同一应用程序的许多版本,我计划为每个部署使用不同的命名空间。注意:生成的模块具有一些依赖关系,这些依赖关系将由Web门户使用DI注入器注入(正在考虑使用ninject)

我已经就如何构建模块化MVC应用程序做了大量研究。我查看了MVC领域,对MEF,DI框架进行了一些研究,研究了nopCommerce和orchard代码。我似乎无法找到答案的一件事是如何在运行时添加模块而无需重启AppDomain?此外,是否有一种简单的方法可以在运行时为每个模块注册路由?

我正在尝试避免重新启动应用,因为可能有其他人使用门户/部署模块,而其他人正在上传新规范。

1 个答案:

答案 0 :(得分:0)

您是否看过this(稍微过时)的教程?它不会解决重新扫描模块的问题,但引入的PluginAreaBootstrapper类似乎是一个好的开始。也许您可以在系统中的特定事件上运行PluginAreaBootstrapper的{​​{1}}方法(让我们称之为Init())。