【问题标题】:What would you go for a back-end web application: Flex, GWT, JQuery?你会为后端 Web 应用程序选择什么:Flex、GWT、JQuery?
【发布时间】:2010-11-08 02:20:58
【问题描述】:

我应该构建一个用于后台的 Web 应用程序,其中一个主要要求是良好的用户界面。

在服务器端,我很可能会使用 Java 框架,这取决于我将使用客户端。

我认为客户端基本上有3个选择:

  • 使用 JQuery 框架的“普通”Web 应用程序,即 JSP 页面。在这种情况下,我将使用 Spring 的完整功能、完整的 MVC 模式等。我已经使用 Spring 和 JQuery 2 年了,所以我非常了解这些技术。但我也知道,实现一些效果是相当复杂的,涉及到很多javascript代码,特别是在处理ajax调用和页面结构的动态变化时。
  • Flex 与 BlazeDs 等附加组件与 Spring 集成。我没有使用 Flex 的经验,我只是阅读了一些关于它的文章和教程,但我真的很想学习一些新东西 :-)
  • Google Web Toolkit,可能带有 gwt-ext 之类的东西。没有经验,但我真的很想学习。如果我需要,那里有很多支持,但我认为我将很难在同一个项目中维护 Spring MVC 和 GWT,我读到这并不容易,但有几个模式可以遵循。

你有什么建议吗?

提前致谢

【问题讨论】:

    标签: jquery apache-flex spring web-applications gwt


    【解决方案1】:

    如果您将应用程序划分为单独的服务和视图层,我认为您可以完全推迟选择。正确处理后端,您可以随意进出视图技术。

    至于选择,请选择您和您的团队最了解的那个。最重要的考虑是支持和维护。我相信这三个都可以通过足够的努力和完善来满足您的需求。

    我个人的选择是 Flex 和 Spring BlazeDS。这很性感。

    【讨论】:

    • 是的,感谢您对分区的好建议!我已经在考虑这个了
    【解决方案2】:

    这一切都归结为三件事:

    1. 您正在构建什么类型的应用程序?
    2. 您熟悉的技术技能组合是什么,并且在必要时可以轻松地将技能迁移到哪些技术技能组合?
    3. 您的基础架构有哪些技术要求?

    如果应用程序特性正在驱动技术,那么您必须确定增强的基于超文本的应用程序是否适合您的需求(AJAX、XHTML),或者更丰富的媒体技术是否更适合,例如 Flash平台(Flex 是其中的一部分)。

    #2 和#3 通常相似,因为它们考虑了您团队的现有技能和基础设施。如果您的应用程序要求可以使用任何一种技术部署应用程序,那么您需要衡量技能集和基础架构支持:如果您已经在使用 Java,并且您的团队主要在 AJAX 方面有经验,那么就去吧;如果您的团队在 Flash/Flex 和 LCDS/FMS 方面有更多经验,请使用它。

    但我认为基于 Flash 平台的 RIA 可以像构建 AJAX 构建的 RIA 一样构建,只需很少的架构更改,或者您可以“将应用程序划分为单独的服务和视图层......以及您可以随意交换视图技术。”我的朋友是灾难的根源。构建 Flash Platform/Flex 应用程序意味着后端是客户端应用程序的从属,而不是相反,因为应用程序智能将大部分驻留在客户端上。如果您构建一个像 AJAX 应用程序这样的 Flex 应用程序,您最终会遇到一个完全架构过度的混乱,我已经看到这种情况发生很多次了。诀窍是知道控制器/服务的哪些部分保留在客户端上,哪些部分保留在服务器上。

    因此,在回答您的问题时,您必须问自己是什么推动了这款应用的开发——是功能集,还是您知道如何使用的技术?人们经常混淆这两者,造成不必要的个人偏见,偏向于一种或另一种实现。

    【讨论】:

    • 我认为这是一个很好的方法,谢谢。从来没有任何关于 Flex 的经验,我会在接下来的几天尝试构建一些原型。
    【解决方案3】:

    我想说,Flex 适合您的目的。使用 MXML,很容易创建具有动态结构变化和效果的漂亮用户界面。由于您也处于开发的早期阶段,我建议您考虑使用即将推出的 Flex 版本的好处,之前的代码名为 Gumbo

    Gumbo 提供了许多受欢迎的更新,特别是在设计部门。例如,现在使用 FXG(一种用于以文本方式定义图形形状的标记)创建具有动态外观的引人注目的 UI 变得更加容易。 FXG 也是一项关键技术Flash Catalyst,用于将设计转换为实际代码的工具。虽然 Catalyst 在当前状态下可能无法用于生产质量代码,但它在创建原型时肯定非常有用。

    当然,在任何设计中,前端技术的选择都不应该与后端相结合,这样您就可以交换前端层。

    【讨论】:

    • 真的很有趣,我没有找到任何关于下一个 Flex 版本的信息,如果我去 Flex 肯定会考虑
    【解决方案4】:

    我不得不不同意 Rusty 对 Spring 的评价。它在不断更新,并且拥有强大的功能。

    话虽如此,我还是 GWT 的忠实粉丝。我不能说它一定比任何其他给定技术更好,但我喜欢它。

    这取决于您需要多少马力。如果你只有一百个用户,这没什么大不了的,但如果你有一个庞大的用户群,你就需要考虑得更大。 GWT 在这些情况下可能工作得很好,但我完成的大型项目是使用其他技术。

    我目前的爱好项目是http://penwag.com。我用 GWT 做前端和后端,用 Hibernate+MySQL 做持久化。整个程序在 tomcat 下运行,托管在一个 rapidvps.com 服务器上,该服务器拥有(!)128M 保证 RAM 和 100MHz CPU。

    如果您愿意,您可以使用 GWT 遵循 MVC 或 MVP 模式。但是,如果您使用 GWT,不妨采用 MVP 方法,因为它为您提供比 MVC 更好的关注点分离。

    您的用户群可能有多大?

    编辑:

    这是一个gallery of GWT 应用程序顺便说一句。

    【讨论】:

    • 您认为使用 GWT 会出现性能问题吗?我的用户群应该是数千个用户,可能有 5000 个,但是服务器和基础设施非常强大,他们告诉我,我现在对硬件了解不多,我一定会在继续之前进行调查
    • 我认为它对你来说应该没问题 - 但我还没有将 GWT 负载测试到那个级别,所以我不能用真实数据来支持它。从理论上讲,Ajax 应用程序的扩展性应该更好,因为请求在带宽和后端处理方面都小得多。
    【解决方案5】:

    这可能与 duffymo 的回答相同,但值得重复:保持客户端与服务器无关。

    在我当前的项目中,我们在客户端和服务器之间有一个 JSON REST 接口。这使我们可以拥有任意数量的不同客户端实现。从表面上看,服务器可以完全从 Java 更改为 .NET,只要数据 API 保持不变,任何客户端都不会关心。

    这种环境也可以帮助进行纯数据测试。您可以通过来回输入 JSON 来测试客户端和服务器(实时和独立)。

    【讨论】:

      【解决方案6】:

      如果您的主要先决条件之一是良好的用户界面,那么请确保您有某种类型的设计师来帮助您。您几乎可以用任何语言构建一个好的 UI,因此决定这一点的不是框架。

      我会推荐 GWT 而不是其他两个,因为没有其他原因,我发现它对我来说是最好的。您的里程可能会有所不同。

      看在上帝的份上,春天?我不想引发一场火焰战争,但真的,为什么有人会对自己这样做?将您的项目切换到更标准的技术,例如普通的 EJB3/JPA 业务层、轻量级 Web 层和 GWT 客户端,您会更快乐。代码会更少,维护起来会容易得多,而且您不必担心任何弹簧注入/拦截的怪异。 Spring 之于后端就像 Struts 之于前端,陈旧、笨重和陈旧;)

      【讨论】:

      • 我不认为 Spring 是“笨拙而陈旧”的,在构建一个 wep 应用程序时它真的很有用,但也许你把它与 GWT 一起使用是对的,它会引入一个更高的层次复杂性
      • 开启自动装配的 Spring 不会觉得笨重,FWIW。不过,没有自动装配的弹簧感觉就像在慢动作中拔牙。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多