Tapestry5 vs Play框架

时间:2011-03-14 09:20:14

标签: playframework tapestry

我知道这里有很多问题比较一个框架和另一个框架。我觉得我还要再加一个。

Playstry框架优于Tapestry5框架的优势是什么?你会推荐哪一个?为什么?

以下是我发现的相似之处。

  1. 两者都是无国籍框架(我知道游戏更无国籍)
  2. 两者都通过实时课程重新加载真正提高了开发人员的工作效率
  3. 为什么选择一个而不是另一个。我已经用它们来做一个'美化的hello world'类型的应用程序,我觉得两者非常相似。

6 个答案:

答案 0 :(得分:12)

另请注意,Play似乎与标准应用程序服务器(直接?)兼容;它不使用Servlet API,但它自己定义了Request和Reponse。

它也相当严苛,在每个请求上重新编译/重新加载Java类(对不起,如果这是FUD,那就是我记得的JavaOne演讲)。

它不是基于组件的,它是一个基于动作的框架,如Struts或SpringMVC;它使用的模板是对JSP的改进,但缺乏Tapestry更全周期的方法。 Tapestry的大部分功能来自于从简单元素构建复杂功能。

Tapestry包含非常复杂的技术,用于处理打包在JAR中的资产(图像,样式表,JavaScript库)。它对用户和开发人员都是透明的,只需将JAR放在类路径上,然后自动加载和配置。

我觉得玩!有一些好主意和一个非常好的名字,但它在与Tapestry不同的联赛中发挥。它在避免任何服务器端状态方面相当严苛......相比之下,Tapestry使用有限数量的服务器端状态并仔细管理该状态,并且在很大程度上支持重定向后发布语义。

当你拥有跨越许多不同页面的相同行为时,你可以进入面向行动的框架。虽然我个人也会在单页应用程序中使用Tapestry,但在开发大型团队的大型应用程序时,Tapestry确实很有用。

答案 1 :(得分:7)

我对Tapestry没有直接经验。但是我们使用Play的项目中的一位同事已经使用过它,他真的厌倦了它。他有很多抱怨,但你可以找到其中大多数列出here *。

就个人而言,我认为Play和其他框架之间的主要比较点是:

  • 快速周转(编辑 - 构建 - 部署周期消失)
  • 快速开发/原型设计
  • 支持Scala(原生)
  • 使用框架/社区的用户快乐(如果用户抱怨框架/社区,这意味着什么)

如果您的框架支持所有这些以及Play,那么您可以更深入地了解详细信息,例如,如果它是无状态/有状态框架等。

* Wayback机器版本,因为帖子已从堆栈溢出中删除。

答案 2 :(得分:7)

Play框架不是基于组件的。每个页面都没有支持Java类。相反,它遵循严格的MVC分离,其中应用程序的内容必须正好位于模型中。

Play与Ruby on Rails或Grails非常相似,但在Java中。 此外,可以在自己的内置服务器上部署Play应用程序(基于JBoss Netty)。

您选择哪一个主要取决于您如何接近视图层。如果您更喜欢纯HTML,CSS和JavaScript,请使用Play!。如果您更喜欢Java组件,请使用Tapestry。

答案 3 :(得分:4)

我根本不知道游戏,我只看了5分钟的介绍,但不喜欢它,但我对Tapestry 5有一些经验。 有什么好处:

  • Tapestry是基于组件的,这将是第一个也是最重要的优势。组件只是你不能没有的东西(当然你会喜欢它们);)
  • 它非常模块化,意味着很容易将几个独立项目结合起来。 T5围绕着很棒的IoC容器(T5团队应该更多地推广),并且由于很容易重新配置服务类的默认行为(逻辑层)
  • 你构建在类似html的模板之上(放入视图的多少挂毯标签取决于你的编码风格)
  • 在需要时很容易在服务器端保持状态,但是,默认情况下就像你提到的那样。

行动手册中的BTW tapestry 5刚刚在MEAP上发布

请再次注意,我不知道游戏,只是想解决你提到的问题。如果你想要Tapestry的更多优势(不是过度播放,而是整体强大的框架,请发信息给我。我会很乐意写更多信息(特别是当我正在说服客户从Spring切换到T5时,欢迎之前的任何练习;))

此致 米哈尔

答案 4 :(得分:1)

Play的好处!框架与Tapestry5是:

  • 速度(快得多)
  • 您可以使用的现有代码/模块并节省时间

Tapestry5还有第三方模块 - 但它们不会节省您的时间,它们会消耗时间。其中大多数都没有维护,你总是需要分叉,理解和修改所有第三方代码,以便它可以使用最新的Tapestry版本。最后,自己编写所有内容会更容易。通常Tapestry5更昂贵,因为您需要计算代码维护。在每次Tapestry升级时,您都需要在不推荐使用方法时更改代码 - 不仅在您自己的代码中,还包括您已集成的第三方的所有其他模块。这是一个重要的时间杀手并且需要花费很多钱。

与Play相比!你可以在这里获得类似Facebook / oAuth认证的东西,它只是起作用 - 在框架的下一次更新中,这是一个巨大的成本效益。

总的来说,我总是认为Java webapps的开发,维护和托管成本最高。然而,随着Play!,计算越来越好 - 虽然这种方法有时不那么“聪明”。但是,如果上市时间和开发成本计入Play!或其他一些技术,如RubyonRails或PHP。但是,RubyonRails开发人员和Java人员一样昂贵。

答案 5 :(得分:1)

我还要说,即使对于Play和Tapestry用户来说,显而易见的是, Tapestry比Play更传统,并且更容易满足标准。我不认为这是好事还是坏事再一次,走出人迹罕至的地方往往不是一件坏事。 Play有一个非常好的内置自制东西。因此,您不需要这么多额外的模块或插入Play到其他库。

两者都有很棒的内置功能:实时类重新加载显然令人难以置信,注入,...有时一个比另一个有更好的支持(例如,REST for Play)。他们都真正提高了生产力。 但Tapestry与标准比Play 更接近。

您不需要在Play中包含REST支持,也不需要使用Servlet引擎或插入任何构建系统。这是一个包含所有优惠:)。但是当你需要在专业背景下达到标准标准时,这就困难了。

我最近不得不做出两次选择。

  • 决定选择Play(新客户的绿地开发)和更有经验的免费开发人员(是的,这很重要;)
  • 另一个Tapestry因为我们真的需要符合我们的客户标准(并且在我的脑海中有充分的理由):Maven,J2E服务器+ JMX,使用基于ServletFilters的企业库我们不想再开发..

所以,从我的角度来看,这是两个令人难以置信的框架之间的主要区别之一。

Matt Raible(即使有争议;))said你不应该从可以做的事情中选择框架,而是关于他们不能做什么! 这显然是这里的主要争论!这两种方式都可以做得很好,但方式略有不同:)