我应该为我的网络应用程序遵循什么设计模式?

时间:2012-06-12 21:01:09

标签: c# asp.net web-services design-patterns

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

可扩展后端 允许其他人上传“插件”以启用其他REST API

可扩展的前端:我的前端目前有一个顶级网址栏,如下所示:

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

我正在寻找这样的事情:假设我的应用程序有一个简单的管理面板,当有人上传带有清单文件的兼容“模块”时,应用程序应该将其添加到主应用程序中并添加一个链接到其中一个基于插件清单所说的内容的类别。 (可选)将此插件的说明添加到主应用程序网页。

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

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

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

1 个答案:

答案 0 :(得分:3)

基本解决方案:

非常接近裸机,但对于后端,您可以创建一个包含逻辑的dll,以及一个注册新GenericHandlers来处理请求的HttpModule。使用web.config来注册插件模块,或者只需复制到bin中就可以Microsoft.Web.Infrastructure.DynamicModuleHelper使用register your http modules at runtime而无需修改web.config。

PortableAreas:

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

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

ASP.NET MVC只是“ASP.NET”

因此,webforms和MVC可以存在于同一个应用程序中。 看看这篇关于"consuming a portable area with a web forms application"的文章。基本上它只是将MVC相关的dll和配置添加到现有应用程序,并建立通信。

或者真正看一下真正的CMS,

可能使用具有工作文档的插件系统的实际解决方案。取决于“核心应用程序”中哪些功能的百分比,以及作为插件和您的需求开发的百分比。

相关问题