我知道这里有很多问题比较一个框架和另一个框架。我觉得我还要再加一个。
Playstry框架优于Tapestry5框架的优势是什么?你会推荐哪一个?为什么?
以下是我发现的相似之处。
为什么选择一个而不是另一个。我已经用它们来做一个'美化的hello world'类型的应用程序,我觉得两者非常相似。
答案 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和其他框架之间的主要比较点是:
如果您的框架支持所有这些以及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有一些经验。 有什么好处:
行动手册中的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引擎或插入任何构建系统。这是一个包含所有优惠:)。但是当你需要在专业背景下达到标准标准时,这就困难了。
我最近不得不做出两次选择。
所以,从我的角度来看,这是两个令人难以置信的框架之间的主要区别之一。
Matt Raible(即使有争议;))said你不应该从可以做的事情中选择框架,而是关于他们不能做什么! 这显然是这里的主要争论!这两种方式都可以做得很好,但方式略有不同:)