6

我在一个项目中,我们尝试为旧应用程序构建 GUI 替代品。在我们真正实现功能之前,我们已经开始使用 Eclipse RCP(富客户端平台)和 GWT(Google 小部件工具包,一种富 Internet 应用程序)进行原型设计。您对 RIA 和 RCP GUI 有何经验?什么时候使用 RIA 有意义?在什么情况下富客户端更适合?随着RIA目前的可能性,划线变得越来越困难..您有什么经验吗?


编辑:你所有的答案都很有趣。我愿意接受所有这些,因为它们有助于回答我的问题,我承认这是一个非常开放的问题。所以我对他们每个人都投了赞成票。希望赏金将在你们之间分享。

4

9 回答 9

7

没有任何关于您的应用程序要求的详细信息,这对于回答这个问题非常关键。

使用 GWT 的最大优势是相对于 RCP 之类的易于部署。对于用户来说,没有什么比将他们的 Web 浏览器指向一个 URL 更容易的了,而对于运营团队来说,没有什么比将代码推送到服务器、弹跳它并调用它更容易的了。

就功能而言,GWT 的不足之处在于更丰富的数据可视化:图表、树/节点、网络图等。这些东西可以通过 GWT 和服务器上的一些帮助实现,但 DHTML 的局限性开始即使使用像 GWT 这样功能强大的工具包,也能展示出来。另一方面,RCP 为您提供了 Java 2D 的全部功能,可以可视化您想要的任何内容。这些特性对您来说可能不是必需的,但它们也是使应用程序真正有趣的特性,而不仅仅是一堆乱七八糟的选项卡、树和数据网格控件。

几年来我一直在使用 Adob​​e Flex 进行开发,发现它非常强大,具有与 GWT 之类的部署优势或多或少相同的优势,但提供与 RCP 相同的功能。您可能也想检查一下。

于 2009-04-20T07:03:52.477 回答
7

尽管 GWT 走了很长一段路,但它并没有提供与适当的应用程序相同的灵活性和可访问性。

即使 GWT 应用程序几乎可以完成实际应用程序可以做的所有事情,但许多因素表明 RCP 将是最好的工具。

  • 重复工作
  • 大量输入
  • 长时间的会议
  • 重复的任务
  • 用于编辑或演示的自定义小部件。
  • 具有不同数据的多个窗口。
  • 常用操作的快捷键
  • 快速响应。
  • 一个真正的菜单栏,coolbars。
  • 在任务栏中很容易找到的适当窗口。
  • 很少使用的操作的上下文菜单
  • 有限(或已知的)用户数量。
  • 广泛或复杂的动画或实时更新。

如果您认为您的应用程序需要一个带有多个视图和编辑器的工作台,那么您可以选择。

RCP 和工作台不是那么容易使用,但是如果应用程序可以从具有多个开放视图/编辑器等的更“免费”和开放的工作模型中受益,那么您可以免费获得很多。

如果应用程序是用于更多偶尔的任务,那么 GWT 真的很好。

GWT 非常好,但它仍然是一个 Web 应用程序,有时很糟糕。我不想在一个 Web 应用程序中完成我的所有工作,因为我可能会不小心按下一个键并丢失我所有的工作和会话。(我的键盘甚至在箭头键旁边还有一个似乎无法禁用的键)。它足够强大,几乎可以完成您在 RCP 中可以做的任何事情,但它仍然在 Web 浏览器中运行,这可能会令人恼火。

请记住,您可以使用 java Webstart 来部署 RCP 应用程序。

于 2009-04-21T11:57:48.033 回答
3

根据我的经验,RIA GUI 往往足够强大,可以将大部分信息传达给用户。可能有一些例外,但我现在想不出一个好的。RIA 的优点是任何人都可以通过 Web 浏览器访问,而无需安装胖客户端 (RCP)。除非您有一些无法通过网络技术完成的特殊复杂显示,否则我建议您采用 RIA 路线。

于 2009-04-14T21:00:38.070 回答
3

我们为 Eclipse 开发了一个(试点项目)插件,然后将其转换为独立的 RCP 应用程序(我们不想将它作为插件发布,因为我们不希望 Eclipse 作为 pre-req,所以我们必须添加一些支持代码,使其比简单地迁移到 RCP使用 jQuery 的 RIA 应用程序稍微复杂一些。

尽管 RCP 阵营尽了最大的努力,但 RIA 版本的开发时间几乎相同(尽管它是从头开始的),并且执行起来看起来更顺畅。

关键是 RIA 版本不需要安装,因为我们所有的客户端都已经拥有应用程序服务器,并且更新集中在服务器上,而不是每个客户端。

RCP 版本的功能早已落后。就我们而言,Eclipse 作为开发环境很好(对于 Java,我们没有使用其他语言的经验),但是他们将 IDE 与 GUI 分开(使 RCP 成为可能)的努力并不完全完成的。

另一方面,jQuery 似乎是为这类东西定制的(可能是因为它是为这类东西定制的)。应用程序的开发和运行都非常好。

于 2009-04-18T06:18:52.257 回答
3

丰富的互联网应用程序是制作像传统桌面软件一样强大的软件的好方法。RIA 的一个常见问题是许多开发人员倾向于将业务逻辑放在客户端代码中。客户端代码中的业务逻辑和状态非常不安全,因为可以在运行时操作客户端代码。此外,它是一个白盒系统,允许黑客检查代码并发现弱点,例如仅在客户端代码中完成的输入验证或操纵状态。不要被混淆所迷惑,因为它只会减慢黑客的速度,但不会阻止他。Billy Hoffman 写了一本关于 AJAX 安全性的好书(称为ta-daa,“Ajax 安全性”),我向每个 RIA 开发人员推荐这本书。

这并不意味着 RIA 在定义上很糟糕,如果您知道自己在做什么,您可以编写安全的 RIA(客户端代码中没有业务逻辑,没有状态,输入验证 [也] 在服务器端完成等)。有几个框架可以实现这种更安全的服务器驱动 RIA,一个是IT Mill 工具包(基于 GWT),据我所知,ICEFaces也应该是一个。

于 2009-04-20T13:34:32.630 回答
1

我工作的一个组织选择了 RCP,因为他们的用户需要在线和离线使用该应用程序(当他们在路上时等)。我知道现在使用 google grears 可以做到这一点,但是对于大型组织来说,gears 还不够主流,无法将其作为旗舰产品的基础。但是,如果您的用户不需要离线,您将真正省去在您的 rcp 应用程序和服务器之间同步用户数据/产品更新等的麻烦,在这种情况下,RIA 将是要走的路。

于 2009-04-21T01:49:13.597 回答
1

还可以部署具有 RIA 的一些好处的 RCP。正在为我们的客户研究的一种解决方案(仅供其公司内的员工使用)是使用通过 Java servlet 启动的 Java 应用程序。

确定的一些好处包括:

  • 它很容易升级,很像 RIA(只需重新部署它的 JAR 文件,下次浏览到带有小程序的页面时就会选择它)
  • 它的外观、感觉、行为和执行都像本机应用程序,很像 RCP(感谢 SWT)

确定的一些损害包括:

  • 用户的计算机必须安装 Java 插件。
  • 应用程序必须以与用户插件兼容的 Java 版本开发(尽管客户端可能需要在员工计算机上安装最低版本)。RetroWeaver 工具可以提供帮助,尽管我对它没有太多经验。
  • 用户必须保持网络浏览器打开,否则应用程序将被终止。
于 2009-04-23T09:26:10.127 回答
0

这个应用程序的性质是什么。它应该完全在客户端计算机上运行吗?它是否需要访问本地存储的数据?您是否只是在引擎仍然是遗留代码的情况下为现有应用程序替换 GUI?

于 2009-04-18T10:41:44.497 回答
0

我的另一半正在开发一个软件设备,她利用 AJAX 作为配置设备的一种方式。用于配置的功能集很丰富,并且与 RIA 非常吻合。同样,非常不鼓励在 Web 浏览器上本地安装软件。

于 2009-04-18T11:35:56.973 回答