1 Temmuz 2019 Pazartesi

Topshelf nedir ve "Hello World" örneği

Topshelf windows üzerinde servis olarak çalışabilecek uygulamalar geliştirmeye imkan sağlayan bir kütüphanedir. Servisler bilindiği gibi işletim sistemde arka planda uzun süreli çalışan uygulamalardır ve konfigürasyona bağlı olarak işletim sistemi başlatıldığında otomatik olarak çalışmaya başlayabilirler.

Bu yazı kapsamında basit bir örnek konsol uygulamasının topshelf kullanılarak servis olarak çalıştırılması sağlanacaktır. İlk olarak Nuget paket yöneticisi üzerinden topshelf kütüphanesi projeye eklenmelidir.


Bir konsol uygulama oluşturup, topshelf'i projemize ekledikten sonra ilk olarak Servis olarak çalışacak bir sınıf tanımlıyoruz. Bu sınıfta bir serviste bulunması gereken start ve stop metodları mevcut.


Servis sınıfımızı tanımladıktan sonra, bu sınıfı topshelf projesini kullanarak konfigure edecek ConfigureService adında bir sınıf tanımlıyoruz. Servis başlatıldığında/durdurulduğunda çağrılacak metodları ve servis adı,açıklaması gibi bilgileri burada belirtiyoruz.

Main içerisinde tek yaptığımız ConfigureMyService.Configure metodunu çağırmak.

class Program
    {
        static void Main(string[] args)
        {
            ConfigureMyService.Configure();
        }
    }

Uygulamayı build ettiğimizde, uygulama çıktısı (proje-adi.exe) oluşuyor. Bu uygulamayı servis olarak kaydetmemiz için tek yapmamız gereken, admin olarak açtığımız terminalde;
" ConsoleApp1.exe install " komutunu girmek. (servisi kaldırmak için de hakeza uninstall komutunu kullanacağız)

Uygulamamız artık servis olarak çalışmaya başladı, makinemizde çalışan servislere göz atarsak;

Böylece Topshelf kullanarak hızlı ve basit bir şekilde servis uygulaması yazmış olduk.


2 yorum:

  1. Uygulamayı Setup haline getirip setup çalışınca direk kullanıcı bilgisayırna kurdurmak istiyorum . bunun için nasıl bir yol izlemeliyim

    YanıtlaSil
    Yanıtlar
    1. Merhaba, yanıt biraz geç oldu ama :) Bahsettiğin iş için tool lar mevcut, içlerinden Inno Setup 'ı önerebilirim:

      https://jrsoftware.org/isinfo.php

      Sil