基于MVC的WEB应用的开发包括控制层和表现层的开发,其中表现层又包括页面逻辑(指客户端验证,客户端界面动态生成)和页面表现元素(界面),这里,将对两种比较常用的基于MVC的优秀的WEB开发架构WebWork+FreeMarker和JSF进行比较。
WebWork是一种传统的MVC框架,其简单而又不失强大,架构非常灵活、扩展性强,完成最核心的功能也仅通过实现Action接口,而扩展的功能基本上可以通过其拦截器结构完成,另外,从WebWork2开始与ServletAPI的解耦也使其具备比较强的可测试性。然而其缺点也是非常地明显,一方面其用户群比较少,缺少足够文档,另一方面,由于其开发团队与Struts团队合并以WebWork为核心开发新的MVC框架Struts Ti ,WebWork2.2已经是其最终版本,缺乏后续版本的支持,而StrutsTi前途也还是个未知数。
JSF是JCP出品Sun力推的标准,虽然出现较迟但可以说是来势汹汹,大有想要一统MVC的架势。JSF的优点在于其标准,附带而来的好处是丰富的JSF组件可供选择,其另一个卖点是拖拽式的界面开发模式。然而,其JSF本身架构的复杂性足以让人望而生畏,一方面,JSF组件的使用一旦出现问题非常难以调试,而其出错信息往往没有多少有价值的东西,另一方面,一旦标准组件不能满足需求需要独立开发的话,难度非常高。
下面将对这两种技术进行比较:
一、控制层:
1.耦合度
1)与ServletAPI的耦合
两者都可以完全与ServletAPI的解耦,在开发时也都应该尽量避免与ServletAPI的耦合
2)与框架API的耦合
WebWork:所有的控制类必须实现Action接口
JSF:FacesBean不需要继承任何JSF接口。但有时需要与界面元素(譬如列表框)产生耦合,开发时应 该尽量将该部分隔离
评价:这两种技术都是低耦合的,不相上下
2.IOC能力
WebWork本身提供了部分的IOC能力,但功能比较弱,已不被推荐。两者都可以通过与Spring的结合获 得IOC的能力,相对而言,JSF更简单而且提供更多的功能。
评价:不相上下,JSF稍微胜出
3.AOP能力
WebWork:其拦截器功能本身就是一种AOP方式
JSF:可以通过与Spring的结合获得AOP能力
评价:WebWork的AOP能力与WebWork的核心结合地更紧密,WebWork稍微胜出
4.配置
WebWork的配置本身不够简洁,而与Spring的结合更是出现重复的配置情况,相比而言,JSF更简洁
评价:JSF胜出
5.可测试性
WebWork:WebWork本身的简洁和灵活使其具备非常高的可测试性,可以脱离容器测试其控制层的行为
JSF:不清楚,似乎不能脱离容器独立测试配置
评价:似乎是WebWork胜出
二、表现层:
1.组件化
FreeMarker:可以通过FreeMarker的宏能力将一些常用的组件,开发比较简单,但同时,自己开发组件时间和质量上可能无法保障
JSF:JSF本身就是为组件而生,由于其标准化,有丰富的组件可以使用,在项目的前期投入少,不需要专门开发组件
评价:随着项目的开展,组件化的优势应该会越来越明显。在这点上,JSF压倒性胜出
2.可调试性
FreeMarker:FreeMarker本身的出错定位能力非常强,往往出错信息非常直观,但一旦进行组件包装,可调试性将大打折扣
JSF:JSF的组件本身比较复杂,调试性差,往往很难根据出错信息定位出错情况,更多的时候需要依靠经验来解决
评价:FreeMarker稍胜出
3.扩展
FreeMarker:FreeMarker的宏功能非常简单,功能扩展非常方便,但不足之处在于其逻辑表达能力比较差
JSF:JSF的组件的复杂性导致扩展新的功能是一个不小的代价,但Java语言强大的表达能力也使其能开发出复杂的功能
评价:FreeMarker稍胜出
4.表现逻辑能力
FreeMarker+WebWork:在WebWork的最新版本中提供了Ajax的客户端验证能力,但仍然比较原始
JSF:JSF有些客户端验证组件,但总的来说,仍然需要加强
评价:都比较差
5.Ajax
FreeMarker+WebWork:WebWork在最新版本中提供了Ajax支持,但包装暂时还是比较原始
JSF:有各种具备Ajax特性的界面组件存在,同时可使用AjaxAnywhere提供更好的用户体验
评价:JSF稍胜出
从如上的比较可以看出,WebWork+FreeMarker和JSF可以说各有胜场,我的看法是,WebWork+FreeMarker具有更平缓的学习曲线,使用比较简单,在应付小项目和小团队上,略胜一筹;而面向大项目和大团队,JSF的组件化在项目的进展中将发挥更大的作用。
除此之外,JSF的拖拽式的界面开发也是一个卖点,但我的看法是,对于一个熟手来说,其带来的效率上的提高是微乎其微的,此外,一个提供这种功能的IDE,以下两个问题是应该考虑的:
1)对第三方JSF组件的支持
2)自动化生成的代码的维护
分享到:
相关推荐
常用mvc框架 性能比较 通过比较其对web请求处理的速度及开发效率进行了比较
### Struts与Spring:两种MVC框架的比较 在Java Web开发领域中,MVC(Model-View-Controller)架构模式被广泛应用于构建灵活、可维护的Web应用程序。本文将对比分析Struts与Spring这两种流行的MVC框架,帮助开发者...
ASP.NET MVC框架是微软开发的一款用于构建Web应用程序的开源、轻量级且高度模块化的框架。这个框架结合了Model-View-Controller(MVC)设计模式的灵活性和ASP.NET的强大功能,为开发者提供了构建可测试、高性能的Web...
Todo应用通常是一个基础的待办事项列表,用于展示基本的CRUD(创建、读取、更新、删除)操作,这有助于理解MVC框架的核心概念。 在PHP MVC框架中: 1. **Model** 负责处理数据和业务逻辑。对于Todo应用,Model可能...
**简单的MVC框架例子** 在Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将应用程序的结构分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个简单的MVC框架...
MVC框架性能比较,help us to find the correct frameworks
本项目是用C++实现的一个简单的MVC框架,名为MVCDemo,旨在帮助开发者理解MVC设计模式的基础概念。 首先,我们来详细解释MVC的三个组成部分: 1. Model(模型):模型层是应用的核心,它负责管理数据和业务逻辑。...
MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码MVC模式与ASP.NET MVC框架概述源码
微信开发php+mvc框架
**MVC框架详解** 在软件开发领域,MVC(Model-View-Controller)框架是一种广泛应用于Web应用设计的架构模式。MVC将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以此实现业务...
Spring MVC 框架搭建与 Hibernate 整合实例 Spring MVC 框架搭建是 Java Web 开发中的一种常见架构模式,它基于 Model-View-Controller(MVC)模式,使用注解方式来处理请求和响应。下面将详细介绍 Spring MVC 框架...
在C# MVC框架中,"Model"代表应用的核心业务逻辑,它负责处理数据和业务规则。"View"是用户界面,展示数据给用户。而"Controller"则扮演中介角色,接收用户请求,调用Model进行处理,并将结果传递给View显示。 文件...
Struts、Spring MVC等是主流的MVC框架,它们提供了丰富的功能,简化了开发流程,但也带来了性能上的差异。本文将深入探讨几个主流MVC框架在性能上的表现。 首先,我们关注的是纯JSP的表现。作为最基础的处理方式,...
在.NET MVC框架中,模型(Model)负责处理业务逻辑和数据管理,它是应用程序的核心部分。视图(View)则主要负责展示数据,它通常与控制器(Controller)交互,接收控制器传递的数据并渲染成用户界面。控制器负责...
**MVC框架源代码解析** 在软件开发领域,MVC(Model-View-Controller)框架是一种广泛应用的设计模式,尤其在Web应用中。该模式将应用程序的业务逻辑、用户界面和控制逻辑分离,使得代码更易于维护和扩展。在这个...
ET-MVC框架是一款基于MVC(Model-View-Controller)设计模式的轻量级开发框架,专为简化中小型项目的开发流程而设计。该框架遵循“约定优于配置”的原则,这意味着在开发过程中,开发者无需进行过多的配置,只需按照...
MVC框架
本例子将详细解析如何创建一个MVC框架,并展示如何通过该框架与数据库进行交互。** **一、MVC框架的基本概念** 1. **Model(模型)**: 模型层是应用程序的核心,负责处理业务逻辑和数据管理。它与数据库或其他数据...
C#的mvc框架,实现简单的web功能。可以应用在泛微oa等需要基础开发简单功能的网站。erp,crm等系统。