【问题标题】:Why are action based web frameworks predominant?为什么基于动作的 Web 框架占主导地位?
【发布时间】:2011-03-03 01:30:17
【问题描述】:

大多数 Web 框架仍在使用传统的基于动作的 MVC 模型。控制器接收请求,调用模型并将渲染委托给模板。这就是 Rails、Grails、Struts、Spring MVC ... 正在做的事情。

另一类,基于组件的框架,如 Wicket、Tapestry、JSF 或 ASP.Net Web 表单在过去几年变得越来越流行,但我认为传统的基于动作的方法更流行。甚至 ASP .Net Web Forms 也成为了 ASP .Net Web MVC 的同级名称。编辑:也许我的看法是错误的,因为人们对 Wicket 越来越感兴趣。如果我问Google Trends,传统的 MVC 框架还有更多的增长。

我认为使用这两种框架构建的应用程序非常重叠,所以问题是:为什么基于动作的框架如此占主导地位?

【问题讨论】:

    标签: asp.net-mvc model-view-controller struts wicket web-frameworks


    【解决方案1】:

    基于组件的框架,例如 Wicket、Tapestry、JSF 或 ASP.Net Web 表格变得越来越流行 过去几年

    [需要引用]?

    我严重怀疑这种说法。 MVC 已经接管了 .Net 博客/推特领域。很难找到有人说“我们将在下一个项目中使用网络表单”。


    MVC 更适合 Web 的无状态特性。组件框架是 Web 开发人员不想要的抽象。

    【讨论】:

    • 无状态不是 Web 的唯一属性。我见过许多在这种模式下工作的遗留应用程序的例子。 Web 也可​​能是有状态的(cookies、AJAX 等)。
    • 不知道其他的,但 ASP.Net Webforms 可能是 Web 上可能存在的最泄漏的抽象。 ASP.Net MVC 不会妨碍它并按照 Web 的工作方式工作。我认为基于组件的东西是为了让拖拖拉拉的猴子开心,并试图让桌面客户端开发人员感兴趣,而不是让网络更容易使用。
    • “MVC 更适合 Web 的无状态特性。组件框架是 Web 开发人员不想要的抽象。”有趣的是,这正是我想说的,但我被否决了,而你没有。太棒了,因为它的措辞比我做得更好。
    【解决方案2】:

    为什么东西更受欢迎?它们有几个原因:因为良好的用户体验、快速的开发周期、最便宜的东西等等

    但有时

    最响亮的

    或最被炒作(rails,虽然它很棒;-))

    还是最嚣张的(苹果)

    或者是营销最激进的东西(微软)

    会赢。

    这就是进化。

    顺便说一句:我在 Thevs。基于组件的框架将是最终的赢家(如 GWT/Vaadin 或 wicket)。

    【讨论】:

      【解决方案3】:

      惯性。一旦你在一项技术上投入了大量资金,想要改用更好的技术就会变得越来越困难。而且它不会好 10 倍,因为这样每个人(甚至是 CEO)都会看到需要做出改变。

      【讨论】:

        【解决方案4】:

        我相信这是因为基于动作的框架让开发人员(和设计人员)能够更好地控制页面的外观。基于组件的框架试图(不成功,恕我直言)隐藏网络就是网络的事实。他们试图让 Web 编程类似于编写本地桌面小部件工具包,如 WinForms 或 Cocoa。

        但网络与此非常、非常不同。我认为基于动作的框架很受欢迎,因为它们认识到这一点。

        编辑

        显然有些人误解了我的意思,所以让我澄清一下。我批评在用户看来功能类似于桌面应用程序的 Web 应用程序。我对此完全没有问题

        我说的是底层编码方法和哲学。标签库系统中的每个标签都以某种方式呈现 HTML,类似于 Cocoa 或 WinForms 等桌面编程库中的小部件。某些系统允许您自定义呈现的 HTML,但这有时并非易事。它将呈现 CSS 类等,您要么几乎无法控制,要么必须特别努力控制。它假装是一个黑盒解决方案,但它不可能,因为如果你想为呈现的 HTML 设置样式或使用 JavaScript 定位它,你必须了解它的结构等等。

        【讨论】:

        • @Thevs 什么都没有。就用户而言,我不是在谈论应用程序的功能。我说的是大多数标签库系统(尤其是 ASP.NET)都试图模仿桌面小部件库的有状态行为。您对小部件呈现的 HTML 的控制也较少(或不太简单),这会使 CSS 和偶尔的 JavaScript 更难执行。
        • 组件的意义在于它们一个黑盒子。就结构(HTML 元素)而言,您不在乎 - 组件使用的元素就是它需要的元素。在样式方面,组件应提供最大数量的合理样式挂钩(类)。您如何找到样式挂钩取决于框架 - 文档或检查组件的标记。如果组件在结构或样式上都是“坏”的,那么它就是一个坏组件。
        【解决方案5】:

        我怀疑开发人员将 MVC 框架用作公开服务的一种简单方式,而不是作为基于操作的 Web 应用程序框架(这纯粹是我的猜测)。即他们将它们用于 AJAX 请求。我预测基于动作的框架的概念在接下来的几年里会悄悄消失,在这种情况下(在某种程度上)MVC 的概念也会消失。

        【讨论】:

          【解决方案6】:

          我认为你只会看到这些框架到处展示。但大多数程序员使用内部(自定义)或更简单的框架模型(如 ExtJS 或 JQuery)并默默地完成他们的工作。

          编辑:顺便说一句,我认为 MVC 模型正在尝试模仿旧的且可能已过时的业务/表示分离模型,该模型是前段时间为遗留应用程序提出的。 我认为这种模式没有未来(从现在起 2-3 年)。 AJAX 已经在改变您使用后端的所有方式。

          【讨论】:

          • 但是浏览器中的 JavaScript (Ajax) 应用程序的后端是什么?
          • 我的意思是服务器逻辑作为后端,由AJAX请求调用。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          • 2012-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多