Windows Hizmet Uygulamalarına Giriş
Uyarı
Bu belge, Windows hizmetinin en son sürümü için değildir. Kullanarak Windows Hizmetleri için en son içerik BackgroundService ve çalışan hizmeti şablonu için bkz:
Eski Windows NT hizmetleri olarak bilinen Microsoft Windows hizmetleri, kendi çalışma oturumlarında çalışan uzun süre çalışan yürütülebilir uygulamalar Windows sağlar. Bu hizmetler, bilgisayar başlatıldığında otomatik olarak başlatılmış, duraklatılmış ve yeniden başlatılmış olabilir ve herhangi bir kullanıcı arabirimi göstermez. Bu özellikler, hizmetleri bir sunucuda kullanım için ideal hale veya aynı bilgisayarda çalışan diğer kullanıcılara müdahale etmeyen uzun süre çalışan işlevlere ihtiyacınız olduğunda yapar. Ayrıca, hizmetleri oturum açmış 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 oturumlar hakkında daha fazla Windows sdk belgelerine Windows bakın.
Hizmet olarak yüklenmiş bir uygulama oluşturarak hizmetleri kolayca oluşturabilirsiniz. Örneğin performans sayacı verilerini izlemek ve eşik değerlerine tepki vermek istediğinizi varsayalım. Performans sayacı verilerini dinleyen, uygulamayı dağıtan ve verileri toplayıp analiz etmeye başlayan bir Windows Service uygulaması yazabilirsiniz.
Hizmetinizi bir Microsoft Visual Studio projesi olarak oluşturabilir, hizmete hangi komutların gönderllr ve bu komutlar alınırken hangi eylemlerin gerçekleştir gerektiğini kontrol eden kodu tanımlarsınız. Bir hizmete gönderilen komutlar arasında hizmeti başlatma, duraklatma, devam başlatma ve durdurma yer almaktadır; Özel komutlar da yürütebilirsiniz.
Uygulamayı oluşturduk ve oluşturduk sonra, komut satırı yardımcı programını çalıştırarak ve InstallUtil.exe hizmetin yürütülebilir dosyasına geçerek yükleyebilirsiniz. Ardından Hizmet Denetimi Yöneticisi'ni kullanarak hizmetinizi başlatabilir, durdurabilir, duraklatabilir, sürdürabilir ve yapılandırabilirsiniz. Ayrıca, aynı görevlerin çoğunu hizmet hizmet düğümünde Sunucu Gezgini sınıfını kullanarak da ServiceController gerçekleştirebilirsiniz.
Hizmet Uygulamaları ve Diğer Visual Studio Uygulamaları
Hizmet uygulamaları birçok farklı şekilde diğer proje türlerinden farklı çalışır:
Bir hizmet uygulaması projesinin oluşturduğu derlenmiş yürütülebilir dosya, projenin anlamlı bir şekilde çalışması için önce sunucuda yüklü olması gerekir. F5 veya F11 tuşuna basarak hizmet uygulamasında hata ayıkamaz veya çalıştıramaz; bir hizmeti hemen çalıştıramaz veya koduna adım atamazsiniz. Bunun yerine, hizmetinizi yükp başlatmanız ve ardından hizmetin sürecine bir hata ayıklayıcı eklemeniz gerekir. Daha fazla bilgi için, bkz. How to: Debug Windows Service Applications.
Bazı proje türlerinden farklı olarak, hizmet uygulamaları için yükleme bileşenleri oluşturmanız gerekir. Yükleme bileşenleri, hizmeti sunucuya yükp kaydettirin ve Windows Services Control Manager ile hizmetiniz için bir giriş oluşturun. Daha fazla bilgi için, bkz. How to: Add Installers to Your Service Application.
Hizmet
Mainuygulamanıza ilişkin yöntemin, projenizin içerdiği hizmetler için Çalıştır komutunu çalıştırması gerekir. yöntemi,Runhizmetleri uygun sunucu üzerinde Hizmetler Denetim Yöneticisi'ne yükler. Windows Services proje şablonunu kullanırsanız, bu yöntem sizin için otomatik olarak yazılır. Bir hizmeti yüklemenin, hizmeti başlatmayla aynı şey olmadığını unutmayın. Daha fazla bilgi için aşağıdaki "Hizmet Ömrü"ne bakın.Windows Hizmet uygulamaları, oturum açmış kullanıcının etkileşimli istasyonundan farklı bir pencere istasyonunda kullanılmaktadır. Pencere istasyonu; Pano, genel atom kümesi ve masaüstü nesnesi grubu içeren güvenli bir nesnedir. Windows hizmetinin istasyonu etkileşimli bir istasyon olmadığını için, Windows hizmet uygulamasından alınan iletişim kutuları görülmez ve program yanıt vermede durmaya neden olabilir. Benzer şekilde, hata iletileri kullanıcı arabiriminde Windows olay günlüğünde günlüğe kayded gerekir.
Windows tarafından desteklenen hizmet sınıfları.NET Framework etkileşimli istasyonlarla, yani oturum açmış kullanıcıyla etkileşimi desteklemez. Bu .NET Framework istasyonları ve masaüstlerini temsil eden sınıfları da içermemektedir. Windows hizmetinizin diğer istasyonlarla etkileşim kurması gerekirse, Windows API'sini Windows gerekir. Daha fazla bilgi için bkz. Windows SDK belgeleri.
Windows hizmetinin kullanıcı veya diğer istasyonlarla etkileşimi, oturum açmış kullanıcı veya beklenmeyen bir masaüstü nesnesi kümesine sahip olan kullanıcı gibi senaryoları içerecek şekilde dikkatle tasarlanmalıdır. Bazı durumlarda, kullanıcının denetimi altında çalışan bir Windows uygulama yazmak daha uygun olabilir.
Windows uygulamaları kendi güvenlik bağlamında çalıştırıldı ve kullanıcı yüklendikleri Windows oturum amadan önce başlatıldı. Hizmeti hangi kullanıcı hesabının içinde çalıştıracaklarını dikkatle planlamanız gerekir; Sistem hesabı altında çalışan bir hizmet, kullanıcı hesabından daha fazla izin ve ayrıcalığı vardır.
Hizmet Ömrü
Bir hizmet, yaşam süresinde çeşitli iç durumları geçen bir hizmettir. İlk olarak, hizmet üzerinde çalıştıracak sisteme yüklenir. Bu işlem, hizmet projesi için yükleyicileri yürütür ve hizmeti o bilgisayar için Hizmetler Denetim Yöneticisi'ne yükler. Hizmet Denetimi Yöneticisi, hizmetleri yönetmek için Windows merkezi yardımcı programdır.
Hizmet yüklendikten sonra başlat gerekir. Hizmetin başlaması, hizmetin çalışmasına olanak sağlar. Bir hizmeti Hizmetler Denetim Yöneticisi'nde, Sunucu Gezgini'dan veya yöntemini çağırarak koddan Start başlatabilirsiniz. yöntemi, Start işlemi uygulamanın yöntemine OnStart iletir ve orada tanımlandığı tüm kodu da işler.
Çalışan bir hizmet durdurulana veya duraklatana veya bilgisayar kapatana kadar bu durumda süresiz olarak var olabilir. Bir hizmet üç temel iki farklı şekilde mevcut olabilir: Running , Paused veya Stopped . Hizmet ayrıca bekleyen komutun durumunu da bildirebilirsiniz: ContinuePending , PausePending , veya StartPending StopPending . Bu durum, çalışan bir hizmeti duraklatma komutu gibi bir komutun verildiğini, ancak henüz gerçekleştirile olmadığını gösterir. Bir hizmetin hangi durumda olduğunu belirlemek için sorgu kullanabilir veya bu durumlardan herhangi biri oluştuğunda bir eylem Status WaitForStatus yapmak için kullanabilirsiniz.
Hizmet Denetim Yöneticisi'nde, hizmetten veya kodda yöntemleri çağırarak Sunucu Gezgini duraklatabilir, durdurabilir veya sürdürebilirsiniz. Bu eylemlerin her biri hizmette ( , veya ) ilişkili bir yordam çağırarak hizmet durumu değişirken gerçekleştirilecek ek OnStop OnPause işlemleri OnContinue tanımlayabilirsiniz.
Hizmet Türleri
Bu hizmetlerde, Visual Studio kullanarak .NET Framework. Bir işlemde tek hizmet olan hizmetlere türü Win32OwnProcess atanır. Başka bir hizmetle işlem paylaşımında olan hizmetlere türü Win32ShareProcess atanır. özelliğini sorgulaarak hizmet türünü ServiceType alın.
Bu hizmetlerde oluşturulmaan mevcut hizmetleri sorgularsanız bazen diğer hizmet türlerini Visual Studio. Bunlar hakkında daha fazla bilgi için bkz. ServiceType .
Hizmetler ve ServiceController Bileşeni
Bileşen, yüklü bir hizmete bağlanmak ve durumunu işlemek için kullanılır; bir bileşeni kullanarak bir hizmeti başlatabilir ve durdurabilir, hizmetini duraklatabilir ve çalışmaya devam eder ve bir hizmete özel ServiceController ServiceController komutlar gönderebilirsiniz. Ancak, bir hizmet uygulaması ServiceController oluşturmak için bir bileşen kullanmak zorunda değildir. Aslında çoğu durumda bileşeniniz, hizmetinizi tanımlayan Windows ServiceController ayrı bir uygulamada yer aladır.
Daha fazla bilgi için bkz. ServiceController.
Gereksinimler
Hizmetler, Windows Service uygulama projesinde veya .NET Framework etkinleştirildiğinde bir .exe dosyası oluşturan ve sınıfından devralan başka bir .exe projesinde ServiceBase oluşturul olmalıdır.
Proje ve Windows içeren projelerin proje ve hizmetleri için yükleme bileşenlerine sahip olması gerekir. Bu, Özellikler penceresinden kolayca gerçek olabilir. Daha fazla bilgi için, bkz. How to: Add Installers to Your Service Application.
Ayrıca bkz.
- Windows Hizmeti Uygulamaları
- Hizmet Uygulaması Programlama Mimarisi
- Nasıl yapılır: Windows Hizmetleri Oluşturma
- Nasıl yapılır: Hizmetleri Yükleme ve Kaldırma
- Nasıl yapılır: Hizmetleri Başlatma
- Nasıl yapılır: Windows Hizmet Uygulamalarında Hata Ayıklama
- İzlenecek Yol: Bileşen Tasarımcısında Windows Hizmeti Uygulaması Oluşturma
- Nasıl yapılır: Hizmet Uygulamasına Yükleyiciler Ekleme