MVC还是事件驱动的面向组件的Web框架?
这个问题打算与技术无关。我们更喜欢哪种Web框架,何时使用:纯MVC或者面向事件驱动的组件?
只是为了指出"技术不可知论",在这里,我列举了几种MVC与组件Web框架,它们使用多种技术/语言:
- Struts与Java Server Faces /挂毯
- 新的ASP.NET MVC与"经典" ASP.NET
- Cake PHP与PRADO
解决方案
目前,"新热点"趋势是朝着MVC方法发展。我个人更喜欢MVC框架的约定,因为省去了许多占用宝贵开发时间的繁琐工作。话虽如此,约束往往相当严格,在某些情况下可能需要更传统的基于组件的方法。总而言之,它是选择工作的正确工具。
我大致遵循以下准则:
- Web Forms / SQLDataSource-快速且肮脏的应用程序,供内部使用以显示报告或者其他一些此类数据。
- MVC-核心产品的简单到复杂的业务逻辑。
- MVC / REST Web服务/ jQuery- HTML /无论哪种类型的客户端RIA(以用户体验为主导)。
- Flash / Flex RIA-在需要极其丰富的客户端时有用(请在此处考虑多媒体操作)。
当然,此列表中有很多空白,但这仅表示问题的复杂性。
通常使用的技术不是选择的问题,尤其是在大公司中,我们没有太多选择。
如果我能够选择一种技术,那么在Java中,我会选择Wicket。我一直在使用Spring MVC,它很好,但是Wicket具有Spring MVC所没有的简洁功能:服务器端状态管理和封装,丰富的组件模型,没有不必要的XML映射文件(仅纯Java和HTML)。
我主要是ASP.Net开发人员,但是我发现MVC是创建功能复杂的网站(通常是业务线类型的网站)的更好方法,因为它可以更好地将业务逻辑和规则与用于显示的标记区分开数据发送给最终用户。
对于快速且肮脏的站点(通常直接连接到数据库)或者更丰富的接口,"事件驱动的面向组件"模型更为有效。
就个人而言,我会说MVC是通向网站的方式。我们对HTML和CSS有更多的控制权,与此同时,控制器模式与HTTP配合得很好。事件驱动的Web编程非常适合小型网站或者不熟悉HTML和CSS和更底层概念的人们。
我今天是php开发人员;但是,我强烈喜欢Wicket和/或者Lift,尤其是后者。 Prado的问题似乎是控制器绑定到页面,而不是页面上的逻辑控件,否则,它似乎仍然比PHP中的大多数其他选项要好。我认为所有这些都归结为可重用性,除非我们拥有由控制器支持的组件,否则我们无法将显示与支持控制逻辑完全分开。
所有这些" MVC"框架所实现的MVC似乎很烂,我们将获得带有大量控件的逻辑页面,并且我们必须处理页面控制器上的所有控件,哇,谢谢,现在我有了MVC / n,其中n是控件数量。到目前为止,我所见过的大多数" MVC"系统都是脑残标签库的杂乱无章,将请求响应扭曲为一个必须了解页面上所有内容的控制器。
带有js和CSS的xhtml模板完美地分开了。再加上一些支持这些组件的类,突然之间,我们就不忙于想知道复杂的页面将如何工作,或者我们是否想将x放到其他地方。