Hizmet Uygulaması Programlama Mimarisi
Not
Bu makale .NET'te barındırılan hizmetler için geçerli değildir. ve Çalışan Hizmeti şablonunu kullanan Microsoft.Extensions.Hosting.BackgroundService Windows hizmetleriyle ilgili en son içerik için bkz:
Windows Hizmeti uygulamaları, sınıfından System.ServiceProcess.ServiceBase devralan bir sınıfı temel alır. Bu sınıftaki yöntemleri geçersiz kılar ve hizmetinizin nasıl davrandığını belirlemek için işlevleri tanımlarsınız.
Hizmet oluşturmayla ilgili ana sınıflar şunlardır:
System.ServiceProcess.ServiceBase — Bir hizmet oluştururken sınıfından ServiceBase yöntemleri geçersiz kılar ve hizmetinizin bu devralınan sınıfta nasıl çalıştığını belirlemek için kodu tanımlarsınız.
System.ServiceProcess.ServiceProcessInstaller ve System.ServiceProcess.ServiceInstaller —Hizmetinizi yüklemek ve kaldırmak için bu sınıfları kullanırsınız.
Ayrıca, adlı ServiceController bir sınıf hizmetin kendisini işlemek için kullanılabilir. Bu sınıf bir hizmetin oluşturulmasına dahil değildir, ancak hizmeti başlatmak ve durdurmak, komutlar geçirmek ve bir dizi numaralandırma döndürmek için kullanılabilir.
Hizmetinizin Davranışını Tanımlama
Hizmet sınıfınızda, Services Control Manager'da hizmetinizin durumu değiştirildiğinde ne olacağını belirleyen temel sınıf işlevlerini geçersiz kılarsınız. sınıfı ServiceBase , özel davranış eklemek için geçersiz kılabileceğiniz aşağıdaki yöntemleri kullanıma sunar.
Metot | Şunun için geçersiz kıl: |
---|---|
OnStart | Hizmetiniz çalışmaya başladığında gerçekleştirilecek eylemleri belirtin. Hizmetinizin yararlı işler yapabilmesi için bu yordamda kod yazmanız gerekir. |
OnPause | Hizmetiniz duraklatıldığında ne olacağını belirtin. |
OnStop | Hizmetiniz çalışmayı durdurduğunda ne olacağını belirtin. |
OnContinue | Hizmetiniz duraklatıldıktan sonra normal çalışmaya devam ettiğinde ne olacağını belirtin. |
OnShutdown | Hizmetiniz o sırada çalışıyorsa, sisteminizin kapanmadan hemen önce ne olacağını belirtin. |
OnCustomCommand | Hizmetiniz özel bir komut aldığında ne olacağını belirtin. Özel komutlar hakkında daha fazla bilgi için bkz. MSDN online. |
OnPowerEvent | Düşük pil veya askıya alınmış işlem gibi bir güç yönetimi olayı alındığında hizmetin nasıl yanıt vermesi gerektiğini belirtin. |
Not
Bu yöntemler, hizmetin yaşam süresi boyunca geçtiği durumları temsil eder; hizmet bir durumdan diğerine geçiş yapılır. Örneğin, daha önce çağrılmadan önce OnStart bir OnContinue komutu yanıtlamak için hizmeti hiçbir zaman alamayacaksınız.
İlgilenen başka birkaç özellik ve yöntem vardır. Bu modüller şunlardır:
Run sınıfındaki ServiceBase yöntemi. Bu, hizmetin ana giriş noktasıdır. Windows Hizmeti şablonunu kullanarak bir hizmet oluşturduğunuzda, hizmeti çalıştırmak için uygulamanızın
Main
yöntemine kod eklenir. Bu kod şuna benzer:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Not
Bu örneklerde, uygulamanızın içerdiği her hizmetin eklenebileceği ve ardından tüm hizmetlerin birlikte çalıştırılabildiği türünde ServiceBasebir dizi kullanılır. Ancak yalnızca tek bir hizmet oluşturuyorsanız, diziyi kullanmamayı seçebilir ve yalnızca öğesinden ServiceBase devralan yeni bir nesne bildirebilir ve ardından çalıştırabilirsiniz. Bir örnek için bkz . Nasıl yapılır: Hizmetleri Program Aracılığıyla Yazma.
sınıfında bir dizi özellik ServiceBase . Bunlar hizmetinizde hangi yöntemlerin çağrılabileceğini belirler. Örneğin, CanStop özelliği olarak
true
OnStop ayarlandığında hizmetinizdeki yöntemi çağrılabilir. CanPauseAndContinue özelliği olaraktrue
OnPause ayarlandığında ve OnContinue yöntemleri çağrılabilir. Bu özelliklerden birini olaraktrue
ayarladığınızda, ilişkili yöntemler için işlemeyi geçersiz kılmanız ve tanımlamanız gerekir.
Ayrıca, mevcut bir hizmetle iletişim kurmak ve bu hizmetin davranışını denetlemek için adlı ServiceController bir bileşeni de kullanabilirsiniz.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin