service - 我应该用 Go 编写跨平台服务吗?

标签 service go cross-platform

<分区>

我正在考虑编写一个跨平台(Windows/Debian/Darwin/Red Hat)服务,并且正在比较语言选项。我真的很欣赏 Go 的跨平台线程能力和简单的交叉编译,但我想确保我能够在需要时轻松访问任何 native (例如 Windows 服务)API。

我应该考虑哪些因素来插入我的语言决定?

最佳答案

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

虽然通过 syscall 调用原始 Win32 并不十分好写(主要是因为您正在跨越托管/非托管边界,然后返回)并且没有编译器的支持(类似于,比如 Delphi 的),这工作正常,并且可以自动生成此类 API 调用的包装函数——Go 核心包自己使用此功能,其他流行的示例包括 odbc包。

注意已经存在winsvc —一个将 Go 与 Windows SCM 和事件日志接口(interface)的库。

另请参阅 service它提供统一的 API,用于使用平台原生工具将您的程序转变为守护进程/服务(它在 Windows 上使用 winsvc,IIRC)。

关于service - 我应该用 Go 编写跨平台服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280024/

相关文章:

xml - 以 golang 保留顺序混合 XML 解码

go - 如何在go中获取当前包的名称?

java - 如何使用Java获取独立于操作系统的系统用户文档、图片、音乐文件夹?

c++ - 控制台输入-按回车后清除

service - Hyper-V 无法连接到本地服务器(Windows 10 主机)

linux - MongoDB服务重启后失败

android - IntentService 未被调用

go - 未加密文字预防如何工作

Android 错误将位置数据从 LocationListener 类写入 SQLite 数据库

c# - 您可以在非 Windows 平台上编写 C# 应用程序吗?