我正在考虑编写跨平台(Windows/Debian/Darwin/Red Hat)服务并比较语言选项。我真的很欣赏 Go 的跨平台线程能力和简单的交叉编译,但我想确保我能够在需要时轻松访问任何本机(例如 Windows 服务)API。
我应该考虑什么样的事情来推动我的语言决定?
qq_遁去的一_1
浏览 212回答 1
1回答
繁花如伊
Go 完全支持通过其核心包调用任意Win32 API syscall。虽然调用原始 Win32 viasyscall写起来不是很漂亮(主要是因为你跨越了托管/非托管边界,然后返回)并且没有编译器的支持(类似于 Delphi 的支持),但这只是好的,此类 API 调用的包装器函数的生成可以自动化——Go 核心包本身就使用了这个工具,其他流行的例子包括这个odbc包。请注意,已经存在winsvc一个库,它将 Go 与 Windows SCM 和事件日志连接起来。还要看看service哪个提供了统一的 API,用于使用平台原生工具(它winsvc在 Windows、IIRC 上使用)将您的程序转换为守护进程/服务。