2009-05-24 45 views
2

我正在创建一个Rails应用程序,并且应该有一个Java Applet。Java小程序与Rails应用程序的通信

我的问题是该applet必须与Rails部件紧密集成。我必须能够获得所有用户的列表,更新图像等......并且互联网上有关如何使用小程序与Rails的信息量惊人的少量。所以请给我一些提示。什么是最好的方式来做到这一点?

  1. 将参数发送到小程序?
  2. 从applet使用Rails REST接口?
  3. 以某种方式使用JRuby?
  4. 其他....?

谢谢!

回答

2

你能提供更多的细节吗?在此期间,这是我拿上你的问题:

  1. 将参数传递给小程序?

你的Rails应用程序将能够服务于小程序,但一旦担任我不认为你可以将消息发送到它(但你将能够从它的消息作出回应,这是也许你问的是什么)。

  1. 从applet使用Rails REST接口?

你自己回答那一个。 REST是一种接口设计,因此可以通过任何可以发出HTTP请求的东西进行访问。诀窍是正确构造URL以便导轨知道你想要做什么。有上配置轨道线路(REST和非REST)这里良好的信息http://guides.rubyonrails.org/routing.html

  • 使用JRuby中不知何故?
  • 你可以使用jruby来做这件事,但你不需要。您的服务器(rails)和您的客户端(浏览器/ applet)通过http与彼此通话,因此不需要使用相同的语言或在同一个虚拟机上运行。

    希望能够帮助....

    1

    我想你也许还没有发现关于Applet和Rails的任何具体的原因是,它们的功能有点不同层次,是不是真的彼此依赖。看起来罗布试图澄清一些事情,所以我会再走一步,以确保我们都在同一页面上。

    Rails的工作是通过Web服务器生成并提供HTML/XML/Javascript /图像到用户的Web浏览器进行渲染。该HTML的一部分将是一个APPLET(或可能是OBJECT)标签,它指示浏览器加载小程序。通常,这指示浏览器调用Java插件并让它处理加载小程序。然而,一旦加载并运行,即使小程序显示在浏览器的当前网页上(或者甚至可能在另一个窗口中),但它确实不会非常意识到它所在的网页。对于大多数情况,小程序不关心浏览器或他们是“一部分”的页面。所以如果一个applet需要更多的信息,或者需要请求数据,它通常只会发送一个HTTP请求到它来自的服务器。它会解析数据并自行更新。

    我假设你可能需要的东西是被点击或输入到applet中,并且该数据用于更新Rails为浏览器提供的网页。随着小应用程序,你很可能有2个选项:

    1. 使用Web服务器应用程序共享状态信息
    2. 使用使用JSObject Java到JavaScript之间的通信作为http://java.sun.com/products/plugin/1.3/docs/jsobject.html

    表示老实说,选项2带有如此多的警告,除非您完全控制所有潜在用户系统上的浏览器和Java版本,否则我绝不会使用它。即使那样,我也会担心会有什么更新。

    基本上,选项1会让Applet和Javascript/HTML定期轮询Web服务器(Rails)以查看是否有任何更新或请求需要响应以进行数据交换。如果小程序由用户更新,则它通过URL请求/帖子向Web服务器发送消息,并且网页的下一个查询(可能通过类似AJAX的调用)将看到新数据并且网页将用它更新。

    我希望有帮助。

    0

    两个非常好的答案。我非常感谢他们,谢谢!

    读你的帖子让我意识到,最好的选择是使用HTTP请求到Rails REST接口。但是,我发现这种方法有一些缺点。但我没有看到更好的解决方案。小应用程序应具有的一个功能是能够浏览和搜索所有产品,这可能相当多。为每个搜索发送HTTP请求将很昂贵。也许我可以通过在applet启动时加载所有产品来解决这个问题。然后浏览和搜索会很快。或者,也许做一些不错的缓存。所以一旦发现它们,我不会再取它们。

    关于在网上找不到关于此的大量信息。我看到你的观点monceaux。但是......我仍然认为应该有更多。我的意思是,在我的情况下,我真的很喜欢Rails特定的库,它帮助我发送请求到正确的URL。不好的Java不是那么动态的。很难自动做一些东西,比如在Ruby和Rails中。也许我会为此写一个小型图书馆。我的意思是,我必须写下它。那么为什么不制作一个图书馆呢?有些人可能会使用它。