我是否需要为此应用程序设计创建本地服务?

时间:2011-08-17 16:52:57

标签: ruby soap macruby

我有一种情况,我使用MacRuby作为瘦本地gui,大部分工作都是在我创建的Parser对象中完成的。我最终还会有一个IronRuby瘦客户端,它也会与Parser对象进行交互。

我将Parser变成了一个gem,以为我可以将它与每个客户端捆绑在一起,但我发现我的gem中的一些代码不适用于MacRuby(特别是名为regex组)。所以我认为我唯一的另一种选择是在本地将其作为服务运行。不知怎的,这对我来说似乎有点过分了,有没有其他方法来隔离gem的功能,这样我就可以将文件路径传递给它并让它做它的事情?

换句话说,有没有办法让我的MacRuby应用程序以某种方式调用外部Parser应用程序,而无需运行本地服务器和服务。如果我确实创建了一个服务,它应该像调用localhost一样简单:PORT / parser?path = / what / ever / path?然后调用解析器获取有关进度的更新,如localhost:PORT / current_file等?

编辑: 使用JRuby编译Parser应用程序是一个好主意吗?这将为我提供我正在寻找的封装,并允许我将应用程序包含在MacRuby中。

2 个答案:

答案 0 :(得分:0)

对于您所描述的内容,客户端/服务器设计似乎过于复杂。

你的解析器在JRuby中工作吗?如果是这样,为什么不使用JRuby而不是Macruby?或者C-Ruby就此而言......

如果您确实需要客户端/服务器设计,为什么不使用rails,从而使浏览器成为您的前端/客户端?

  编辑:使用JRuby编译Parser应用程序是一个好主意吗?那   会给我一些我想要的封装并允许我这样做   将应用程序包含在MacRuby中。

通过“封装”,你的意思是在部署意义上吗?如果是,那么也许不是。 JRuby服务器进程通常部署为war文件,由Tomcat或Jetty管理。另请注意,在这种情况下,您并非真正编译您的应用程序 - 但这并不重要。

您可以通过扩展webrickmongral并使用rawr打包来执行服务器流程,但同样不清楚为什么您的设计需要是客户端/服务器。

答案 1 :(得分:0)

我也不确定为什么你的设计需要客户端/服务器。

为什么不能只包含解析器并使其与MacRuby一起使用? 这似乎是最直接的方式。 如果将其捆绑为gem,则可以告诉gems在特定VM上运行。因此,您的解析器可以作为MRI的宝石和MacRuby的宝石分发。

如果实际问题是维护响应式GUI,我强烈建议您阅读Grand Central Dispatch。 GCD功能在MacRuby中可用。

http://www.macruby.org/documentation/gcd.html