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

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

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

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

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

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

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

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

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

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

最佳答案

基本解决方案:

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

可移植区域:

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

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

ASP.NET MVC 只是“ASP.NET”

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

或者真正看看真正的 CMS,

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

关于c# - 我的网络应用程序应该遵循什么设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004814/

相关文章:

c# - ASP.Net MVC 应用程序看似忽略数据库连接字符串

.net - 你如何为asp.net 应用程序存储图像?

c# - 如何在模板字段 gridview 中添加条件按钮?

c# - 如何使用触发器来同步列表框选择?

c# - 如何在 C# 中使用其 id 获取输入类型=日期的值

c# - 群集重叠圆圈?

jquery - 为什么自动完成 jQuery 的渲染菜单功能不适用于 GridView 第二行?

iOS SDWebImage NSURLErrorDomain 在联系服务器之前就出现错误 406,为什么?

web-services - 您能否帮助澄清有关 RESTful 服务和代码生成的一些要点?

使用 IUSR 的 ASP.NET Web 服务,而不是应用程序池标识