【问题标题】:MVC or event-driven component-oriented web frameworks? [closed]MVC 还是事件驱动的面向组件的 Web 框架? [关闭]
【发布时间】:2025-06-11 23:30:02
【问题描述】:

此问题旨在与技术无关。您更喜欢哪种 Web 框架,何时:纯 MVC 还是面向事件驱动的组件?

为了说明“技术不可知论”,我在这里列举了一些 MVC 与组件 Web 框架,它们采用不同的技术/语言:

  • Struts vs. Java Server Faces / Tapestry
  • 新的 ASP.NET MVC vs.“经典”ASP.NET
  • Cake PHP vs. PRADO

【问题讨论】:

    标签: web-frameworks


    【解决方案1】:

    我白天是 php 开发人员;但是,我更喜欢 Wicket 和/或 Lift,尤其是后者。 Prado 的问题似乎是控制器绑定到页面,而不是页面上的逻辑控件,否则,它似乎仍然比 PHP 领域的大多数其他选项更好。我认为一切都归结为可重用性,除非您拥有由控制器支持的组件,否则您无法将显示与支持控制逻辑完全分开。

    所有这些'MVC'框架实现的MVC似乎很糟糕,你得到一个带有大量控件的逻辑页面,你必须处理页面控制器上的所有这些,哇,谢谢,现在我有MVC / n,在哪里n 是控件的数量。到目前为止,我所见过的大多数“MVC”系统都是脑死亡标签库的混搭,将请求响应扭曲到必须了解页面上所有内容的单个控制器中。

    xhtml 模板与 js 和 css 完美分离。除了支持这些组件的几个类之外,突然之间,您不再忙于想知道复杂的页面将如何工作,或者您是否想将 x 部分放在其他地方。

    【讨论】:

      【解决方案2】:

      就我个人而言,我会说 MVC 是网站的必经之路。您可以更好地控制 HTML 和 CSS,同时控制器模式与 HTTP 配合得很好。事件驱动的网络编程非常适合小型网站或不熟悉 HTML 和 CSS 以及更底层概念的人。

      【讨论】:

      • Quora 是事件驱动的,规模庞大。 Facebook 收购的 Friendfeed(联合创始人 Brett Taylor 现在是 Facebook 的 CTO)基于事件驱动架构。我相信 LinkedIn Mobile 可以与 node 一起使用。我不认为事件驱动的网络编程适用于小型网站。我认为这更多地取决于您的网站/应用程序是否非常动态地独立于用户交互。
      【解决方案3】:

      我主要是 ASP.Net 开发人员,但我发现 MVC 是创建功能复杂的网站(通常是业务线类型的网站)的更好方法,因为它可以更好地将业务逻辑和规则与标记分离用于向最终用户显示数据。 对于快速而肮脏的站点(通常与数据库直接连接)或更丰富的接口,“面向组件的事件驱动”模型更有效。

      【讨论】:

      • (...) 通常直接连接到数据库
      【解决方案4】:

      所使用的技术通常不是选择问题,尤其是在大公司中,您没有太多选择。

      如果我能够选择一种技术,在 Java 中我会选择 Wicket。我一直在使用 Spring MVC,它很好,但是 Wicket 有一个 Spring MVC 没有的简洁特性:服务器端状态管理和封装,丰富的组件模型,没有不必要的 XML 映射文件——只有纯 Java 和 HTML。

      【讨论】:

        【解决方案5】:

        我大致遵循以下准则:

        • Web 表单/SQLDataSource - 快速而肮脏的应用程序,供内部使用,用于显示报告或其他一些此类数据。
        • MVC - 核心产品的简单到复杂的业务逻辑。
        • MVC/REST Web 服务/jQuery- HTML/任何类型的客户端 RIA(当用户体验至高无上时)。
        • Flash/Flex RIA - 在需要极其丰富的客户端时很有用(在此处考虑多媒体操作)。

        当然,这个列表中有很多空白,但这只是代表了一个问题的复杂程度。

        【讨论】:

          【解决方案6】:

          目前,“新热点”趋势正朝着 MVC 方法发展。我个人更喜欢 MVC 框架的约定,因为许多占用宝贵开发时间的杂乱无章的工作都被取消了。话虽如此,约束往往相当严格,在某些情况下可能需要更传统的基于组件的方法。总而言之,它是适合工作选择的工具。

          【讨论】:

            最近更新 更多