Asp.net mvc 4 从数据库动态加载带有控制器和视图的DLL,存储到HDD,并通过activator激活

Asp.net mvc 4 从数据库动态加载带有控制器和视图的DLL,存储到HDD,并通过activator激活,asp.net-mvc-4,dynamic,dll,Asp.net Mvc 4,Dynamic,Dll,我想问一下,在MVC4中是否存在一种基于存储在数据库中的外部程序集动态扩展MVC应用程序的方法 先决条件 每个外部组件都会引用主核心组件 每个控制器将继承基本控制器,使核心项目中的数据库上下文可访问,并提供与核心相关的基本功能的机会 控制器名称在区域内是唯一的-核心和插件在一起 区域将在核心应用程序中定义 插件仅依赖于引用的核心组件 通缉方案: 在启动时,应用程序将从给定的源加载所有程序集—假设它们已经存在于bin文件夹中,并且尚未在主应用程序中引用 通过reflector将有关已加载程序集的信

我想问一下,在MVC4中是否存在一种基于存储在数据库中的外部程序集动态扩展MVC应用程序的方法

先决条件

  • 每个外部组件都会引用主核心组件
  • 每个控制器将继承基本控制器,使核心项目中的数据库上下文可访问,并提供与核心相关的基本功能的机会
  • 控制器名称在区域内是唯一的-核心和插件在一起
  • 区域将在核心应用程序中定义
  • 插件仅依赖于引用的核心组件
  • 通缉方案:

  • 在启动时,应用程序将从给定的源加载所有程序集—假设它们已经存在于bin文件夹中,并且尚未在主应用程序中引用

  • 通过reflector将有关已加载程序集的信息存储到信息对象集合中,并通过某种服务进行注册,外部控制器可通过调用键(控制器名称和操作名称)或使核心程序集可见/可访问的其他机制从该服务调用。Info对象将包含对控制器的类型引用、控制器名称和操作集合

  • 调用控制器操作时,路由筛选器或服务将搜索核心程序集/插件信息集合中是否存在控制器和操作

  • 实例化控制器/调用操作并传递参数,使用核心布局呈现外部视图或重定向到错误控制器和hadle异常

  • 在win32窗体中,此场景可通过activator和reflector实现。当我想更新插件时,需要做的就是替换数据库中的Dll并重新启动IIS

    Maing的目标是创建开发插件的可能性,而不必更改或重新部署核心应用程序到服务器,并通过将新插件上传到database/bin文件夹使其工作。这种方法在MVC4中是可以实现的,还是MVC应用程序中的所有内容都必须是强类型和强引用的


    如果是的话,您知道一些将外部控制器加载到核心应用程序的工作示例,而不在启动和可调用之前引用它,只是一个简单的示例吗

    您是否研究过MEF,以便使用mefcontrollerfactory在库中加载以实例化控制器

    这个网站应该可以帮助你开始


    谢谢,我会仔细查看并告诉您