我正在考慮編寫(xiě)跨平臺(tái)(Windows/Debian/Darwin/Red Hat)服務(wù)并比較語(yǔ)言選項(xiàng)。我真的很欣賞 Go 的跨平臺(tái)線程能力和簡(jiǎn)單的交叉編譯,但我想確保我能夠在需要時(shí)輕松訪問(wèn)任何本機(jī)(例如 Windows 服務(wù))API。我應(yīng)該考慮什么樣的事情來(lái)推動(dòng)我的語(yǔ)言決定?
1 回答

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
Go 完全支持通過(guò)其核心包調(diào)用任意Win32 API syscall
。
雖然調(diào)用原始 Win32 viasyscall
寫(xiě)起來(lái)不是很漂亮(主要是因?yàn)槟憧缭搅送泄?非托管邊界,然后返回)并且沒(méi)有編譯器的支持(類(lèi)似于 Delphi 的支持),但這只是好的,此類(lèi) API 調(diào)用的包裝器函數(shù)的生成可以自動(dòng)化——Go 核心包本身就使用了這個(gè)工具,其他流行的例子包括這個(gè)odbc
包。
請(qǐng)注意,已經(jīng)存在winsvc
一個(gè)庫(kù),它將 Go 與 Windows SCM 和事件日志連接起來(lái)。
還要看看service
哪個(gè)提供了統(tǒng)一的 API,用于使用平臺(tái)原生工具(它winsvc
在 Windows、IIRC 上使用)將您的程序轉(zhuǎn)換為守護(hù)進(jìn)程/服務(wù)。
- 1 回答
- 0 關(guān)注
- 246 瀏覽
添加回答
舉報(bào)
0/150
提交
取消