1

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

有人可以向我提供 Spring3 的正面和负面影响,以及为什么一家公司会选择在 Spring3 中构建而不是 Tapestry5 吗?我搜索了谷歌,似乎我发现的唯一比较都是过时的。谢谢。

4

1 回答 1

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
  }
});

因为Tapestry 接受的返回类型。你说你的项目将是丰富的 javascript,这可能意味着很多 ajax。仅出于这个原因,我会选择Spring。您可以只注释您的@Controller方法,@ResponseBody并且您返回的任何内容都将直接写入响应的正文。这对于直接编写 json 或 xml 很有用(在大多数情况下,它是由 Jackson 或 JAXB 自动生成的)。

对于 Spring,最大的好处是它是一个非常成熟的项目,所以你需要的一切,可能有人在你之前需要它,并且有可用的解决方案(Tapestry 并非如此,但 Spring 存在更多文档)。

Spring 的一些负面影响:它与 Servlet 的方式非常紧密地耦合,doGet并且doPost表单处理之类的事情不像Tapestry 的表单生命周期那样紧密地完成。如果您正在执行大量同步操作,Tapestry 的 Page 概念非常好,并且可能是要走的路。

我不确定 Tapestry 是否已经达到了可以在没有 xml 的情况下配置整个应用程序的地步,但是 Spring 做到了。这对你来说可能是一个优势。

我的 2 美分。

于 2013-03-08T14:38:47.727 回答