JSF和Tapestry的全面比较
|
JSF
|
Tapestry
|
设计架构
|
跳转模型:Front Controller+组件化编程。
|
页面模型:Page Controller+组件化编程。
|
编程模型
|
业务逻辑:POJO的编程风格;页面逻辑:主要是JSP,也可以用HTML风格。
|
业务逻辑:Taperstry4需要继承基类;但Taperstry5就是POJO风格;
页面逻辑:普通的HTML。
|
请求处理
|
由官方定义的六个步骤组成;
|
取决于Engine Service。
|
导航
|
通过faces-config.xml配置文件完成。
|
URL是全局的,没有额外的配置文件;
除非显式跳转,所以行为都在本Page上。
而跳转分两种:
1. DirectLink写在页面上
2. 在代码逻辑中定义页面跳转逻辑。
|
事件处理
|
页面定义事件发起;两种方式参数传递方式:一种分离传递;另一种通过FacesContext。
|
页面定义事件发起;直接赋予参数,没有参数个数限制;除此外还有内置的生命周期相关的event
|
组件状态
|
没有状态维护机制,每次request都从建组件。
|
提供组件状态的维护机制。
|
组件开发
|
基于JSP Tag的开发方式。
|
开发方式类似Page, 逻辑代码和页面分离,页面输出使用HTML。
|
视图
|
主要是JSP,也可以用HTML风格。
|
HTML
|
验证及转换
|
提供了多种方式支持,但客户端验证支持不好,同时在form一级的支持不好,通常需要项目自己定制。
|
同样提供多种方式支持;此外提供客户端的Validation;天然地支持form一级支持。
|
I18N
|
较好的支持。
|
很好的支持,额外提供预览功能。
|
可测试性
|
测试支持简单容易。
|
Tapestry4的测试不容易,不过Tapestry5的测试可以很简单。
|
扩展性
|
良好
|
良好
|
行业支持
|
JSF业界标准,业内厂商支持会比较多,不过未必不会出现EJB2的结局。
|
应用范围小于Struts,之前的版本学习曲线太高。
|
迁移性
|
从Struts迁移不难;
|
从Struts或者JSP迁移难度较大些。
|
以下是Tapestry5.1的主要改进:
1.性能得到优化,渲染复杂页面的速度得以提升并且减少了内存的使用;
2.之前的静态JavaScript库现在被动态地绑定到一个单一查询上;
3.自动地对静态和动态内容进行GZIP压缩(前提是客户端支持);
4.通过Ajax实现的局部页面更新升级为客户端多区域(Zones)更新;
5.Tapestry 的属性表达语言有了重大改进;
6.Taperstry的模板文件(template files)也有许多新特性和改进;
7.改进了客户端和服务器端对数字输入值的校验;
8.用户首选的本地化信息被编码到URL中,而不是保存在cookie里面;
9.添加了一个新组件ProgessiveDisplay,它用于增量页面的载入。
10.有极大改进的Maven Archetype。
11.加入了新的Tapestry 控制反转(IoC)特性使得往服务配置里重写服务更加容易。
12.加入了许多新的本地化和校验信息。
13.组件参考文档中加入了由组件触发的事件。
14.非常巧妙的基于Blackbird的客户端日志记录
15.添加了重写URL的API以提供对Tapestry URL更好的控制。
除了这些,新版本还有许多Bugs的修复和改进,想要更多细节请参见 发布日志。在这里下载到Tapestry 5.1.0.5。
整理自:http://news.csdn.net/a/20090513/211219.html