【问题标题】:Smart GWT or ext GWT or Vaadin for Google app engine?用于 Google 应用引擎的 Smart GWT 或 ext GWT 或 Vaadin?
【发布时间】:2010-09-10 18:00:49
【问题描述】:

我的后端在 Google 应用引擎上。现在我需要一个RIA。我的选择应该是什么? 智能 GWT? 分机 GWT? 还是 Vaadin?

或者如果你们中的任何人知道 JSF 和 Flex 以外的任何其他 RIA UI 技术,请告诉我。

【问题讨论】:

    标签: google-app-engine gwt smartgwt vaadin


    【解决方案1】:

    我有同样的需求:评估 SmartGWT 和 Vaadin 以用于托管在 GAE 上的 RIA 应用程序。

    到目前为止比较它们,我认为 SmartGWT 确实更快更丰富,因为所有 GUI 逻辑都编译为 javascript,并且它们非常懒惰地请求服务器端,只有当客户端需要未加载的新数据时到浏览器之前+一些灵活的缓存东西等等。 并且随着 SmartGWT 提供更多小部件而更加丰富。

    但是您必须自己实现所有服务器端的东西(或购买许可证),这是一个主要缺点,因为您必须重新实现大多数数据绑定 gui 元素所依赖的专有 DataSource 协议。

    另一个缺点 - 第一页加载需要很长时间,因为有很多静态资源和编译的 javascript 内容。

    Vaadin 使用了完全相反的方式 - 您在服务器端使用功能齐全的 java 编写所有业务代码,并从预定义的元素(已经为它们编译的 javascript)组成您的 GUI。

    主要区别在于它生成 GUI 并在服务器端处理大部分浏览器事件!因此,浏览器中任何更改 GUI 状态的操作,例如单击网格单元格、按钮或选项卡 - 都会向服务器端生成特殊请求并获得如下响应:

    for(;;);[{"changes":[["change",{"format": "uidl","pid": "PID168"},["14",{"id": "PID168","width": "100.0%"},"Selected: [AS]"]]], "meta" : {}, "resources" : {}, "locales":[]}]
    

    表示应该如何更新 GUI。因此,Vaadin 为您的 GUI 逻辑提供了完整的 java 支持,但您需要通过在服务器端处理所有 gui 事件来为此付费。

    因此,我认为 Vaadin 更适合 Intranet 并且需要更少的时间来开发您的应用,而 SmartGWT 更适合更复杂的 GUI 或需要额外往返的不稳定连接。

    附言对于 GAE,我会选择 SmartGWT,因为 GAE 对服务器请求数、带宽等有限制。

    【讨论】:

    • 这是一个相当平衡的答案,除了在 Intranet 上,Vaadin 的服务器流量对于需要在每次鼠标移动(自定义拖放)或每个击键(快速数据输入)。这些是越来越常见的情况。 Vaadin 还需要 很多 更多的服务器资源(所有 GUI 状态都保存在服务器上;SmartGWT 没有)。最后,SmartGWT 可以联系现有的服务,无需实现我们的协议,如果你使用商业版本,你就集成在 Java 中(无需实现 REST 服务器)。
    • 感谢您的澄清,SmartGwt 可以直接联系的现有服务的示例有哪些?
    • 通常返回 JSON 或 XML 的任何内容。此示例:smartclient.com/smartgwt/showcase/… .. 显示绑定到 XML 格式,例如 JAX-RS 服务可能返回的内容。但是请注意,我们不建议将绑定到生成的服务作为一种通用方法,原因很充分(请参阅forums.smartclient.com/showthread.php?t=8159#aExistingRest)。
    • 另外请注意,我们的“专有”REST 协议实际上并不比 JAX-RS 生成的服务更专有,每次生成的 API 都会有所不同。目前该领域没有标准可以围绕,因此我们提供了一个“食谱”REST 协议来处理所有企业需求(批量操作、复杂标准等)。同样,使用商业版本,您可以直接在服务器代码中返回 Java bean,或者跳过整个过程,因为 SQL/JPA/Hibernate 是内置的。
    【解决方案2】:

    您使用 GAE (Google App Engine) 标记了这个问题。 Vaadin 有一个可怕的缺点:它几乎需要粘性会话才能获得足够的性能,背景在这里:

    http://dev.vaadin.com/ticket/6349

    .. 但是 GAE 不支持粘性会话并且永远不会。错误已关闭 WontFix 此处:

    https://code.google.com/p/googleappengine/issues/detail?id=1320

    GXT 和 SmartGWT 都不需要粘性会话,也不受 Vaadin.com 上讨论的问题的影响。全面披露:我是制造 SmartGWT 的公司的 CTO。

    【讨论】:

      【解决方案3】:

      或者也许只是普通的 GWT。或者只是 HTML ;-) 你有什么需求?您的应用程序是做什么的?

      【讨论】:

      • 我认为 GAE 之上的 RIA 本身就是一项非常出色的任务。
      【解决方案4】:

      我一直在使用普通的 GWT,我非常喜欢它的灵活性和性能。另一方面,我错过了一些信息组织。许多主题都在几个论坛的零散帖子中涵盖,并且需要大量黑客攻击。恕我直言,这个框架的去向和用途没有一个明确的概念。

      另一方面,我测试过的 Vaadin 具有非常有趣的功能,开箱即用,效果很好,而且是免费的,但支持社区要小得多。

      Flex 看起来非常面向内容显示,而 GWT 及其继承者(SmartGWT、Vaadin、..)似乎在类似业务的应用程序中盛行。

      【讨论】:

      • 我们努力为 Vaadin 提供尽可能好的社区支持,目前我们有大约 40 名 Vaadin Ltd 员工(所有程序员)在我们的论坛上阅读和回答问题。您是否在论坛上遇到过任何未能迅速解决的问题?
      • 不想低估你的好工作。事实上,很多初学者的问题都是在 Vaadin 论坛中自行回答的。但事实是 GWT 社区更大,比较与任何框架相关的任何谷歌搜索的结果数量。
      • 其实这不是真的。在“GWT”上搜索也会找到一堆 Vaadin、SmartGWT 和 GXT 信息。 SmartGWT 和 Vaadin 在其论坛上的活动比在核心 GWT 论坛上的活动多,而且在这两种情况下,我会说流量质量更高。
      猜你喜欢
      • 2011-09-09
      • 2011-03-22
      • 2018-01-11
      • 2012-08-07
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多