RIA与RCP

时间:2009-04-14 20:43:59

标签: user-interface eclipse-rcp ria rcp

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


编辑: 你的所有答案都非常有趣。我想接受所有这些,因为他们为我的答案做出了贡献,我承认一个非常开放的问题。所以我为每个人投了票。希望赏金将在你们之间分享。

9 个答案:

答案 0 :(得分:7)

对于您的申请要求没有任何细节,这对回答问题非常关键。

使用GWT的最大胜利是相对于RCP这样的易用部署。对于用户而言,没有什么比将他们的Web浏览器指向URL更容易了,而且操作团队没有什么比将代码推送到服务器,弹出它并将其调用一天更容易。

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

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

答案 1 :(得分:7)

尽管GWT有很长的路要走,但它并没有提供与正确应用相同的灵活性和可访问性。

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

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

如果您认为您的应用程序需要一个具有多个视图和编辑器的工作台,那么就会给出选择。

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

如果申请是为了更多的偶然任务,那么GWT非常好。

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

我们为Eclipse开发了一个(试点项目)插件,然后将其转换为独立的RCP应用程序(我们不想将其作为插件发送,因为我们不希望Eclipse作为预先安装req,所以我们不得不添加一些支持代码,这比使用jQuery进入RIA应用程序进入RCP的简单移动稍微复杂一点。

尽管RCP阵营付出了最大努力,但RIA版本大致需要开发(即使它是从头开始),它的执行看起来更顺畅。

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

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

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

答案 4 :(得分:3)

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

这并不意味着RIA定义不好,如果你知道自己在做什么就可以编写安全的RIA(客户端代码中没有业务逻辑,没有状态,服务器端的输入验证也是如此) 。有几个框架实现了这个安全服务器驱动的RIA,一个是IT Mill toolkit(基于GWT),ICEFaces也应该是我所知道的。

答案 5 :(得分:1)

我选择RCP工作的组织,因为他们的用户需要在线和离线(当他们在路上时等)使用该应用程序。我知道现在可以通过google grears实现这一点,但齿轮并不是真正的主流,足以让大型组织以其旗舰产品为基础。 但是,如果您的用户不需要离线,您可以省去在您的rcp应用程序和服务器之间同步用户数据/产品更新的麻烦,在这种情况下RIA将是最佳选择。

答案 6 :(得分:1)

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

确定的一些好处包括:

  • 它很容易升级,就像一个RIA(只需重新部署它的JAR文件,它将在下次用applet浏览页面时被选中)
  • 它看起来,感觉,行为和表现都像本机应用程序,很像RCP(感谢SWT)

确定的一些不利因素包括:

  • 用户的计算机必须安装Java插件。
  • 必须使用与用户插件兼容的Java版本开发应用程序(尽管客户端可能要求在员工计算机上安装最低版本)。 RetroWeaver工具可以提供帮助,虽然我对它没有太多经验。
  • 用户必须保持Web浏览器处于打开状态,否则应用程序将被终止。

答案 7 :(得分:0)

此应用程序的性质是什么。它应该在客户端计算机上完全运行吗?是否需要访问本地存储的数据?您是仅仅为现有应用程序重新编写GUI,而引擎仍然是遗留代码?

答案 8 :(得分:0)

我的另一个重要人物是开发一个软件设备,她利用AJAX作为配置设备的方法。配置的功能集很丰富,与RIA非常吻合。同样,非常不鼓励在Web浏览器上本地安装软件。