【问题标题】:Architecture Question: GWT or Vaadin to create Desktop Application?架构问题:创建桌面应用程序的 GWT 或 Vaadin?
【发布时间】:2011-07-12 17:25:30
【问题描述】:

我们计划将 feedreader 创建为 Windows 桌面和 iPad 应用程序。由于我们希望能够在此应用程序中显示网站运行(我们自己的)JavaScript,因此我们考虑将应用程序交付为 HTML/CSS/JavaScript,只需封装通过一些 .NET 控件或 Cocoa Touch webbrowser 组件。所以手头的任务是找出使用哪个框架来创建 HTML/CSS/JS 文件以嵌入到应用程序中。

对于 HTML/CSS/JavaScript 的开发,我们很乐意使用 Vaadin、GWT 或其他一些框架,因为我们使用 Java 比使用 JS 要好得多。经过短暂的头脑风暴后,我们更喜欢 Vaadin,因为 UI 组件非常好,但我担心大部分繁重的工作将在服务器上而不是在客户端上(这不会太好)。我们也想要 GWT,但是 Java 到 JS 的编译需要很多时间和额外的步骤,并且过去使用它时会减慢开发时间。

问题是:您会选择哪个开发框架(假设您想实现这个项目并且到目前为止您主要使用 Java)以及为什么?如果有更好的框架选项 (List of Rich Client Frameworks) ,请告诉我。

编辑:应用程序需要不时与我们的服务器通信(例如同步已读取的内容),但主要应该是自己获取 xml 提要。因此我希望大部分生成的代码可以嵌入到应用程序中,并且不需要我们的服务器进行繁重的活动。

Edit2:我们(实际上,即使你怀疑)预计至少有 10000 个用户。

【问题讨论】:

    标签: gwt desktop-application wicket ria vaadin


    【解决方案1】:

    根据我使用 Vaadin 的经验,我会这样做,但您的要求有点偏向于纯 GWT。

    • Vaadin 需要服务器和服务器连接。如果主要构建离线桌面应用程序,这可以通过嵌入式 Jetty 来解决。 (仅在需要时与在线服务同步),但对于 iPad,您需要立即在线连接以启动 Vaadin 应用程序。
    • GWT 完全在客户端运行,您可以构建一个仅在需要时连接的 JavaScript 浏览器应用程序。

    因为 Vaadin 的开发速度要快得多,您可以先构建一个小的 Vaadin 版本,然后看看这在 iPad 上是否真的存在问题。

    另一方面,如果您可以假设立即上线,则可以完全跳过本地服务器安装。只需在线运行应用程序并使用操作系统默认浏览器控件(即您建议的 .NET 控件)实现桌面版本。那么 Vaadin 就容易多了。

    【讨论】:

      【解决方案2】:

      Vaadin 只是基于 GWT 的框架,但有两个非常重要的特性:

      • 不需要运行 GWT 编译器。它是纯Java。当然,如果不添加插件,那么 gwt 编译器必须运行。
      • 您无需编写通信代码。所以你不需要解决 DTO 问题、不可序列化的对象映射,也不需要编写 servlet。

      我在工作中使用 Vaadin 一年了,我们还没有出现性能问题(桌面应用程序,大约 500 个用户)。 IMO 非常好的解决方案是仅将 Vaadin 用于 UI,逻辑移动到独立的 bean 并使用 Spring 或 Guice 连接这两个元素。

      在这种情况下,您应该使用 MVP 模式和领域驱动开发。

      • Bussines bean 是使用视图接口发送响应的域对象和逻辑。
      • 自定义 Vaadin 组件(可以扩展标准组件)实现视图接口。

      如果 Vaadin 不适合您,那么当您决定更改 UI 引擎时,这种方式很好。只需重写 guice/spring 映射并编写视图接口的新实现。

      【讨论】:

        【解决方案3】:

        我的 3 美分:

        如果您决定使用 vaadin,您将受益于已经 GOOD LOOKING 的组件。由于您不想编写(很多) CSS ,因此 vaadin 开箱即用已经很漂亮了。然而,Vaadin 是一个 SERVERSIDE 框架。即使用户界面交互不涉及获取任何数据(例如从一个选项卡移动到另一个选项卡),它们也会到达后端。

        如果您决定使用 GWT,您至少必须为应用程序设置样式(这并不难)。还有编译时间长的问题(但是你可以在托管模式下测试和调试,这样你就可以在不编译的情况下运行应用程序,然后只在部署时编译)。 gwt 的主要优点是您可以控制发送到线路的内容,对于不需要从后端获取数据的 UI 交互,它将纯粹在客户端工作。开发人员将确定何时向后端发送请求。 (在 GWT 中做 RPC 请求非常简单)

        希望这会帮助您做出决定。

        【讨论】:

          猜你喜欢
          • 2010-09-14
          • 1970-01-01
          • 2010-12-26
          • 2011-01-21
          • 2018-06-17
          • 2015-06-02
          • 2015-12-10
          • 1970-01-01
          • 2012-12-16
          相关资源
          最近更新 更多