Windows Servisleri

Windows Servisleri

          Windows servisleri arkaplanda çalışan uygulamalardır. Standart uygulamalardan farklı olarak windows servislerinin herhangi bir kullanıcı arayüzü bulunmamaktadır bu nedenle kullanıcı tarafından yönetilmeyecek olan uygulamaların geliştirilmesi için ideal bir platformdur. Diğer platformlar bu yapıyı desteklemedikleri için windows servislerini sadece NT tabanlı işletim sistemlerinde (windows 2000, 2003, xp ve NT) çalıştırabiliriz. Windows servislerini çalıştırmak için spesifik bir windows kullanıcı hesabı tanımlandığından, oturumu açan kullanıcının yetkilerinden farklı yetkilere sahip bir kullanıcı accountu ile de çalıştırılabilir ve herhangi bir kullanıcı oturum açmadan da çalışabilir.

           Windows servisleri genellikle gözlemleme amaçlı (veritabanı, registry v.b.), yönetme amaçlı (network bağlantılarını v.b.) ve bilgi toplama, analiz ve kayıt amaçlı işlemlerde kullanılır.

           Bilgisayarınızda yüklenmiş olan windows servislerini başlat->çalıştır->services.msc->enter yolunu izleyerek (veya denetim masası->yönetimsel araçlar->Services) listeleyebilir ve yönetebilirsiniz.

            Windows Servisleri registry’e bir executable olarak kayıt edilir ve “The Service Control Manager” adlı uygulama aracılığıyla yönetilir. Service Control Manager uygulaması ile yerel bilgisayardaki servisleri yönetebildiğiniz gibi, uzak bilgisayarlardaki servisleri de yönetebilirsiniz.                                                                                                                    Yerel bilgisayardaki Windows Servisleri                                                                                                                                           Uzak Bilgisayardaki Windows Servislerinin Yönetimi                                       Windows Service Mimarisi           Windows Service mimarisi üç bileşenden oluşmaktadır.                                   İstenilen özellikleri sunan bir veya daha fazla servisten oluşan uygulama.                                                      Servisi yönetmemizi sağlayan uygulama.                                     Bilgisayara yüklenmiş olan servisleri yönetmemizi sağlayan uygulama.  

Windows servislerini istediğimiz .NET dili ile geliştirebiliriz. Windows servislerini geliştirmek, bilgisayara yüklemek ve yönetmek için gerekli temel sınıflar System.ServiceProcess namespace’inde yer almaktadır. Oluşturduğumuz windows servislerini, ServiceInstaller ve ServiceProcessInstaller sınıflarının sunduğu metodları kullanarak bilgisayara yükleriz. Bilgisayarda kayıtlı olan tüm windows servislerini HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices registry bloğunda görebilirsiniz.

Windows servisini oluşturup bilgisayara yükledikten sonra başlatmak, durdurmak ve beklemeye almak için Service Control Manager’ı kullanırız. Servisimizin desteklediği özel komutları çalıştırmak içinse ServiceController sınıfının sunduğu metodları kullanırız. Windows servislerinin desteklediği 4 adet durum vardır. Bunlar; running, paused ve stopped durumlarıdır. Dördüncü durum ise, servisin start veya pause gibi bir komut aldığını ancak komutun çalıştırılmasının henüz tamamlanmadığını belirten pending durumudur.

Windows servisleri, process space içinde çalıştırdıkları servis sayısına göre kategorilendirilirler. Bir process space içinde tek bir servis çalıştırabilir (Win32OwnProcess Services) veya birden çok servisin bir process space’i paylaşmasını (Win32ShareProcess Services) sağlayabiliriz.

Windows Uygulamaları ile Windows Servisleri Arasındaki Farklar Windows servisleri, klasik windows uygulamalarına göre pek çok farklılık içermektedirler.  Kurulum: Öncelikle windows servislerinin, bilgisayarda çalışabilmesi için öncelikle servis uygulaması olarak kayıt edilmesi gerekmektedir.

Debug: Yine debug konusunda da, klasik windows uygulamalarından farklı olarak F5 ve F11 tuşlarını kullanarak debug işlemini gerçekleştiremiyoruz.  Bir windows servisini debug edebilmemiz için öncelikle bilgisayara yükleyip çalıştırmamız, sonrasında bir debugger attach ederek çalışmamız gerekmektedir.

Çalıştırma: Windows servislerinde Run metodu servisi SCM’a yükler. Run metodunu servis uygulamasının Main metodundan çağırırız. Çalışma esnasındaki farklılıklardan bir diğeri de, windows servis uygulamalarının çalışması sırasında kullanıcıya hiç bir diyalog ekranı (hata bildirim, bilgilendirme, v.b amaçlı) görüntülenmez, mesajlar olay günlüğüne kayıt edilir. Windows servislerinin özel bir güvenlik contexti ile çalışmasını sağlayabiliriz. Bu nedenle windows servisleri, bir kullanıcı oturum açmadan veya oturumu kapattıktan sonra çalışabilir.                                 Windows Servis Uygulamalarının Programlama ModeliWindows servis uygulamalarını, System.ServiceProcess alan adınının sunduğu sınıfları kullanarak geliştiririz.

            windows servislerinin oluşturulmasında, kurulum ve yönetimde kullanılan bazı sınıflar     System.ServiceProcess alan adının sunduğu bu sınıflara ek olarak, windows uygulamalarının durumunu gözlemlemek ve uygulama çalışırken debug işlemleri yapabilmek için System.Diagnostics alan adının sağladığı bazı sınıfları da kullanırız.     Windows servisi oluşturmak için System.ServiceProcess.ServiceBase sınıfını extend eden bir sınıf oluştururuz.                                                  ServiceBase sınıfının sunduğu temel metodlar

ServiceBase sınıfının sunduğu metodları override ederek windows servisini oluşturduktan sonra , ServiceProcessInstaller ve ServiceInstaller sınıflarını kullanarak servis uygulamamızın kurulumunu yapmamız gerekiyor. Her servis, kendi proses alanında çalışır. Bu nedenle servis uygulamasını bilgisayara yüklemeden önce, bir servis prosesinin oluşturulması ve yüklenmesi gerekiyor. ServiceProcessInstaller sınıfı, windows servisimizin yükleneceği ve çalıştırılacağı service process"i oluşturmakta kullanılırken, ServiceInstaller sınıfı, windows servisimizi oluşturulan service process"e yüklemekte kullanılır.

Servisimizi oluşturduktan ve bilgisayara yükledikten sonra, ServiceController sınıfını kullanarak servisimizi programatik olarak yönetebiliriz.   ServiceController sınıfının, windows servislerinin yönetiminde kullanmamız için sunduğu temel metodlar     C:/TheKaos

Döküman Arama

Başlık :

Kapat