6

我们目前有一个位于 MS SQL Server 2005 之上的 2 层 Java Swing 应用程序。所有业务逻辑都在数据库中。客户端相当老旧(而且不是很友好),出于性能和可伸缩性的原因,我们已经开始将一些服务移植到 Java 的中间层。

但是,我们仍然有一些短期和长期目标:

为新的前端选择技术堆栈

这并不容易——我可以看到从连续体一端的 Web 应用程序到另一端的传统桌面应用程序的一切都是可行的选择。当前的前端并不是很复杂(主要是基于表单的),所以我可以看到 web/AJAX 拟合,但这是一个我们不知道我们不知道什么的领域。

我的清单上的堆栈是:

  • Eclipse RCP、Netbeans RCP
  • Flex/Flash、Silverlight、JavaFX
  • 纯 Javascript 前端(Sprout Core、Javascript MVC、...)
  • 基于 Java 的 Web 框架(Wicket、JSF、...)

找到一种使当前应用程序在远程情况下可以接受的方法

我们有一些客户将我们的应用转售给较小的客户,并且需要能够远程部署它。由于当前架构的 2 层性质,这会导致糟糕的性能(例如,调用返回 18 个结果集的存储过程)。我们过去使用过 Citrix 解决方案,但没有人喜欢这种方法。通过端口 80 连接 JDBC 听起来也是个坏主意。我开始怀疑是否有任何东西可以使用类似 X-Windows 的方法来远程仅 GUI 部分。

4

6 回答 6

2

为了简化开发并利用您在 Swing 中的经验,请考虑将Vaadin用于您的前端。它是一个 Java 框架,用于构建看起来很棒且性能良好的现代 Web 应用程序。所有代码都是用 Java 编写的,看起来与 Swing 非常相似。

就整体应用程序架构而言,我建议使用多层、面向服务的架构。最好的方法是使用带有 Hibernate 的 Spring 框架进行数据库访问

于 2010-09-05T19:07:27.163 回答
2

我们刚刚经历了一个非常相似的评估过程,因为我们正在迁移一个遗留应用程序。

对我们来说,使用什么前端框架的最大决定因素是开发团队的先验知识。我们想要每个人都会立即感到舒适的东西。我们有几个使用过 X 或 Y 的高级开发人员,但每个人都知道的框架是 Swing。

最后,我们决定在 NetBeans 平台上使用 RESTful Web 服务与 EE 服务器进行通信。

作为奖励,您可以将 NetBeans 平台应用程序部署为 Java WebStart 应用程序,这意味着您不必担心单独的安装。

于 2011-06-25T21:55:18.050 回答
2

如果您想轻松地重新部署您的应用程序,出于更新、安全原因等原因,并且如果您希望您的应用程序可以远程访问,那么您真的应该考虑使用基于 Web 的前端。

另外,这样一来,只有一个应用程序,您的 Web 应用程序,将处理与数据库的连接,因此没有 JDBC 隧道或其他任何东西。

关于最佳框架,这取决于您的团队知识、应用程序的使用方式(或多或少 javascript)等。

于 2010-09-05T17:58:37.203 回答
1

假设您将强制所有客户端安装新的中间层,我想不出反对将其作为 Java Web 应用程序的论据。如前所述,您可以通过 HTTP 控制对您平台的所有访问,这允许轻松转售,只需配置防火墙即可。您没有理由不能在 Web 前端中使用 Javascript,您可能对DWR感兴趣,它允许您通过 Javascript 直接与 Java 对象进行交互。我之前使用它来向 Spring MVC webapp 添加一些简单的 Ajax 交互。

我喜欢这种方法的原因是,您已经将代码迁移到 Java 中间层,所以

  1. 已经在客户端上强加 Java 服务器硬件成本,托管应用程序服务器/Web 服务器是可比的
  2. 已经具备 Java 专业知识,可以使用 DWR
  3. 可以根据需要使用尽可能多/少的 Javascript(我在 IE6、Firefox 3、Chrome 中使用过 DWR)

我认为您对向客户端推送过多功能保持警惕是正确的,我会尽可能地选择瘦客户端。我查看前两个堆栈选择的唯一原因是如果您在特定领域拥有一些开发人员专业知识,而不是 Java webapp/Javascript。

于 2010-09-06T07:04:25.153 回答
1

如果前端主要是基于表单的,我会远离 Flex。Flex 非常适合某些应用程序(我将它用于基于画布的应用程序),但 Flex 的表单组件存在一些可用性问题。它们只是不像您对当今网络所期望的那样工作。(比如缺少对鼠标滚轮的支持,在下拉列表中输入只考虑第一个字符等)

于 2010-09-05T18:12:01.530 回答
1

我建议创建一个候选框架的简短列表,并使用所有这些框架创建一个小型测试应用程序。通过这种方式,您将从所有这些方面了解好的和坏的方面,并了解每个项目的社区活动和文档是什么样的(这些方面有很多差异)。

如果您最终这样做,我希望您将 Vaadin 包括在您的短名单中,我认为它非常适合您。如果您有任何问题,请访问我们的论坛,我们将帮助您开始。

于 2010-09-06T09:38:25.120 回答