【发布时间】:2011-03-14 09:20:14
【问题描述】:
我知道这里有很多问题比较一个框架和另一个。我觉得我必须再添加一个。
play框架比Tapestry5框架有什么优势?你会推荐哪一个?为什么?
这是我发现的相似之处。
- 两者都是无状态框架(我知道 play 更无状态)
- 两者都通过实时类重新加载真正提高了开发人员的工作效率
为什么一个人会选择一个而不是另一个。我都用过这两种应用程序来做一个“美化你好世界”类型的应用程序,我觉得两者都非常相似。
【问题讨论】:
我知道这里有很多问题比较一个框架和另一个。我觉得我必须再添加一个。
play框架比Tapestry5框架有什么优势?你会推荐哪一个?为什么?
这是我发现的相似之处。
为什么一个人会选择一个而不是另一个。我都用过这两种应用程序来做一个“美化你好世界”类型的应用程序,我觉得两者都非常相似。
【问题讨论】:
另请注意,Play 似乎(直接?)与标准应用服务器不兼容;它不使用 Servlet API,但它有自己的 Request 和 Reponse 定义。
这也是相当苛刻的,在每个请求上重新编译/重新加载 Java 类(如果这是 FUD,我很抱歉,这是我在 JavaOne 演讲中记得的)。
它不是基于组件的,它是一个基于动作的框架,如 Struts 或 SpringMVC;它使用的模板是对 JSP 的改进,但缺少 Tapestry 更全周期的方法。 Tapestry 的大部分功能来自于从简单的元素构建复杂的功能。
Tapestry 包含非常复杂的技术,用于处理打包在 JAR 中的资产(图像、样式表、JavaScript 库)。这对用户和开发人员都是透明的,只需将 JAR 放到类路径中,它们就会自动加载和配置。
我想玩!有一些好主意,而且名字很好,但它在与 Tapestry 不同的联赛中打球。避免任何服务器端状态是相当严厉的......相比之下,Tapestry 使用有限数量的服务器端状态并仔细管理该状态,并且这样做主要是为了包含重定向后的语义。
到目前为止,当您在许多不同的页面上具有相同的行为时,您可以使用面向操作的框架。尽管我个人甚至会在单页应用程序上使用 Tapestry,但 Tapestry 确实在与更大的团队一起开发更大规模的应用程序时确实非常出色。
【讨论】:
我没有直接使用 Tapestry 的经验。但是我们使用 Play 的项目中的一位同事已经使用它,他真的厌倦了它。他有很多抱怨,但你可以发现其中大部分都列出了here*。
个人认为Play和其他框架的主要比较点是:
如果您的框架支持所有这些以及 Play,那么您可以更深入地了解细节,例如它是否是无状态/有状态框架等。
*Wayback 机器版本,因为帖子已从堆栈溢出中删除。
【讨论】:
Play 框架不是基于组件的。没有一个 Java 类支持每个页面。相反,它遵循严格的 MVC 分离,其中应用程序的核心必须直接驻留在模型中。
Play 与 Ruby on Rails 或 Grails 非常相似,但使用的是 Java。 此外,可以在自己的内置服务器(基于 JBoss Netty)上部署 Play 应用程序。
你选择哪一个主要取决于你如何接近视图层。如果您更喜欢纯 HTML、CSS 和 JavaScript,请使用 Play!。如果您更喜欢 Java 组件,请使用 Tapestry。
【讨论】:
我根本不知道玩,我只看过一些5分钟的介绍,但不喜欢它,但我对Tapestry 5有一些经验。 有什么优势:
BTW Tapestry 5 in action book 刚刚在 MEAP 上发布
再次请注意,我对游戏一无所知,只是想解决您提到的问题。如果您想要 Tapestry 的更多优势(不是过度发挥,而是框架的整体强大方面,请给我发消息。我很乐意写更多内容(尤其是在我正在说服客户从 Spring 切换到 T5 的过程中,以及欢迎在演讲之前进行任何练习;))
问候 米哈乌
【讨论】:
Play 的好处!框架与 Tapestry5 是:
Tapestry5 也有第 3 方模块 - 但它们不会为您节省时间,它们会消耗时间。它们中的大多数都没有维护,您总是需要分叉、理解和修改所有 3rd 方代码,以便它可以与最新的 Tapestry 版本一起使用。最后,自己编写所有内容会更容易。一般来说 Tapestry5 比较贵,因为你需要计算代码维护。在每次 Tapestry 升级时,您都需要更改代码,因为方法已被弃用 - 不仅在您自己的代码中,而且在您集成的第三方的所有其他模块中。这是一个很大的时间杀手,而且要花很多钱。
与玩相比!您可以在其中获取 Facebook/oAuth 身份验证之类的东西,并且它可以正常工作 - 在框架的下一次更新中也是如此,这是一个巨大的成本优势。
总的来说,我一直认为 Java webapp 的开发、维护和托管成本最高。然而,使用 Play!,计算变得更好——尽管这种方法有时不太“智能”。但是,如果考虑上市时间和开发成本,请选择 Play!或其他一些技术,例如 RubyonRails 或 PHP。然而,RubyonRails 开发人员和 Java 开发人员一样昂贵。
【讨论】:
我还要说,即使对于 Play 和 Tapestry 用户来说,Tapestry 比 Play 更传统,更容易满足标准。我不认为这是好事还是坏事.再一次,离开人迹罕至的地方通常并不是一件坏事。 Play 有一个非常好的内置自制东西。因此,您不需要太多额外的模块或将 Play 插入其他库。
两者都具有出色的内置功能:显然令人难以置信的实时类重新加载、注入……有时一个比另一个有更好的支持(例如 REST for Play)。他们都真正提高了生产力。 但 Tapestry 比 Play 更接近标准。
您不需要在 Play 中包含 REST 支持,也不需要使用 Servlet 引擎或插入任何构建系统。这是一个全包优惠:)。但是,当您需要在专业环境中达到标准标准时,就更加困难了。
我最近不得不做出两次选择。
所以,在我看来,这是这两个令人难以置信的框架之间的主要区别之一。
Matt Raible(即使有争议;))said 你不应该从可以做的事情中选择框架,而应该从他们不能做的事情中选择框架! 这显然是这里的主要争论!两者都可以做得很好,但方式略有不同:)
【讨论】: