这个问题与技术无关。您更喜欢哪种 Web 框架,以及何时:纯 MVC 还是面向事件驱动的组件?
只是为了说明“技术不可知论”,在这里我列举了一些 MVC 与组件 Web 框架,它们采用不同的技术/语言:
- Struts与Java Server Faces / Tapestry
- 新的 ASP.NET MVC与“经典” ASP.NET
- Cake PHP与PRADO
这个问题与技术无关。您更喜欢哪种 Web 框架,以及何时:纯 MVC 还是面向事件驱动的组件?
只是为了说明“技术不可知论”,在这里我列举了一些 MVC 与组件 Web 框架,它们采用不同的技术/语言:
我白天是 php 开发人员;但是,我更喜欢 Wicket 和/或 Lift,尤其是后者。Prado 的问题似乎是控制器绑定到页面,而不是页面上的逻辑控件,否则,它似乎仍然比 PHP 领域的大多数其他选项更好。我认为一切都归结为可重用性,除非您拥有由控制器支持的组件,否则您无法将显示与支持控制逻辑完全分开。
所有这些“MVC”框架实现的 MVC 似乎很糟糕,你得到一个带有大量控件的逻辑页面,你必须处理页面控制器上的所有这些,哇,谢谢,现在我有了 MVC / n,其中 n 是控件的数量。到目前为止,我看到的大多数“MVC”系统都是脑死亡标签库的混搭,将请求响应扭曲到必须了解页面上所有内容的单个控制器中。
xhtml 模板与 js 和 css 完美分离。除了支持这些组件的一些类之外,突然之间,您不再忙于想知道复杂的页面将如何工作,或者您是否想将部分 x 放到其他地方。
现在,“新热点”趋势是朝着 MVC 方法发展。我个人更喜欢 MVC 框架的约定,因为很多占用宝贵开发时间的杂乱无章的工作都被取消了。话虽如此,约束往往相当严格,在某些情况下可能需要更传统的基于组件的方法。总而言之,它是工作选择的正确工具。
使用的技术通常不是选择问题,尤其是在大公司中,您没有太多选择。
如果我能够选择一种技术,在 Java 中我会选择 Wicket。我一直在使用 Spring MVC,它很好,但是 Wicket 有一个 Spring MVC 没有的简洁特性:服务器端状态管理和封装,丰富的组件模型,没有不必要的 XML 映射文件——只有纯 Java 和 HTML。
就我个人而言,我会说 MVC 是网站的必经之路。您可以更好地控制 HTML 和 CSS,同时控制器模式与 HTTP 配合得很好。事件驱动的 Web 编程非常适合小型网站或不熟悉 HTML 和 CSS 以及更底层概念的人。
我主要是 ASP.Net 开发人员,但我发现 MVC 是创建功能复杂的网站(通常是业务线类型的网站)的更好方法,因为它允许更好地将业务逻辑和规则与用于显示的标记分开数据给最终用户。对于快速而肮脏的站点(通常与数据库直接连接)或更丰富的接口,“事件驱动的面向组件”模型更有效。
我大致遵循以下准则:
当然,这个列表中有很多空白,但这只是代表了一个问题的复杂程度。