你会为后端Web应用程序做些什么:Flex,GWT,JQuery?

时间:2009-07-04 11:44:08

标签: jquery flex spring web-applications gwt

我应该为后台办公室构建一个Web应用程序,其中一个主要要求是一个很好的用户界面。

在服务器端,我将使用Java非常可能的Spring框架,具体取决于我将在客户端使用的内容。

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

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

你有什么建议吗?

提前致谢

6 个答案:

答案 0 :(得分:5)

如果您将应用划分为单独的服务和视图层,我认为您可以完全推迟选择。获得正确的后端,您可以随意交换视图技术。

至于选择,请选择您和您的团队最了解的那个。最重要的考虑因素是支持和维护。我相信这三个人都可以用足够的努力和精力满足你的需求。

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

答案 1 :(得分:3)

这一切都归结为三件事:

  1. 您正在构建什么类型的应用程序?
  2. 您熟悉的技术技能是什么,并在必要时舒适地将您的技能转移到哪里?
  3. 您的基础架构有哪些技术要求?
  4. 如果应用程序功能正在推动该技术,那么您必须确定基于增强型超文本的应用程序是否适合您的需求(AJAX,XHTML),或者更富媒体技术是否更适合,例如Flash平台(Flex是其中的一部分)。

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

    但我认为,基于Flash平台的RIA可以像AJAX构建的RIA一样构建,几乎没有架构变化,或者你可以“将应用程序划分为单独的服务和视图层......”这是一个巨大的误解。你可以随意交换视图技术。“我的朋友是灾难的秘诀。构建Flash Platform / Flex应用程序意味着后端是客户端应用程序的从属,而不是相反,因为应用程序智能大部分都驻留在客户端上。如果你像AJAX应用程序一样构建一个Flex应用程序,你将会遇到一个完全过分的混乱,我已经看到它发生了很多次。诀窍是知道控制器/服务的哪些部分要保留在客户端上,以及哪些部分要保留在服务器上。

    因此,在回答您的问题时,您必须问自己哪个推动了这个应用程序的开发 - 功能集,或者您知道如何使用的技术?很多时候人们会混淆两者,造成不必要的个人偏见,支持其中一种或另一种实施。

答案 2 :(得分:2)

Flex适合您的目的我会说。使用MXML,可以非常轻松地创建具有动态结构更改和效果的漂亮用户界面。由于您还处于开发的早期阶段,我建议您考虑使用即将推出的Flex版本的好处,以前的代码名为Gumbo

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

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

答案 3 :(得分:1)

我不同意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个应用程序BTW。

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

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

我建议GWT超过其他两个,没有其他原因,我发现它对我来说是最好的。您的里程可能会有所不同。

为了善良,春天?我不想开始一场火焰战,但实际上,为什么有人会这样做呢?将您的项目转换为更普通的EJB3 / JPA业务层,轻量级Web层和GWT客户端等更标准的技术,您将会更加快乐。将会有更少的代码,它将更容易维护,您不必担心任何弹簧注入/拦截奇怪。 Spring是后端Struts的前端,过时,笨重和旧;)