2

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

该应用程序将下载和上传文件,与我们现有的 .NET Web 服务进行通信。

安装将由非技术性的日常用户完成,因此要求他们自己进行大量配置/脚本编写不是一种选择。一个精巧的包装是必需的。

我认为我的选择是:

  1. Objective-C
  2. 爪哇
  3. 单核细胞增多症
  4. 脚本

Objective-C的优势在于它是原生的,但我还不是这门语言最强大的。

Java很简单,但所有用户都有吗?要求人们安装它会是一个问题吗?

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

脚本可能是一种选择,因为应用程序必须执行的操作非常简单,但交付这样的产品是常态吗?

--

编辑

不会有图形用户界面。我可以不隐藏代码,尽管需要 UID/PWD 才能访问 Web 服务(每个客户端都不同)。对于所有客户端,它将始终运行。

4

2 回答 2

3

Objective-C/Cocoa 或 C(尤其是使用Core Foundation)肯定会为您提供具有性能和操作系统集成优势的最本机实现。

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

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

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

无论用于开发守护程序的语言是什么,您都需要考虑安装和管理。

对于安装,Mac 用户习惯于两种安装方法: 通过 Installer 安装.pkg文件,用户双击然后通过安装过程或通过将应用程序拖到他们的应用程序文件夹并双击启动。作为开发人员,前者为您提供了很多控制权,包括 README/许可文本、运行飞行前和飞行后脚本、构建元包以安装一个或多个包(如上所述,可能在您的自己的安装程序),并且还使操作系统和用户能够查看将安装的文件、位置和时间(安装后),如果他们愿意的话。或者,许多守护进程将是实际的 Mac OS X 应用程序,它们会在首次启动时将自身安装为后台进程。前者将独立于您的语言选择,

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

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

另请参阅:Apple 的Designing Daemons & Services文档。

于 2012-05-08T16:50:57.163 回答
2

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

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

但是,如果您习惯于使用 .NET,即使在 OS X 上,您也可以安装 mono 并使用mono-service作为守护进程运行该服务,但在这种情况下,用户必须在他们的机器上安装 mono,所以如果您可以处理这种权衡可能是一个可行的解决方案。

于 2012-05-08T16:11:33.147 回答