企业 GWT 应用程序是否需要额外的客户端-服务器传输?

Do enterprise GWT apps require extra client-server transfers?

我正在尝试决定是使用 GWT 还是手动编写的 JavaScript。如果我使用常规的 JavaScript,Java 应用程序会像这样工作:

  1. 客户端访问一个URL,服务端执行一个servlet
  2. servlet 查询数据库并将数据转发到 JSP。
  3. JavaJSP 中的脚本显示 table 中的数据。

据我所知 read,当您使用 GWT 时,流程会发生变化:

  1. 客户端访问一个 URL,服务器提供一个带有 GWT 生成的 Java脚本的页面。
  2. 生成的 Java脚本创建一个 table 并使用 GWT-RPC 告诉 servlet 提供数据。
  3. servlet 查询数据库并将 returns 数据发送到 Java 脚本,该脚本在 table.
  4. 中显示数据

在第二个过程中,客户端访问服务器两次:一次访问URL,一次告诉servlet提供数据。我明白第二部分是异步执行的,但看起来仍然很低效。我确信我遗漏了一些基本的东西,我希望有人能纠正我。

好的,让我们从效率的角度来看这个。

是的,对于您描述的简单情况,客户可能需要稍等一段时间。

虽然在开发有用的网站方面,您很可能会进行身份验证并希望从页面中间进行 ajax 调用。您可能也想根据用户输入更改布局,但在 jsp 页面中这样做既不切实际又麻烦。

手动编写 javascript 过去在不同的浏览器中 运行 也有很大不同,GWT 为特定浏览器编译不同版本是一件好事。今天可能不是这样,但如果您需要定位多个浏览器,则应考虑浏览器差异。

所以我在效率方面的回答是,对于最简单的情况,没有 GWT 并不是最有效的,但是如果您需要制作更复杂的 Web 应用程序并希望避免浏览器问题,那么在 Java 更容易维护。

实际上我在第一次调用时返回了一个 .jsp 页面,然后 GWT javascript 从那里启动(而不是使用 html 页面)。没有任何真正的理由不能在 jsp 页面中包含您想要的任何数据,除非您的要求非常简单,请保持这种方式,因为确保引导 GWT 会产生一些成本代码。在我的例子中,我需要先进行身份验证,然后返回的数据取决于他们的凭据,然后根据用户需要的信息进行大量 ajax 调用。在 javascript 中手动开发将是一场噩梦。

GWT 编译器生成的 java 脚本缓存在客户端,因此当您第一次访问应用程序时,您会发现与普通 java 脚本相比需要一些时间。但是如果您再次尝试访问它,您将不会看到加载页面时的性能问题。

在这两种情况下,您都访问了服务器两次。第一个请求是加载视图,第二个请求是从服务器获取数据。

GWT不适合简单的应用。主要用于企业应用。

GWT 编译器生成的 java 脚本处理大多数浏览器的复杂性,这些复杂性难以用普通的 java 脚本代码维护。