0

我必须开发一个带有数据库连接的 Web 应用程序。所以我查了维基百科的“Web应用程序比较”

在这里,我主要是在寻找基于 Java 的框架。第一个让我感兴趣的是“GWT”。但是有些地方我并不清楚。

  1. 该页面不包含有关 GWT 是否使用MVC-pattern的任何信息。可以?

  2. 此外,它没有说明推送或拉取功能。那么 GWT 有什么用呢?

  3. “数据库迁移框架”上,它说“通过 java”。这是否意味着我可以使用任何可以与 Java 连接的数据库?

  4. 选择 GWT 来实现在公司网络中使用的带有数据库连接的基于 Web 的应用程序是一个合理的决定吗?或者是否有任何论据可以让我考虑任何其他框架?

  5. 我最初是一名 .Net (C#) 开发人员,我还听说过 .NET “StockTrader”示例应用程序。与 GWT的优缺点是什么?还是这两种不同的东西?

正如你所看到的,我对这件事完全陌生,如果这个问题没有得到解决,我将非常感激,因为它是关于形成一种观点。我对其他框架的任何意见或建议持开放态度。

问候,BC++

4

3 回答 3

4

GWT 主要关注 Web 应用程序的 UI 层,这使得创建和调试 HTML/Javascript 层变得容易,因为您使用 Java 对其进行编码并使用所有现有的 Java 工具。

GWT 本身并不是一个解决方案。您将需要添加其他框架来构建完整的应用程序。例如,您可以考虑将它与 Guice 和 JPA/Hibernate 一起使用。您也可以将 Spring 与它一起使用。

于 2012-04-16T12:18:48.607 回答
2

首先,澄清一下:GWT 主要是一个 UI 库——也就是说,你用 Java 编写你的界面,它将它翻译成 JavaScript,你可以在浏览器中运行它。那说:

  1. 您使用的模式独立于库。如果您使用 GWT eclipse 的项目创建器,它会将您的项目拆分为三个包(客户端、服务器和共享)......您可以从那里获取它。

  2. GWT 通常使用池化模型,客户端向服务器请求数据。但是,您可以尝试一些 push

  3. 服务器端代码只是 Java,不涉及 GWT。您可以在服务器上执行任何“java”操作,然后将其发送到您的客户端代码。

  4. 如果您在公司 Intranet 上使用它,您可能需要考虑像SmartGWT这样的完整框架,而不是纯 GWT 实现。考虑到您遵循预期的模型,这些为您提供了更多工具和更快的开发。

作为旁注,值得一提的是,您可能希望像往常一样使用纯 HTML/CSS 开发界面,然后只使用 GWT 添加动态小部件或 Ajax 调用。在 GWT 中构建整个界面(从头开始)通常是一个坏主意,从性能角度来看……您可能会遇到很多问题,以您真正想要的方式定位事物。

于 2012-04-16T12:21:35.547 回答
2

我想补充其他答案,因为 GWT 主要是客户端库。您可以通过 GWT-RPC 或 REST 与服务器通信。就 MVC 而言,许多 GWT 库中都有这些。

提到的一个是 Smart GWT,但是,我自己不会推荐这个。这样做的原因是 Smart GWT 是 Javascript 对象的瘦包装器,因此 GWT 编译器不会做很多优化工作,这通常意味着您的代码下载量比使用 java 编写的库要大并编译下来。

如果您正在寻找 GWT 之上的库,我建议您查看Ext GWT。Ext GWT 有一个丰富的小部件库,其中支持 MVC,并且是纯 java 的。我已经使用过它,虽然我遇到了问题,但我发现它比 SmartGWT 更容易处理。如果您正在寻找接近纯 GWT 的体验,我可以建议将 Spring Roo 作为起点。

在 UI 开发方面,您有几个选择,您可以在 GWT 中使用纯 JAVA 开发,使用 GWT 的 UI Binder 功能,或者创建 HTML 并添加 GWT 组件。从性能或可维护性来看,我不确定上述任何一项是否真的是“最佳”方式。

在数据库支持方面,GWT 客户端不支持远程 RDBMS,因为这通常在服务器端完成,您可以使用服务器端代码可以支持的任何数据库。您可以使用 GWT 的 HTML5 存储 API 的实验性实现,当然前提是您计划在 HTML 5 浏览器中运行。

I think the whole thing comes down to what you want to do. I would not necessarily use GWT just to use it, but it definitely helps solve certain problems because you can develop in a strongly typed language and handle such data types.

于 2012-04-17T00:45:51.217 回答