我正在开发一个多租户MVC4门户网站,旨在托管动态生成的MVC4应用程序。
用例:客户端使用Web门户上载xml规范。规范被传递给生成mvc4应用程序的Web服务,编译它并将zip文件返回到包含视图,css,javascript和dll(编译的c#代码)的门户网站。然后,门户网站解压缩收到的zip文件,并将其内容放在门户网站内的文件夹(模块)中。然后客户端可以浏览新的“已部署”应用程序。可以部署同一应用程序的许多版本,我计划为每个部署使用不同的命名空间。注意:生成的模块具有一些依赖关系,这些依赖关系将由Web门户使用DI注入器注入(正在考虑使用ninject)
我已经就如何构建模块化MVC应用程序做了大量研究。我查看了MVC领域,对MEF,DI框架进行了一些研究,研究了nopCommerce和orchard代码。我似乎无法找到答案的一件事是如何在运行时添加模块而无需重启AppDomain?此外,是否有一种简单的方法可以在运行时为每个模块注册路由?
我正在尝试避免重新启动应用,因为可能有其他人使用门户/部署模块,而其他人正在上传新规范。
答案 0 :(得分:0)
您是否看过this(稍微过时)的教程?它不会解决重新扫描模块的问题,但引入的PluginAreaBootstrapper
类似乎是一个好的开始。也许您可以在系统中的特定事件上运行PluginAreaBootstrapper
的{{1}}方法(让我们称之为Init()
)。