c# - 如何在不重启 AppDomain 的情况下在运行时将模块添加到 MVC4

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

我正在开发一个 Multi-Tenancy MVC4 网络门户,旨在托管动态生成的 MVC4 应用程序。

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

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

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

最佳答案

你看过this吗? (只是有点过时了)教程?它不会解决重新扫描模块的问题,但引入的 PluginAreaBootstrapper 类似乎是一个好的开始。也许您可以针对系统中的特定事件运行 PluginAreaBootstrapperInit() 方法(我们称它为 OnNewModuleDeployed)。

关于c# - 如何在不重启 AppDomain 的情况下在运行时将模块添加到 MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15436073/

相关文章:

c# - MVC 4 Ajax.Action 链接不起作用

javascript - MVC : Get selected text from <Select> using JQuery

c# - ORM 的哪些选择允许接近 'flick a switch' 在...SQL Server/SQL Azure 和 PostgreSQL/'Cloud' PostgreSQL 之间更改 RDBMS

c# - 适用于 Excel 2007 和 2010 的 Excel 插件

asp.net - 如何使用 AJAX 渲染部分表单元素

c# - 应用程序启动时的 Asp.net MVC 进度条

c# - MVC 使用值列表绑定(bind)复杂对象

c# - Rhino Mocks 部分模拟

c# - 使用非默认权限将文件上传到 Amazon S3

c# - 操作 链接到 "lose"参数