Merhaba arkadaşlar,
GO ile Windows servisi hazırlamak için github'da bir çok kütüphane mevcut ama ben github.com/kardianos/service kütüphanesini kullanacağım çünkü kullanımı cidden basit.
Öncelikle kütüphanemizi aşağıdaki komutu kullanarak indiriyoruz.
Kütüphanemizi indirdiğimize göre kodlamaya başlayabiliriz.
Kütüphanenin yazarı bizim anlamamız için basit bir örnek oluşturmuş biz de bunu kullanacağız.
GO ile Windows servisi hazırlamak için github'da bir çok kütüphane mevcut ama ben github.com/kardianos/service kütüphanesini kullanacağım çünkü kullanımı cidden basit.
Öncelikle kütüphanemizi aşağıdaki komutu kullanarak indiriyoruz.
Kod:
[COLOR=Magenta]go get github.com/kardianos/service[/COLOR]
Kütüphanemizi indirdiğimize göre kodlamaya başlayabiliriz.
Kütüphanenin yazarı bizim anlamamız için basit bir örnek oluşturmuş biz de bunu kullanacağız.
Kod:
[LEFT][COLOR=#d4d4d4][FONT=dm][COLOR=#abb2bf]package[/COLOR][COLOR=#abb2bf] main[/COLOR]
[COLOR=#61afef]import [/COLOR][COLOR=#abb2bf]([/COLOR]
[COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]log[/COLOR][COLOR=#d4d4d4]"[/COLOR]
[COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]fmt[/COLOR][COLOR=#d4d4d4]"[/COLOR]
[COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]github.com/kardianos/service[/COLOR][COLOR=#d4d4d4]"[/COLOR]
[COLOR=#abb2bf])[/COLOR]
[COLOR=#c678dd]var [/COLOR][COLOR=#abb2bf]logger[/COLOR][COLOR=#d4d4d4] service.Logger[/COLOR]
[COLOR=#c678dd]type [/COLOR][COLOR=#ffd399]program[/COLOR][COLOR=#d4d4d4] struct { }[/COLOR]
[COLOR=#61afef]func[/COLOR][COLOR=#abb2bf] (p [/COLOR][COLOR=#abb2bf]*[/COLOR][COLOR=#abb2bf]program)[/COLOR][COLOR=#61afef] Start[/COLOR][COLOR=#abb2bf](s [/COLOR][COLOR=#e06c75]service[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#e06c75]Service[/COLOR][COLOR=#abb2bf])[/COLOR][COLOR=#abb2bf] error[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#5c6370]//[/COLOR][COLOR=#5c6370][I] Başlangıç bloklanmamalı. Yapacağınız asıl işi asenkron olarak yapınız.[/I][/COLOR]
[COLOR=#abb2bf]go [/COLOR][COLOR=#e06c75]p[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]run[/COLOR][COLOR=#abb2bf](s)[/COLOR]
[COLOR=#66b9f4]return [/COLOR][COLOR=#abb2bf]nil[/COLOR]
[COLOR=#d4d4d4]}[/COLOR]
[COLOR=#61afef]func[/COLOR][COLOR=#abb2bf] (p[/COLOR][COLOR=#abb2bf] *[/COLOR][COLOR=#abb2bf]program)[/COLOR][COLOR=#61afef] run[/COLOR][COLOR=#abb2bf]([/COLOR][/FONT][/COLOR][COLOR=#d4d4d4][FONT=dm][COLOR=#abb2bf]s service.Service)[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#5c6370]//[/COLOR][COLOR=#5c6370][I] Kodumuzu buraya yazacağız.[/I][/COLOR]
[COLOR=#e06c75]fmt[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Println[/COLOR][COLOR=#abb2bf]([/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]selam[/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#abb2bf])[/COLOR][/FONT][/COLOR]
[COLOR=#d4d4d4][FONT=dm][COLOR=#e06c75] s[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Install[/COLOR][COLOR=#abb2bf]() // Servisi bilgisayara kurar. Zaten kuruluysa hata döndürür.[/COLOR]
[/FONT][/COLOR][COLOR=#d4d4d4][FONT=dm][COLOR=#e06c75] s[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Uninstall[/COLOR][COLOR=#abb2bf]()[/COLOR][COLOR=#5c6370] //[/COLOR][COLOR=#5c6370][I] Servisi bilgisayardan kaldırır. Bulunamazsa hata döndürür.[/I][/COLOR]
[COLOR=#e06c75] s[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Restart[/COLOR][COLOR=#abb2bf]()[/COLOR][COLOR=#5c6370] //[/COLOR][COLOR=#5c6370][I] Servisi yeniden başlatır.[/I][/COLOR]
[/FONT][/COLOR]
[COLOR=#d4d4d4][FONT=dm] [COLOR=#5c6370]//[/COLOR][COLOR=#5c6370][I] Diğer kodları ellemenize gerek yok[/I][/COLOR]
[COLOR=#d4d4d4]}[/COLOR]
[COLOR=#61afef]func [/COLOR][COLOR=#abb2bf](p[/COLOR][COLOR=#abb2bf]*[/COLOR][COLOR=#abb2bf]program) [/COLOR][COLOR=#61afef]Stop[/COLOR][COLOR=#abb2bf](s [/COLOR][COLOR=#e06c75]service[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#e06c75]Service[/COLOR][COLOR=#abb2bf]) [/COLOR][COLOR=#abb2bf]error[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#5c6370]//[/COLOR][COLOR=#5c6370][I] Durdurulma bloklanmamalı.[/I][/COLOR]
[COLOR=#66b9f4]return [/COLOR][COLOR=#abb2bf]nil[/COLOR]
[COLOR=#d4d4d4]}[/COLOR]
[COLOR=#abb2bf]
[/COLOR][/FONT][/COLOR]
[COLOR=#d4d4d4][FONT=dm][COLOR=#abb2bf]func [/COLOR][COLOR=#61afef]main[/COLOR][COLOR=#abb2bf]()[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#5c6370]//[/COLOR][COLOR=#5c6370][I] Burada servisimizin adını, ve açıklamasını ayarlayabiliriz.[/I][/COLOR]
[COLOR=#d4d4d4] svcConfig :[/COLOR][COLOR=#abb2bf]=[/COLOR][COLOR=#abb2bf]&[/COLOR][COLOR=#e06c75]service[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#e06c75]Config[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#d4d4d4] Name: [/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]BenimIlkGoServisim[/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#d4d4d4],[/COLOR]
[COLOR=#d4d4d4] DisplayName: [/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]Go servisi[/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#d4d4d4],[/COLOR]
[COLOR=#d4d4d4] Description: [/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#98c379]Bu bir test servisidir[/COLOR][COLOR=#d4d4d4]"[/COLOR][COLOR=#d4d4d4],[/COLOR]
[COLOR=#d4d4d4] }[/COLOR]
[COLOR=#d4d4d4] prg: [/COLOR][COLOR=#abb2bf]= [/COLOR][COLOR=#abb2bf]&[/COLOR][COLOR=#abb2bf]program[/COLOR][COLOR=#d4d4d4] { }[/COLOR]
[COLOR=#abb2bf]s[/COLOR][COLOR=#d4d4d4], err : [/COLOR][COLOR=#abb2bf]= [/COLOR][COLOR=#e06c75]service[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]New[/COLOR][COLOR=#abb2bf](prg[/COLOR][COLOR=#d4d4d4], [/COLOR][COLOR=#abb2bf]svcConfig)[/COLOR]
[COLOR=#66b9f4]if [/COLOR][COLOR=#abb2bf]err [/COLOR][COLOR=#abb2bf]!= [/COLOR][COLOR=#abb2bf]nil[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#e06c75]log[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Fatal[/COLOR][COLOR=#abb2bf](err)[/COLOR]
[COLOR=#d4d4d4] }[/COLOR]
[COLOR=#abb2bf]logger[/COLOR][COLOR=#d4d4d4],[/COLOR][COLOR=#abb2bf]err[/COLOR][COLOR=#abb2bf]=[/COLOR][COLOR=#e06c75]s[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Logger[/COLOR][COLOR=#abb2bf](nil)[/COLOR]
[COLOR=#66b9f4]if [/COLOR][COLOR=#abb2bf]err [/COLOR][COLOR=#abb2bf]!= [/COLOR][COLOR=#abb2bf]nil[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#e06c75]log[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Fatal[/COLOR][COLOR=#abb2bf](err)[/COLOR]
[COLOR=#d4d4d4] }[/COLOR]
[COLOR=#abb2bf]err [/COLOR][COLOR=#abb2bf]=[/COLOR][COLOR=#e06c75] s[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Run[/COLOR][COLOR=#abb2bf]()[/COLOR]
[COLOR=#66b9f4]if [/COLOR][COLOR=#abb2bf]err[/COLOR][COLOR=#abb2bf] != [/COLOR][COLOR=#abb2bf]nil[/COLOR][COLOR=#d4d4d4] {[/COLOR]
[COLOR=#e06c75]logger[/COLOR][COLOR=#d4d4d4].[/COLOR][COLOR=#61afef]Error[/COLOR][COLOR=#abb2bf](err)[/COLOR]
[COLOR=#d4d4d4] }[/COLOR]
[COLOR=#d4d4d4]}[/COLOR]
[/FONT][/COLOR]
[/LEFT]