阅读更多

10顶
3踩

企业架构

翻译新闻 Tapestry 5.2 正式发布

2010-12-20 09:26 by 正式编辑 hantsy 评论(13) 有5947人浏览

我非常高兴的向大家宣布,Tapestry 下一个主要的发布版本 5.2 正式放出,版本为 Tapestry  5.2.4.

 

这是自 5.1.0.5  (可以追溯到 2009 年 4 月)发布以来的第一个 Tapestry 稳定版本,周期有点长。你可能在想知道,是什么让它停滞不前。答案是,我正在紧锣密鼓的使用 Tapestry 为两个毫无瓜葛的客户的两个完全不同的应用程序,并在用 Tapestry 解决一些实际问题。同时,我完成了一系列的公开和非公开的培训,并从我的学生那里收集了大量反馈信息。

 

好了,谈谈本次发布有哪些改进吧。

 

删除 Page Pooling

之前版本的 Tapestry 每个 Page 使用了一个叫 page pool 东东,Tapestry 会跟踪一个 Page 的多个实例,将一个Page 实例绑定到特定的请求上。这曾是 Tapestry 的魅力所在。正是这个框架引入了多线程问题,你可能在代码中使用POJO作为 Page 和 Component,从来都没有担心过 Servlet 容器运行时引入的线程问题。

 

不幸的是,Page 太大了: 它并不是仅仅一个对象,而是大的对象树的根:  components 和 templates, bindings for component parameters, component resources, 和所有额外的基础结构体系 (lists  和 maps 等待)。当在线程并发环境下合并组件化的 Page时 ,一些大型的 Tapetry 项目可能会遭遇到内存问题。

 

Tapestry 5.2 重写相关的规则,每个 Page 仅仅需要一个 Page 树,但 Page和 Component 类需要一个额外的转换步骤,将对象中每个请求的数据抽出来,放到每个线程的Map对象中。现在,多个请求可以同时操作,不需要额外 Page实例。老式的 Page Pooling 中的锁定和阻塞机制在新方法中也完全废弃。这是一个巨大的胜利。

 

动态 Service 重新加载

每个人都喜欢这样的特性,在 Tapetry 应用中,修改了 page 和 Component 类,就能够立即看到修改结果。5.2 以前版本你可能有些失望,你无法做到修改 Service 并让它立即生效。 在大数情况下,Tapestry 5.2  消除了这个限制。

 

对于 Service 来讲,这非常方便,例如 DAOs (data access objects) 中,现在非常容易调试一条 Hibernate Query,通过修改模板中一些内容能够立即看到查询结果。这是 Tapestry 另外一个可以让爱不释手的新特性。

 

ClassTransformation API 改进

位于 Tapestry 核心是 Class Transformation API,这个可扩展的管理是 Tapestry 将 POJO 转换到运行中的 Components 的基础。 5.2 之前,如果你想做一些这样的转换,你必须掌握  Javassist 这种伪Java语言。

Tapestry 5.2 重整了 API,这样使用纯 Java code 实现这样转换成为可能, Javassist 完全被隔离了,最终会完全删除它。

 

Query Parameter 支持

Tapestry 之前是将信息储存在 HTTP 请求路径中,例如一个URL /viewaccount/12345, URL中 viewaccount 部分是 page 的名称, 12345 部分是 Account 对象的ID。Tapestry 将之称为 page activation context (可以包含一个或多个值)。

 

当一个 Page 的 page activation context 是固定的值时,不会有什么问题,如果值变化,就不那么理想。譬如,如果你要作一个查询,并想将储存可选的查询参数用来识别查询项和页码。

 

Tapestry 5.2 引入了 @ActivationRequestParameter 注解,能够自动搜集这样的数据,编码后作为查询参数追加到URL中,以便在后续的请求使用。

 

Testing

测试支持变化很大,特别是基类,现在支持使用 Selenium 进行集成测试。使用新的基类,很容易写测试用例,单独运行或者作为一个大的测试的一部分,自动启动和停止 Selenium 和 Jetty也不成问题。另外,Tapestry 扩展了 Selenium 的 failure behavior,这样测试失败的话会使用HTML和PND图片方式抓取页面内容。现在为Tapestry 编写简单实用的测试更快,更简单。

 

JSR-303 支持

Tapestry 现在支持 Bean Validation JSR,将标准的 validation annotation 转换成 client-side 和 server-side validations。

 

文档

Tapestry 的文档一直是个挑战,对于 Tapestry 5.2 我们已经在做大量的重整工作,提供一个更好的 Tapestry 使用入门教程。不过仍在进行之中,现在使用了一个在线的 Confluence wiki ( 不再绑定发布过程中), 文档工作可以更快推进。

 

另外,你不需要以 committer 的身份来写文档 ...  仅仅需要签署 Apache Contributor License Agreement.

对于更加详尽的指南 ... 莫过于 Igor Drobiazko 新书  Tapestry 5 In Action,正在由德语翻译成英文。

 

小结

我为我们过去 18 个月的努力感到自豪,我们迎来新的 committers,添加了新的文档,引入大量的新特性。 我们还了一个超炫的新 LoGO,一句全新的座右铭: Code Less, Deliver More.

 

Tapestry 5 已经成形,所以尽可能对内部机制进行改进,添加一些新特性,而不影响已有的用户和应用。 Tapestry 5.2 遵循这种设计和理念,它带以非破坏方式引入了大量新特性。

 

所以,如果你正苦于寻求一种高效,高性能的 web 框架,不妨看看 Tapestry!

 

 

 

 

来自: JavaLobby
10
3
评论 共 13 条 请登录后发表评论
13 楼 aninfeel 2010-12-21 23:16
什么功能都想自己来,文档又不怎么样,想自杀也不用这样啊。
12 楼 fast 2010-12-21 17:31
volking 写道
小众产品,成不了气候

是不是说了这句话就全身很舒坦啊?
11 楼 volking 2010-12-21 11:31
小众产品,成不了气候
10 楼 keete 2010-12-21 09:57
以前很能喜欢这个框架,在等待新版本的过程中,慢慢冷落之。
9 楼 guofengcn 2010-12-21 09:31
我很奇怪……为什么tapestry就不把User reference,api之类的放到发布包中呢?每次都去官网看确实很费劲...
8 楼 guofengcn 2010-12-21 09:25
看过一段时间,但是感觉想用到项目中时困难重重...希望能多写文档...
7 楼 ljt122000 2010-12-20 22:28
Tapestry还是不错的,一直在用,希望越做越好...
6 楼 ljt122000 2010-12-20 22:27
Tapestry还是不错的,一直在用,希望越做越好...
5 楼 superaxis 2010-12-20 15:26
非常非常不错的东西!一直在使用!他的IOC目前来讲是最牛X的,比那个guice强的不是一点半点。
4 楼 comeon 2010-12-20 14:21
几年前用过,是个好工具。
3 楼 hantsy 2010-12-20 12:51
以前项目使用过 Tapestry 4,现在 Tapestry 5完全变了样,等于要完全从头学起。
2 楼 wl95421 2010-12-20 11:41
tapestry的兼容性太差了。
你去TSS看一下就知道了,大家都在骂这个。
而且Tapestry的学习曲线有一点太高了,没有好的OO能力很难用好啊。
1 楼 76052186 2010-12-20 10:58
tapestry 好用,jcp咋不参考一下

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • web集群服务的负载均衡方案

    web集群服务的负载均衡方案与实现记录 web集群服务

  • 详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)

    在哪里存在,就在哪里绽放。不要因为难过,就忘了散发芬芳。

  • Nginx构建反向代理缓存服务器

    防伪码:曾经沧海难为水,除却巫山不是云。代理服务可简单的分为正向代理和反向代理:正向代理: 用于代理内部网络对Internet的连接请求(如***/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供...

  • Nginx(详解以及如何使用)

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。并发能力: 50,000。

  • 多台服务器集群部署方案

    目录 序言 框架选型 版本控制 API 编写 目标与现状 正文 第一阶段:刚接手项目 需要解决的问题: 解决方案 不足之处 第二阶段 需要解决的问题: 解决方案 不足之处 第三阶段 服务器 环境搭建 版本控制 代码同步 数据库 后台开发 缓存服务 图片等大文件存储 使用 cdn 为网站加速 使用 supervisor 托管队列 API 开发 建议 后期学习计划 序言 大家看着图个乐就行,这段纯粹个人吐槽,可直接跳过 本人所在的公司,后端就我一.

  • 5台服务器搭建(HA)高可用集群

    在安装过程中,难免会因为疏漏、不细心等因素出现各种各样的问题,此时一定要耐心仔细排查,戒骄戒躁,有任何疑问欢迎评论区沟通。

  • Web服务器集群搭建

    Web服务器集群搭建 1、需求分析 1.1、整体需求 搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实时监控。 1.2、详细需求 Web主服务器(Centos1 Nginx+Keepalive NFS server):Eth0(192.168.48.139),Eth1(10.0.0.1); Web备用...

  • web负载均衡的多种解决方案

    web load balancing,简单地说就是给我们的服务器集群分配”工作任务“。 1.反向代理 反向代理服务的核心工作主要是转发HTTP请求,因为它工作在HTTP层(应用层),也就是网络结构中的第七层,因此也被称为”七层负载均衡“,可以做反向代理的软件很多,比较常见的一种是Nginx。 对于同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。...

  • 六大Web负载均衡原理与实现

    负载均衡 负载均衡 HTTP 重定向 DNS域名解析 反向代理负载均衡 IP负载均衡LVS-NAT 直接路由LVS-DR IP隧道LVS-TUN 现在有些应用随着数据流量的急速增长,单台服务器可能无法承担。这时,要换更好设备的话,旧服务器就浪费了。但也可能再贵的单台服务器也无法承担。此时,需要一种廉价有效透明的解决方法,负载均衡(Load Balance)就应运而生了。 负载

  • web集群以及负载均衡实现

    1.Web集群:是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。2.负载均衡(Load balance cluster,LBC): 它是利用一个集群中的多台单机,完成许多并行的小的工作。一般情况下,如果一个应用使用的人多了,那么用户请求的相应时间就会增大,机器的性能也会受到影响,如果使用负载均衡集群,...

  • web项目服务器集群,web优化与服务器集群技术

    摘要:随着互联网的迅速发展,维基类站点作为web2.0的后起之秀,已经遍布世界各地。大地百科是一个维基类的web2.0型站点,该站点由于用户访问量的增大出现了访问变慢甚至当机的情况,由于大地百科自身架构的限制,已经不能满足后续发展的需要,重新架构优化大地百科站点成为迫在眉睫的任务。 本文首先分析了目前大地百科站点存在的性能和扩展性方面的缺陷,发现了一些问题,如PHP程序文件全部从磁盘读取,在高访问...

  • Spring Boot系列21 Spring Websocket实现websocket集群方案讨论

    概述 本文对websocket集群的方案进行讨论: 实现websocket集群。 通过webscoket实现前端实时接收服务推送的信息的功能; 将指定的消息推送到指定的用户 webscoket集群方案 集群方案分析 在上个博文Spring Boot系列20 Spring Websocket实现向指定的用户发送消息中实现向指定用户发送消息的功能,但是我们将提供websock...

  • 浅谈服务器集群、负载均衡、与分布式

    浅谈服务器集群、负载均衡、与分布式负载均衡概念:其意思就是分摊到多个操作单元上进行执,操作单元可以是web服务器、ftp服务器、企业关键应用服务器等.不能理解成平均分配到每个操作单元上,因为每台服务器的承载能力不尽相同,硬件配置、网络带宽等差异,所以并不能平均的分配,需要参考的因素很多. 负载均衡实现方式1、http重定向当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通

  • 负载均衡与集群的区别和联系

    一、关于负载均衡和集群的概念(区别) 负载均衡:服务器A,比如做了Nginx处理,通过服务器A端口88均衡转发(请求)服务器b、和服务器c,这是负载均衡,其中服务器A是负载 集群:同一个工程部署在不同服务器的称为集群,两个及以上的就是集群,服务器b和服务器c合并称为集群 二、负载均衡和集群的关系 负载均衡的前提是集群。 ...

  • 负载均衡层设计方案(1)——负载场景和解决方式

    在上一篇《标准Web系统的架构分层》文章中,我们概述了WEB系统架构中的分层架设体系,介绍了包括负载均衡层、业务层、业务通信层、数据存储层的作用和存在意义。从本片文章开始,我们将首先详细讲解负载均衡层的架构原理和选型场景。 1、不同的负载场景 我们知道负载均衡层的作用是“将来源于外部的处理压力通过某种规律/手段分摊到内部各个处理节点上”,那么不同的业务场景需要的负载均衡方式又是不一样的

  • WEB服务器流量超负载:如何分散解决?

     Web应用服务器集群系统,是由一群同时运行同一个web应用的服务器组成的集群系统,在外界看来,就像是一个服务器一样。为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。从而实现了更高的有效性和稳定性,而这也正是基于Web的企业应用所必须具备的特性。    一、计算WEB服务器负载量的两种方法   web应用服务器集群系统,是由一群

  • websocket集群的问题及解决方案

    现在的互联网项目大多采用分布式+微服务+服务集群的方式,那么当项目中的websocket采用集群时就会遇到这么一个问题: 给用户页面推送消息的websocket服务未必是与该用户建立websocket连接的服务。 如果在单机情况下,当websocket需要给用户推送消息时,由于用户已经与websocket服务建立连接,消息推送能够成功。 但如果在集群情况下,用户甲向websocket发起连接请求...

  • 负载均衡方案

    负载均衡方案1、负载均衡概念一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是负载均衡最初的基本设计思想。 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具

Global site tag (gtag.js) - Google Analytics