Mac OS X - Cocoa应用程序和运行在同一个盒子上的基于Java的应用程序(守护程序)之间“通信”的最佳方式是什么

时间:2011-05-27 21:45:52

标签: cocoa ipc

我在Cocoa上有一个用objective-c编写的应用程序,有一些UI。我打算编写另一个可以在后台运行并自动启动的Java应用程序(基本上是一个dameon)。然后Cocoa应用程序将与Java应用程序“通信”,以定期或按需开始执行某些任务。那可行吗?如果是这样,在编程复杂性方面,两者之间最好的沟通方式是什么?插座?通过档案?命名管道?

2 个答案:

答案 0 :(得分:2)

这当然可行。有许多潜在的机制,但它们都归结为选择一些进程间通信机制。但是你为什么要将java应用程序作为守护进程呢?显而易见的是,您的Cocoa应用程序只需运行Java应用程序。

如果事实证明由于某种原因 - 比如java应用程序有很多持久状态,或者需要很长时间才能启动 - 那么最简单的方法可能是使用命名管道,/ k /一个FIFO。创建FIFO后,您只需从UI进程写入它,然后从Java中读取它作为文件。这具有额外的优势,它提供了一个自然的事件队列(这就是它的用途,这就是它被称为FIFO的原因。)

答案 1 :(得分:0)

你如何定义“最佳”?最快的?最简单的设置?交易安全吗?

也许最简单的方法是让您的java应用程序在单独的线程上启动http或xmlrpc服务器。有很多客户端和服务器库可以提供帮助。作为附带好处,它使java应用程序更容易测试,因为您可以使用curl等命令行工具在开发过程中模拟cocoa应用程序。