2013-03-08 35 views
1

我目前正试图比较Spring3和Tapestry 5.3。自2003年以来,我一直是Tapestry的用户,所以我倾向于有偏见,只是因为我对Spring没有经验。我看到Spring被大多数编写Java应用程序的公司广泛采用,所以它迫使我为我的新Web应用程序查看它。我目前的目标是构建一个非常丰富的JavaScript应用程序,只需很少的配置和大量的可用组件。我对Tapestry5最大的抱怨是它设计用于Prototype库的事实。Spring3 vs Tapestry 5.3

有人能否给我提供Spring3的积极和消极因素,以及为什么一家公司会选择通过Tapestry5构建Spring3?我搜索了谷歌,似乎我发现的唯一比较是过时的。谢谢。

+0

这实际上是同样的问题在这里问,http://stackoverflow.com/questions/2845271/struts-2-or-jsf/2845344#2845344,但与不同的球员。这一切仍然成立。 – 2013-03-08 14:43:03

+0

仅供参考:Tapestry(5.4)的新即将发布的版本专注于JavaScript,因此也许值得一试。 – 2013-03-14 11:49:10

回答

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一起去。您只需使用@ResponseBody注释您的@Controller方法即可,并且您返回的任何内容都将直接写入响应正文。这对于直接编写json或xml非常有用(在大多数情况下,它是使用Jackson或JAXB自动生成的)。

随着Spring的发展,最大的积极因素是它是一个非常成熟的项目,所以您需要的任何东西,有人可能需要它并提供解决方案(并非Tapestry的情况并非如此,但存在更多文档为春天)。

春季的几个负面:这是非常紧密耦合的事情Servlet的方式,doGetdoPost之类的东西表单处理并不像团结一致如同行在Tapestry's form lifecycle。如果你正在做很多同步操作,Tapestry的Page概念是非常好的,也许还有很长的路要走。

我不确定Tapestry是否已经实现了可以在不使用xml的情况下配置整个应用程序的地步,但Spring已经实现了。这可能对你有利。

我的2美分。

+0

感谢Sotirios,我非常希望看看Spring如何处理他们的ajax。 Tapestry的表单处理非常好,因为它是我曾经工作过的唯一的东西,我不完全确定从其他框架可以期待什么。除了一些其他地方,例如web-inf http://tapestry.apache.org/configuration.html,除了纯粹的经验之外,Tapestry大部分都可以在java中配置,对于我来说,尝试Spring可能是最好的选择。 – 2013-03-08 15:08:49

+0

Spring中的表单处理需要您通过请求参数(用于输入),但您可以使用'@ RequestParam'注释轻松注入这些参数。 – 2013-03-08 15:12:00

+1

说得好。自5.0.x以来,我一直在使用tapestry,并且我处理的唯一XML用于配置我的应用程序是'web.xml'文件。 – 2013-03-08 19:11:53