当前位置: 首页 > news >正文

[Tapestry]Struts终结者?对比组件框架技术tapestry(转)

转自:http://blogger.org.cn/blog/more.asp?name=janetvsfei&id=8353
前言]:从2000年开始的MVC模式框架Struts看来将要被基于组件的事件驱动模型类框架替代,JSF和Tapestry都是新一代可能成为Struts的终结者。

  JSF和Tapestry都是基于页面组件技术的开发框架,但jsf基于jsp,仍然是jsp架构,开发维护起来非常麻烦。tapestry则不同,是基于servlet的一种完全页面组件化的开发框架,而且现在已经非常成熟,目前已经推出t4.0-beta2。

  页面开发走向组建化是一种越来越明显的趋势,这方面tapestry可以说是引导了这个方向,也许是sun太厉害,jsf一出生就得到大家的关注,不过顺此东风,tapestry的用户社区比以前更加繁荣了:

  http://news.gmane.org/gmane.comp.java.tapestry.user

  tapestry有很多范例精彩,参看它的官方网站:

  http://jakarta.apache.org/tapestry/

  若想致力于web页面的开发,个人觉得jsp/serlvet是首要精通的,至于选择框架,则是一件费精力的事情。框架的目的是为了简化开发流程,提高生产效率,典型的框架如turbine、struts、webwork、jsf、tapestry等。如何选择框架是一个经久不衰的讨论,没有多年的实践经验是难以作出实际评价和最终抉择的。愚以为turbine过于厚重,无论是开发速度还是运行速度都令人难以接受,2.4M1到现在快一年还是M!,运行起来真是满如蜗牛,打开一个页面要等浏览器的地球要转上半圈,这也许要归功于velocity解析和没有页面缓存的功劳了。还有就是扩展性、可维护性等,实际上都很差,象它的核心类Turbine,居然定义为final!实际开发起来还不如我自己实现的velocity+servlet+filter框架效率高,速度快。
struts,webwork实际都是jsp的MVC包装,无法摆脱jsp页面难以维护的烦恼,也许开发起来快,但维护呢?还有就是美工人员,他们都得懂jsp。实际的mvc分工在页面这块还是打了折扣。jsf,在一定程度上借鉴了tapestry的组件思想,但大项目应用中狂多的标签封装和定义把你搞疯也得把机器搞疯,估算有两大弊端:运行速度相对慢和页面维护相对复杂。

  最后是tapestry,唯一的难度是理解它的组件开发方法,理解的转变就好比从过程开发到OO开发一样,但对初学者无所谓,一张白纸总是容易上画的。

  选择tapestry有如下几大优点:

  1、最彻底的MVC开发框架,页面代码全部由HTML标准标签组成,页面美工人员无须了解特别的标签定义。

  2、可重用组件开发节省开发资源,一句话:越开发越轻松

  3、优秀的页面流转开发。传统方式都是基于URL实现激活页面流转,而tapstry除了此方式,你还可象开发普通java类一样实现page页面流,更重要的是,还可由此实现页面类的复用。

  4、丰富的组件资源。除了官方维护的资源外,还可找到一大堆的tapestry组件库。

  5、超强的扩展性。tapestry是一个真正的开放性架构,说白了,你觉得哪个服务不爽,你就可写个替代它。

  6、生命力超强,不断的自我更新、发展。tapestry4.0与3.0相比简直就是另一个飞跃,如支持jdk1.5的Annotations,仅这点开源产品中目前还只看到一个hibernate;支持portlet JSR-168,又一个顺应潮流的web开发支持。规划中的4.1将支持页面静态化,这不正是众多开发人员的另个期待吗?
7、tapestry的开发人员稳定。不是一个两个人在那里单打独斗,而是有一群人在开发和支持tapestry的进程。

  8、tapestry技术成熟吗?基于tapestry的软件和大网站已经很多了,国外的:软件如SeaView内容管理系统、WidenTM Digital Asset Management System,网站大的如:
  http://www.nhl.com/
  http://www.theserverside.com/
  https://merchant.shopping.com/enroll/app
  http://www.identitytheft911.com/home.htm
  http://admissions.chicagogsb.edu/admissions/app

  国内的:软件如http://www.onetsoft.com
  网站如:http://love.9618.com.cn/dating/app
  http://dbi.lib.ntu.edu.tw/libraryList/
  http://www.cdcin.com/
  http://www.xtcin.com/
  http://www.xnjs.com/

  tapestry的优点和带给你的便利不是两句话可讲清楚的,还需要自己去多多体会。

相关文章:

  • java数组转php数组_Java 数组反射
  • Userenv 1054
  • react不同环境不同配置angular_@Profile-根据不同环境注入bean
  • Userenv 1030
  • TechEd 2005游记(二)
  • uniapp获取屏幕宽度的方式_骚年你的屏幕适配方式该升级了-smallestWidth限定符适配方案...
  • 微软Google上演研发战 急调张亚勤对阵李开复[zz]
  • id vue 取对象_在线等,挺急的!vue如何查找id对应的对象,求指导!
  • 支持事务的版本_厉害了,Spring Cloud Alibaba 发布 GA 版本!
  • 李开复发公开信回应大学生质疑 称言行一致
  • vue如何主动销毁子组件_Vue自动销毁的vue event Bus
  • MT summit X 感想之感想
  • 免费电子书籍下载站点大全
  • visio常用快捷键_visio2003常用快捷键有哪些
  • 英语学习资源下载大全 一网打尽
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • codis proxy处理流程
  • FastReport在线报表设计器工作原理
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 一些 DOM 的知识点
  • javascript从右向左截取指定位数字符的3种方法
  • js对象的深浅拷贝
  • Spring核心 Bean的高级装配
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 记一次用 NodeJs 实现模拟登录的思路
  • 扑朔迷离的属性和特性【彻底弄清】
  • 学习ES6 变量的解构赋值
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • elasticsearch-head插件安装
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​比特币大跌的 2 个原因
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (30)数组元素和与数字和的绝对差
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (转)VC++中ondraw在什么时候调用的
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Autowired 与@Resource的区别
  • @Import注解详解
  • [<MySQL优化总结>]
  • [Android 数据通信] android cmwap接入点
  • [C/C++随笔] char与unsigned char区别
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [Head First设计模式]策略模式
  • [hive] 窗口函数 ROW_NUMBER()
  • [HJ73 计算日期到天数转换]
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解
  • [LeetCode] Ransom Note 赎金条