我应该在Go中编写跨平台服务吗?

时间:2014-10-09 13:42:34

标签: service go cross-platform

我正在研究编写跨平台(Windows / Debian / Darwin / Red Hat)服务并正在比较语言选项。我非常欣赏Go的跨平台线程功能和简单的交叉编译,但我想确保在需要时能够轻松访问任何本机(例如Windows服务)API。

我应该考虑采取什么样的措施来推动我的语言决定?

1 个答案:

答案 0 :(得分:1)

Go完全支持通过其核心syscall包调用任意 Win32 API。

虽然通过syscall调用原始Win32并不是很好写(主要是因为你正在越过托管/非托管边界,然后返回)并且没有来自编译器的支持(类似于,比方说,Delphi),这个工作正常,并且这些API调用的包装函数的生成可以自动化 - Go核心包自己使用这个工具,其他流行的例子包括odbc包。

请注意,已经存在winsvc - 一个将Go与Windows SCM和事件日志连接起来的库。

另请参阅service,它提供了使用平台本机工具将程序转换为守护程序/服务的统一API(它在Windows上使用winsvc,IIRC)。