2

我有一个 ASP.NET 应用程序,它同时提供前端服务(可视化)和后端服务(数据转换和从后端 SQL 数据库输出一些数据)。我想要以下内容:

可扩展后端 允许其他人上传“插件”以添加额外的 REST API

可扩展前端:我的前端目前有一个顶部 URL 栏,如下所示:

Category-1   Category-2   Category-3
--App11      ---App21     ---App31
--App12

我正在寻找这样的东西:假设我的应用程序有一个简单的管理面板,当有人使用清单文件上传兼容的“模块”时,应用程序应该将其添加到主应用程序中,并添加一个指向基于类别之一的链接关于插件清单的内容。或者,将此插件的描述添加到主应用程序网页。

具体来说,我正在寻找以下方面的建议:

  • 主应用程序应该如何构建?
  • 插件的架构应该是什么样的?
  • 如何启用类似设计的仪表板并让插件支持它?

我在内容管理系统Joomla中看到了这一点,但不确定要遵循什么设计范式来实现这一点。我做了一件愚蠢的事情,并将我当前的(巨大的)应用程序设计为与aspx主应用程序链接的单独文件。我不介意重写部分内容,但如果没有重大重写,是否有可能实现我的愿望?关于如何实现这一目标的任何建议?

4

1 回答 1

3

一个基本的解决方案:

非常接近裸机,但对于后端,您可以创建一个包含逻辑的 dll,以及一个HttpModule注册新的 GenericHandler 以处理请求的 dll。要么使用 web.config 注册插件模块,要么使用在运行Microsoft.Web.Infrastructure.DynamicModuleHelper注册你的 http 模块,只需复制到你的 bin 中而不修改 web.config。

便携领域:

MVCContrib 有一个名为“PortableAreas”的功能,可以用来将 UI 和后端代码像插件一样打包成 dll。MVC 控制器可以轻松地为 UI 和 JSON 或 XML 返回 HTML 内容,以充当 REST Web 服务。MVCContrib 还定义了一个“总线”,插件可以使用它与主机应用程序通信。比如“嘿,添加一个指向我的 categoryXY 的新链接!”。

看看这些关于可移植区域的博客文章:asp net mvc 可移植区域 via mvccontrib(谈论 MVC2,但也适用于 MVC3)。最新版本可以通过 nuget 下载:MvcContrib.Mvc3-ci

ASP.NET MVC 只是“ASP.NET”

因此,webforms 和 MVC 可以存在于同一个应用程序中。看看这篇关于“使用 Web 表单应用程序使用便携式区域”的文章。基本上它只是将 MVC 相关的 dll 和配置添加到您现有的应用程序中,并设置通信。

或者真的看看真正的CMS,

也许使用一个有工作的、记录在案的插件系统是真正的解决方案。取决于哪些功能将成为“核心应用程序”的一部分,以及将开发为插件和您的需求的百分比。

于 2012-06-12T22:22:41.993 回答