Aracılığıyla paylaş


Windows Hizmet Uygulamalarına Giriş

Eski adıyla NT hizmetleri olarak bilinen Microsoft Windows hizmetleri, kendi Windows oturumlarında çalışan uzun süreli yürütülebilir uygulamalar oluşturmanıza olanak sağlar. Bu hizmetler, bilgisayar önyükleme yaptığında, otomatik olarak başlatılabilir, duraklatılabilir ve yeniden başlatılabilir ve herhangi bir kullanıcı arabirimi göstermez. Bu özellikler, aynı bilgisayarda çalışan diğer kullanıcılara engel olmadan uzun süreli işlevselliğe gereksinim duyduğunuzda veya bir sunucu üzerinden hizmet kullanımını ideal hale getirir. Hizmetleri, oturum açmış olan kullanıcıdan veya varsayılan bilgisayar hesabından farklı olan belirli bir kullanıcı hesabının güvenlik bağlamında da çalıştırabilirsiniz. Hizmetler ve Windows oturumları hakkında daha fazla bilgi için MSDN Kitaplığındaki Platform SDK belgelerine bakın.

Not

Windows Hizmeti şablonu ve ilişkili işlevsellik Standard Edition of Visual Studio öğesinde kullanılamaz.

Hizmet olarak yüklenen bir uygulama oluşturarak kolayca hizmet oluşturabilirsiniz. Örneğin, performans sayacını izlemeyi ve eşik değerlerine tepki vermeyi istediğinizi varsayın. Performans sayacı verilerini dinleyen, uygulamayı dağıtan ve verileri toplamaya ve çözümlemeye başlayan bir Windows hizmeti uygulaması yazabilirsiniz.

Hizmete hangi komutların gönderilebileceğini ve bu komutlar alındığında hangi eylemlerin yapılması gerektiğini denetleyen kodu tanımlayarak hizmetinizi bir Microsoft Visual Studio projesi olarak oluşturun. Bir hizmete gönderilebilen komutlar hizmeti başlatma, duraklatma, sürdürme ve durdurmayı içerir, aynı zamanda özel komutlar da yürütebilirsiniz.

Uygulamayı oluşturup yapılandırdıktan sonra, komut satırı yardımcı programı olan InstallUtil.exe'yi çalıştırarak veya hizmetin yürütülebilir dosya yolunu geçirerek veya Visual Studio'nun dağıtım özelliklerini kullanarak yükleyebilirsiniz. Sonra, Hizmet Denetim Yöneticisi'ni hizmetinizi başlatmak, durdurmak, duraklatmak, devam ettirmek ve yapılandırmak için kullanabilirsiniz. Ayrıca bu görevlerin birçoğunu Sunucu Gezgini'nin Hizmetler düğümünde veya ServiceController sınıfını kullanarak da gerçekleştirebilirsiniz.

Hizmet Uygulamaları karşılaştırmasıDiğer Visual Studio Uygulamaları

Hizmet uygulamaları, çeşitli yönlerden diğer birçok proje türüne göre farklı çalışır:

  • Projenin anlamlı bir şekilde çalışabilmesi için önce bir hizmet uygulama projesinin oluşturduğu derlenmiş yürütülebilir dosya sunucuya yüklenmelidir. F5 veya F11 tuşuna basarak bir hizmet uygulamasını çalıştırmaz veya hata ayıklama yapamazsınız; kodunda bir hizmet veya adımı hemen çalıştıramazsınız. Bunun yerine, hizmetinizi yüklemeli ve başlatmalı ve ardından hizmetin işlemine bir hata ayıklayıcı eklemelisiniz. Daha fazla bilgi için bkz. Windows Hizmet Uygulamalarında Hata Nasıl Ayıklanır.

  • Bazı proje türlerinden farklı olarak, hizmet uygulamaları için yükleme bileşenleri oluşturmanız gerekir. Yükleme bileşenleri sunucudaki hizmeti yükleyip kaydeder ve Windows Hizmet Denetim Yöneticisi ile hizmetiniz için bir girdi oluşturur. Daha fazla bilgi için bkz. Hizmet Uygulamanıza Yükleyicileri Nasıl Eklersiniz.

  • Hizmet uygulamanız için Main yöntemi projenizin içerdiği hizmetler için Çalıştır komutunu vermelidir. Run yöntemi hizmetleri uygun sunucu üzerinden Hizmet Denetim Yöneticisi içine yükler. Windows Hizmetleri proje şablonunu kullanıyorsanız bu yöntem sizin için otomatik olarak yazılır. Hizmet yüklemenin hizmet başlatmayla aynı şey olmadığını unutmayın. Daha fazla bilgi için aşağıdaki "Hizmet Ömrü" bilgisine bakınız.

  • Windows Service uygulamaları oturum açmış durumda olan kullanıcıların etkileşimli istasyonundan farklı bir iş istasyonunda çalışır. Pencere istasyonu; bir Pano, genel atomlar kümesi ve bir masaüstü nesne grubu içeren güvenli bir nesnedir. Windows hizmetinin istasyonu etkileşimli bir istasyon olmadığı için, bir Windows hizmet uygulamasından yükseltilen iletişim kutuları görülmeyecektir ve programınızın yanıt vermeyi durdurmasına neden olabilir. Benzer şekilde, hata iletileri kullanıcı arabiriminde oluşturulmak yerine Windows olay günlüğüne kaydedilmelidir.

    .NET Framework tarafından desteklenen Windows hizmet sınıfları etkileşimli kanallarla etkileşimi, ki bu oturum açan kullanıcıdır; desteklemez. .NET Framework aynı zamanda istasyonları ve masaüstlerini temsil eden sınıfları içermez. Windows hizmetinizin diğer istasyonlar ile etkileşmesi şartsa, yönetilmeyen Windows API'sine erişmeniz gerekir. Daha fazla bilgi için, Platform SDK belgelerine bakın.

    Windows hizmetinin kullanıcı ya da diğer istasyonlar ile etkileşimi, oturum açmış hiçbir kullanıcı bulunmaması ya da kullanıcının beklenmedik bir masaüstü nesne kümesi olması gibi senaryoları içerecek şekilde dikkatlice tasarlanması gerekir. Bazı durumlarda, kullanıcı denetimi altında çalışan bir Windows uygulaması yazmak daha uygun olabilir.

  • Windows hizmet uygulamaları kendi güvenlik bağlamlarında çalışır ve kullanıcılar bu uygulamaların yüklü olduğu Windows bilgisayarında oturum açmadan önce başlatılır. Hangi kullanıcı hesabının hangi hizmet içinde çalışacağını dikkatlice planlamanız gerekir; system hesabı altında çalışan bir hizmetin kullanıcı hesabına göre daha fazla izinleri ve ayrıcalıkları vardır.

Hizmet Ömrü

Hizmet, ömrü süresince birçok dahili durumdan geçer. Önce, hizmet üzerinde çalışacağı sisteme yüklenir. Bu işlem hizmet projesi için yükleyicileri çalıştırır ve o bilgisayarın Services Control Manager öğesine hizmeti yükler. Hizmet Denetim Yöneticisi öğesi Windows tarafından yönetme hizmetlerine sağlanan merkezi hizmet programıdır.

Hizmet yüklendikten sonra, başlatılmalıdır. Hizmetin başlatılması, çalışmasını sağlar. Bir hizmeti Hizmet Denetim Yöneticisi'nden Sunucu Gezgini'inden ya da Start yöntemini çağırarak koddan başlatabilirsiniz. Start yöntemi uygulamanın OnStart yöntemine işleme geçirir ve orada tanımladığınız tüm kodları işler.

Çalışan bir hizmet, durdurulana veya bekletmeye alınana kadar ya da bilgisayar kapatılana dek süresiz olarak bu durumda kalabilir. Bir hizmet üç temel durumdan birinde bulunabilir: Running, Paused veya Stopped. Hizmet aynı zamanda bekleyen bir komut durumunu bildirir: ContinuePending, PausePending, StartPending, veya StopPending. Bu durumlar, çalıştırılan bir hizmeti duraklatma komutu gibi bir komut verildiğini, ancak henüz uygulanmadığını gösterir. Bir hizmetin içinde bulunduğu durumu belirlemek için Status sorgulaması yapabilir veya bu durumların herhangi biri oluştuğunda bir eylem gerçekleştirmek için WaitForStatus uygulamasını kullanabilirsiniz.

Hizmetler Denetim Yöneticisi'den Sunucu Gezgini'nden veya koddaki yöntemleri çağırarak bir hizmet duraklatabilir, durdurabilir veya sürdürebilirsiniz. Bu eylemlerden her biri, hizmet içinde, hizmet durum değiştirdiğinde gerçekleştirilecek ilave işlemi tanımlayabileceğiniz, bir ilişkili yordam çağırabilir(OnStop, OnPause veya OnContinue).

Hizmet Türleri

Net Framework uygulamasını kullanarak Visual Studio öğesinde oluşturabileceğiniz iki tür hizmet var. Bir işlemdeki tek hizmet olan hizmetlere Win32OwnProcess türü atanmıştır. Bir işlemi diğer bir hizmetle paylaşan hizmetlere Win32ShareProcess türü atanmıştır. ServiceType özelliğini sorgulayarak hizmet türünü alabilirsiniz.

Visual Studio'da oluşturulmamış hizmetleri sorgularsanız, diğer hizmet türlerini görebilirsiniz. Bunlar hakkında daha fazla bilgi için bkz. ServiceType.

Hizmetler ve ServiceController Bileşeni

ServiceController bileşeni yüklenen bir hizmete bağlanmak ve durumunu değiştirmek için kullanılır;ServiceController bileşenini kullanarak bir hizmeti başlatıp durdurabilir, çalışmasını duraklatabilir, devam ettirebilir ve bir hizmete özel komutlar gönderebilirsiniz. Ancak, bir hizmet uygulaması oluşturduğunuzda bir ServiceController bileşeni kullanmanız gerekmez. Çoğu durumda, ServiceController bileşeni hizmetinizi tanımlayan Windows hizmet uygulamasından farklı bir uygulamada bulunmalıdır.

Daha fazla bilgi için bkz. ServiceController.

Hizmetleri Dağıtma ve Yükleme

Visual Studio, hizmet uygulamalarınızla ilişkilendirilmiş kaynakları yükleyebilen bileşenler getirir. Yükleme bileşenleri, yüklendikleri sisteme bireysel bir hizmet kaydı yapar ve Hizmet Denetim Yöneticisi'ne hizmetin var olduğu konusunda bilgi verir.

Uygulamanıza yükleyicileri ekledikten sonra, sonraki adım derlenmiş proje dosyalarını yükleyip hizmetinizi yüklemek açısından gereken yükleyicileri çalıştıracak bir kurulum projesi oluşturmaktır. Tam bir kurulum projesi oluşturmak için hizmet projesinin çıktısını kurulum projesine eklemeniz ve sonra hizmetinizin yüklenmesi için özelleştirilmiş bir eylem eklemeniz gerekir. Kurulum projeleri hakkında daha fazla bilgi için bkz. Kurulum ve Dağıtım Projeleri. Özel eylemler hakkında daha fazla bilgi için, bkz. İzlenecek Yol: Özel Eylem Oluşturma.

Gereksinimler

  • Hizmetler, Windows Hizmet uygulama projesi veya ServiceBase sınıfından üretildiğinde veya devralındığında .exe dosyası oluşturan diğer bir.NET Framework kullanan proje içinde oluşturulmalıdır.

  • Windows hizmetleri içeren projeler, proje ve hizmetleri için yükleme bileşenlerine sahip olmalıdır. Bu kolaylıkla Özellikler penceresinden gerçekleştirilebilir. Daha fazla bilgi için bkz. Hizmet Uygulamanıza Yükleyicileri Nasıl Eklersiniz.

Ayrıca bkz.

Görevler

Windows Hizmetleri Nasıl Oluşturulur

Hizmetler Nasıl Yüklenir ve Kaldırılır

Hizmetler Nasıl Başlatılır

Windows Hizmet Uygulamalarında Hata Nasıl Ayıklanır

İzlenecek yol: Bileşen Tasarımcısında Bir Windows Hizmet Uygulaması Oluşturmak

Hizmet Uygulamanıza Yükleyicileri Nasıl Eklersiniz

İzlenecek Yol: Özel Eylem Oluşturma

Kavramlar

Hizmet Uygulaması Programlama Mimarisi

Kurulum ve Dağıtım Projeleri

Diğer Kaynaklar

Windows Service Uygulamaları