我正在开发一个多租户MVC4 web门户,旨在托管动态生成的MVC4应用程序。
用例:客户端使用web门户上载xml规范。该规范被传递到web服务,该web服务生成mvc4应用程序,对其进行编译,并将包含视图、css、javascript和dll(已编译的c#代码)的压缩文件返回到门户。然后,门户对收到的zip文件进行解压缩,并将其内容放在门户自身内的一个文件夹(Modules)中。然后,客户端可以浏览新部署的应用程序。可以部署同一应用程序的多个版本,我计划为每个部署使用不同的名称空间。注意:生成的模块具有一些依赖项,这些依赖项将由web门户使用DI注入器注入(我正在考虑使用ninject)
我对如何构建一个模块化的MVC应用程序做了大量的研究。我研究了MVC领域,做了一些关于MEF,DI框架的研究,研究了nopCommerce和果园代码。有一件事我似乎找不到答案,那就是如何在运行时添加模块,而不需要重新启动AppDomain?另外,有没有一种简单的方法可以在运行时为每个模块注册路由?
我正在努力避免应用程序重启,因为其他人可能正在使用门户/部署的模块,而其他人正在上传新的规范。
发布于 2013-08-01 17:42:40
你有没有看过this (只是有点过时)教程?它不会解决重新扫描模块的问题,但是引入的PluginAreaBootstrapper类似乎是一个很好的开始。也许您可以对系统中的特定事件运行PluginAreaBootstrapper的Init()方法(让我们称其为OnNewModuleDeployed)。
https://stackoverflow.com/questions/15436073
复制相似问题