当前位置:  开发笔记 > 编程语言 > 正文

Apache Tapestry和Apache Wicket之间的区别

如何解决《ApacheTapestry和ApacheWicket之间的区别》经验,为你挑选了3个好方法。

Apache Wicket(http://wicket.apache.org/)和Apache Tapestry(http://wicket.apache.org/)都是面向组件的Web框架 - 与Apache Foundation的基于行为的框架(如Stripes)相反.两者都允许您使用Java中的组件构建应用程序.它们看起来和我很相似.

这两个框架之间有什么区别?有人有经验吗?特别:

他们的表现如何,国家处理能够定制多少,他们可以无国籍地使用吗?

它们的组件模型有什么区别?

您会选择哪些应用程序?

他们如何与Guice,Spring,JSR 299集成?

编辑:我已经阅读了两者的文档,我已经使用过两者.这些问题不能通过阅读文档来回答,而是根据使用这些问题一段时间的经验,例如如何在无状态模式下使用Wicket用于高性能站点.谢谢.



1> Eelco..:

我看到的一些相关差异:

Tapestry使用半静态页面结构,您可以使用条件和循环来实现动态行为.Wicket完全是动态的; 您可以动态加载组件,在运行时替换它们等.这样做的结果是Tapestry更容易优化,并且Wicket在其使用中更灵活.

两个框架在执行方面大致同样有效,但Wicket依赖于服务器端存储(默认情况下,会话中的当前页面,以及"二级缓存"中的过去页面,默认情况下是文件系统中的临时文件).如果这让您感到困扰,请考虑您希望在高峰时段有多少并发会话,并计算每个会话~100kb(这可能是偏高的).这意味着你可以运行大约支持20k并发会话2GB.说15k因为你需要那些记忆用于其他事情.当然,存储状态的一个缺点是它只能很好地处理会话亲和性,所以这在使用Wicket时是一个限制.该框架为您提供了实现无状态页面的方法,但如果您正在开发完全无状态的应用程序,您可能会考虑使用不同的框架.

Wicket的目标是最大限度地支持静态类型,而Tapestry更多的是保存代码行.因此,使用Tapestry,您的代码库可能更小,这对于维护很有用,而对于Wicket,您可以使用静态类型,这样可以更轻松地使用IDE进行导航并使用编译器进行检查,这对于维护也很有用.对于这两个人来说都有话要说.

我已经阅读了几次,人们认为Wicket通过继承工作很多.我想强调你有一个选择.有一个组件的层次结构,但Wicket也支持组合,虽然像IBehavior这样的构造(在其上构建了例如Wicket的Ajax支持).最重要的是,您可以使用转换器和验证器之类的东西,它们可以全局添加到组件中,甚至可以使用Wicket提供的一些相位侦听器作为交叉关注点.



2> Sergey..:

在学习Tapestry 5后修订.

Wicket的目标是尝试使Web开发类似于桌面GUI.他们设法以牺牲内存使用(HTTPSession)为代价做得非常好.

Tapestry 5的目标是对面向组件的Web框架进行非常优化(针对CPU和内存).

对我来说真正的重大缺陷是"Wicket支持无状态组件!" 争论"Wicket记忆犹新".虽然Wicket确实支持无状态组件,但它们并不是"Wicket开发的重点".例如,StatelessForm中的错误很长时间没有修复 - 请参阅StatelessForm - 验证失败后参数问题.

在您要优化/微调Web应用程序参数之前,使用Wicket的恕我直言是有点eaiser

如果您已经编写了Web应用程序并想要在请求处理方面进行思考,那么恕我直言Wicket就更难学习了

Tapestry 5会在您更改组件类时自动重新加载它们.两个框架都重新加载组件标记.

Wicket强制标记/代码分离,Tapestry 5只是给你这种能力.您还可以在Tapestry 5中使用较少详细的语法.一如既往,这种自由需要更多的注意事项.

Wicket的核心更容易调试:用户组件基于继承,而Tapestry 5用户组件基于注释.另一方面,Tapestry可以更容易地转换到未来的版本,然后是Wicket.

不幸的是,Tapestry 5教程没有强调像't:loop source ="1..10"......这样的Tapestry代码示例可能是一个不好的做法.因此,如果您的团队规模不小,那么应该将一些努力用于编写Tapestry使用惯例/良好实践.

我的建议:

当您的页面结构非常动态时使用Wicket,并且您可以为每个用户支付10-200 Kbs的HttpSession内存(这些是粗略的数字).

如果您需要更有效地使用资源,请使用Tapestry 5


谢尔盖,证明我的观点:见http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/即使你丢弃这是一个有偏见的微基准标记(我认为它不是),只是不要假设,衡量.那里的结果(Wicket更快*和*消耗更少的内存)与我自己运行的各种基准测试一致,并且听说过多年来运行的其他人.我不会说差异足够大,可以选择你的框架; 选择最适合你风格的那款.
@chillenious,至少在Tapestry 5中你可以选择广泛使用或不使用内存.据我所知,Wicket只能在哪里存储用户会话.
>至少在Tapestry 5中,您可以选择是否广泛使用内存.据我所知,Wicket只能在哪里存储用户会话.您可以选择存储几乎任何东西的位置.这是一个非常灵活的框架,特别是因为它让开发人员负责创建对象等.我们只是不支持客户端状态保存,主要是因为当我们实现它的一半时,它结果是如此低效(因为它在ASP.NET,JSF等我们认为不值得我们付出努力.

3> Scott Swank..:

这是IBM开发人员工作的一个非常彻底的比较.

http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.html?ca=drs

更新:链接已关闭,但您可以在http://web.archive.org/web/20131011174338/http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.html上找到该页面. ?CA = DRS

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有