Aracılığıyla paylaş


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:

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 trueOnStop ayarlandığında hizmetinizdeki yöntemi çağrılabilir. CanPauseAndContinue özelliği olarak trueOnPause ayarlandığında ve OnContinue yöntemleri çağrılabilir. Bu özelliklerden birini olarak trueayarladığınızda, ilişkili yöntemler için işlemeyi geçersiz kılmanız ve tanımlamanız gerekir.

    Not

    Hizmetinizin en azından OnStart ve OnStop yararlı olması için geçersiz kılması 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.