我目前正在尝试将Spring3与Tapestry 5.3进行比较。我自2003年以来一直是Tapestry用户,所以我倾向于偏见,只是因为我没有使用Spring的经验。我看到Spring被大多数编写java应用程序的公司广泛采用,因此它迫使我为我的新网络应用程序看一看。我目前的目标是构建一个非常丰富的javascript应用程序,只需很少的配置和各种可用的组件。我对Tapestry5的最大抱怨是它设计用于Prototype库。
有人可以向我提供Spring3的正面和负面信息,以及为什么公司会选择在Tapestry5上构建Spring3?我搜索了谷歌,似乎我发现的唯一比较已过时。谢谢。
答案 0 :(得分:9)
我必须为我工作的公司做一个小概念验证。我查看了Spring MVC 3和Tapestry 5。
对于那些没有使用Tapestry的人来说,它有非常好的UI流程约定,例如。按下或按下链接的按钮。您的Page类中的所有内容都是ThreadLocal也很好,因此您不必担心该级别的并发性。
另一方面,我不喜欢Tapestry对Ajax的支持。它有自己的标签 执行ajax操作(区域等),但很难做到
$.ajax({
url: "tapestry_page",
success: function(result) {
// do something with json result
}
});
因为return types accepted by tapestry。你说你的项目将是javascript丰富的,这可能意味着很多ajax。仅仅因为这个原因,我会选择Spring。您只需使用@Controller
注释@ResponseBody
方法,您返回的任何内容都将直接写入响应正文。这对于直接编写json或xml非常有用(在大多数情况下,这是使用Jackson或JAXB自动生成的)。
使用Spring,最大的好处是它是一个非常成熟的项目,所以你需要的一切,有人可能在你之前需要它并且有一个解决方案可用(不是Tapestry的情况不同,但是有更多的文档可用于弹簧)。
Spring的一些负面消息:它与Servlet方式非常紧密地联系在一起,doGet
和doPost
并且表单处理之类的东西不像Tapestry's form lifecycle那样内聚。如果您正在进行大量的同步操作,那么Tapestry的Page概念非常好,可能还有很长的路要走。
我不确定Tapestry是否已经达到了可以在没有xml的情况下配置整个应用程序的程度,但是Spring有。这可能对你有利。
我的2美分。