Apache Wicket(http://wicket.apache.org/)和Apache Tapestry(http://wicket.apache.org/)都是面向组件的Web框架 - 与Apache Foundation的基于行为的框架(如Stripes)相反。两者都允许您使用Java中的组件构建应用程序。 它们看起来与我非常相似。
这两个框架有什么区别?有人有经验吗?具体做法是:
编辑:我已阅读了两者的文档,并且我已使用过两者。通过阅读文档无法回答这些问题,但是从使用这些问题一段时间后的经验来看,例如如何在无状态模式下使用Wicket用于高性能站点。感谢。
答案 0 :(得分:41)
我看到的一些相关差异:
我已经阅读了几次,人们认为Wicket通过继承工作很多。我想强调你有一个选择。有一个组件的层次结构,但Wicket也支持组合,虽然像IBehavior这样的构造(在其上构建了例如Wicket的Ajax支持)。最重要的是,您可以使用转换器和验证器,它们可以全局添加到组件中,甚至可以使用Wicket提供的一些相位侦听器作为交叉关注点。
答案 1 :(得分:35)
修改。
Wicket的目标是尝试使 Web开发类似于桌面GUI 。他们设法以牺牲内存使用(HTTPSession)为代价做得非常好。
Tapestry 5的目标是使非常优化(针对CPU和内存)面向组件的Web框架。
对我而言,真正的一大陷阱是“Wicket支持无状态组件!”争论“Wicket记忆犹新”。虽然Wicket确实支持无状态组件,但它们并不是“Wicket开发的重点”。例如,StatelessForm中的错误很长时间没有修复 - 请参阅StatelessForm - problem with parameters after validation fails。
不幸的是Tapestry 5 tutorial并没有强调Tapestry代码示例如't:loop source =“1..10”......'可能是一种不好的做法。因此,如果您的团队规模不小,那么应该将一些努力用于编写Tapestry使用惯例/良好实践。
我的推荐:
答案 2 :(得分:10)
这是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
上找到该页面答案 3 :(得分:1)
我认为Wicket是一个更简单的框架。
此外,Wicket允许通过IDE的热代码替换系统重新加载类。这就是Wicket运行当前运行的应用程序类的修改版本所需的全部内容。通常的限制适用于热代码替换,例如必须在调试模式(Eclipse)中运行,并且无法更改类的结构方面(即类名,更改方法签名等)。
答案 4 :(得分:1)
我不喜欢Tapestry编程模型,我知道许多开发人员离开Tapestry,因为开发过多的变化和不兼容。请参阅:http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/
答案 5 :(得分:0)
Wicket是非常好的Web框架。从我所知道的最好的。我从1.3版开始就使用它,总能得到我想要的东西。 Wicket与Spring有很好的集成 - 只需在代码中使用@SpringBean注释即可将任何spring bean注入到类中。
答案 6 :(得分:0)
试试http://incubator.apache.org/click/。 这是令人惊叹的java web框架。 有人称之为“Wicket做得对”; - )
答案 7 :(得分:0)
正如我所说4.1是官方稳定版:
在承诺使用Tapestry之前,您应该非常了解Tapestry的开发历史。 Tapestry已经完成了许多不兼容的升级,并没有继续支持旧版本。 4.1的补丁在合理的时间范围内不再处理。在我看来,官方稳定版本不能接受。
承诺使用Tapestry 5意味着:
你应该成为一名提交者; 你需要跟上所有新的发展,尽快放弃旧版本; 自己保持稳定的版本。