制作MacOS守护程序的语言选择是什么?

时间:2012-05-08 16:06:07

标签: java objective-c macos mono

我是一名Windows开发人员(具有一些iOS Objective-C经验),我正在非常谨慎地选择正确的语言为MacOS制作一个相当简单的守护进程。

该应用程序将下载并上传文件,与我们已经存在的.NET Web服务进行通信。

安装将由非技术的日常用户完成,因此要求他们在他们的端部进行大量配置/脚本编写是不可取的。需要一个小包装。

我认为我的选择是:

  1. 目标C
  2. 爪哇
  3. 脚本
  4. Objective-C 的优势在于它是原生的,但我还不是这种语言最强的。

    Java 非常简单,但是所有用户都拥有它吗?问人们安装它会有问题吗?

    Mono 会让我利用我的.NET技能,但它会作为守护进程优雅地安装吗?

    脚本可能是一个选项,因为它非常简单,应用程序必须做什么,但这是常态,提供这样的产品?

    -

    修改

    没有GUI。我没有隐藏代码,但是为了访问web服务需要UID / PWD(每个客户端都不同)。它将永远运行,为所有客户。

2 个答案:

答案 0 :(得分:3)

Objective-C / Cocoa或C(特别是使用Core Foundation)肯定会为您提供性能和操作系统集成优势的最原生实现。

Java是合理的,并且将内置。你需要一些基本的脚本来引导它,但不是很多。

单声道也很合理,用户可以相对容易地安装。您需要在下载页面指出它们并指定它们只需要运行时,但它是可行的。根据{{​​3}},您可以在自己的安装程序包中包含Mono运行时安装程序包,以便与守护程序同时安装。

当然,脚本语言很可能会使您的代码暴露并可修改,因此如果您担心这一点,您可能希望避免使用该路径。

无论用于开发守护进程的语言如何,您都需要考虑安装和安装。管理。

对于安装,Mac用户习惯于两种安装方法:通过用户双击然后通过安装过程或将应用程序拖到其Applications文件夹中的安装程序.pkg文件进行安装。 - 点击启动。作为开发人员,前者可以让您对包含README /许可证文本,运行pre-& amp;飞行后脚本,构建元软件包以安装一个或多个软件包(如上所述:可能包括您自己的安装程序中的Mono运行时),并且还提供操作系统和操作系统。用户能够查看将要安装的文件,在何处以及何时(安装后),如果他们愿意的话。或者,许多守护进程将是实际的Mac OS X应用程序,然后在第一次启动时将它们自己安装为后台进程。前者将独立于您的语言选择,但后者将倾向于Objective-C / Cocoa实现。

这让我想到了管理层。大多数守护进程都希望作为LaunchDaemon(适用于所有用户,通常在启动时启动)或LaunchAgent(适用于通常在登录时启动的特定用户)运行licensing。如果您与launched很好地融合,那么每个人都会更快乐,并且应该可以使用您的任何语言选项。

那么问题就是用户需要管理守护进程吗?如果是这样,这通常被实现为MenuExtra或Preference Pane。在任何一种情况下,守护进程都可以用任何语言开发并由MenuExtra / Preference窗格控制(尤其是通过launched),但在某些情况下,MenuExtra实际上可以作为守护进程使用,所以你想要在Objective-C / Cocoa中开发。

另请参阅:Apple的launched文档。

答案 1 :(得分:2)

Objective-C是最好的选择,原生的,最快的并且适合守护进程,否则你可以用已经安装在Mac OS X中的Java 6开发它,尽管可能不是那么简单将其安装为守护进程。

我的建议是使用Objective-C或plain C ...

但是,如果您习惯使用.NET,则可以安装mono并使用mono-service即使在OS X上也可以将该服务作为守护程序运行,但在这种情况下,用户必须在其计算机上安装mono,因此如果你可以处理这种交易可能是一个可行的解决方案。