Aracılığıyla paylaş


Hizmet Uygulaması Programlama Mimarisi

Uyarı

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ı, System.ServiceProcess.ServiceBase sınıfından türeyen bir sınıfa dayanı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.

Yöntem Ş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.

Uyarı

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, OnContinue çağrılmadan önce bir OnStart komutuna hizmetin yanıt vermesini hiçbir zaman sağlayamazsınız.

İlgi çekici başka birkaç özellik ve yöntem vardır. Bunlar şunları içerir:

  • 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)
    

    Uyarı

    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.

  • ServiceBase sınıfında bir dizi özellik. Bunlar hizmetinizde hangi yöntemlerin çağrılabileceğini belirler. Örneğin, CanStop özelliği true olarak ayarlandığında, hizmetinizdeki OnStop yöntemi çağrılabilir. CanPauseAndContinue özelliği true olarak ayarlandığında, OnPause 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.

    Uyarı

    Hizmetinizin yararlı olması için en azından OnStart ve OnStop işlevlerini aşması 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 bakınız