Arsitektur Pemrograman Aplikasi Layanan

Nota

Artikel ini tidak berlaku untuk layanan yang dihosting di .NET. Untuk konten terbaru tentang layanan Windows menggunakan Microsoft.Extensions.Hosting.BackgroundService dan templat Layanan Pekerja, lihat:

Aplikasi Layanan Windows didasarkan pada kelas yang mewarisi dari kelas System.ServiceProcess.ServiceBase. Anda harus mengesampingkan metode dari kelas ini dan mendefinisikan fungsionalitasnya untuk menentukan bagaimana layanan Anda berperilaku.

Kelas utama yang terlibat dalam pembuatan layanan adalah:

Selain itu, kelas bernama ServiceController dapat digunakan untuk memanipulasi layanan itu sendiri. Kelas ini tidak terlibat dalam pembuatan layanan, tetapi dapat digunakan untuk memulai dan menghentikan layanan, meneruskan perintah ke layanan tersebut, dan mengembalikan serangkaian enumerasi.

Menentukan Perilaku Layanan Anda

Di kelas layanan, Anda mengambil alih fungsi kelas dasar yang menentukan apa yang terjadi ketika status layanan Anda diubah di Pengelola Kontrol Layanan. Kelas ServiceBase mengekspos metode berikut, yang dapat Anda ambil alih untuk menambahkan perilaku kustom.

Metode Mengesampingkan ke
OnStart Tunjukkan tindakan apa yang harus diambil saat layanan Anda mulai berjalan. Anda harus menulis kode dalam prosedur ini agar layanan Anda dapat melakukan pekerjaan yang berguna.
OnPause Tunjukkan apa yang harus terjadi saat layanan Anda dijeda.
OnStop Tunjukkan apa yang harus terjadi ketika layanan Anda berhenti berjalan.
OnContinue Tunjukkan apa yang harus terjadi saat layanan Anda melanjutkan fungsi normal setelah dijeda.
OnShutdown Tunjukkan apa yang harus terjadi tepat sebelum sistem Anda dimatikan, jika layanan Anda berjalan pada saat itu.
OnCustomCommand Tunjukkan apa yang harus terjadi saat layanan Anda menerima perintah kustom. Untuk informasi selengkapnya tentang perintah kustom, lihat MSDN online.
OnPowerEvent Tunjukkan bagaimana layanan harus merespons ketika peristiwa manajemen daya diterima, seperti baterai rendah atau operasi yang ditangguhkan.

Nota

Metode ini mewakili bahwa layanan bergerak dalam masa pakainya; layanan beralih dari satu status ke status berikutnya. Misalnya, Anda tidak akan pernah mendapatkan layanan untuk merespon perintah OnContinue sebelum OnStart telah dipanggil.

Ada beberapa properti dan metode lain yang menarik. Ini termasuk:

  • Metode Run pada kelas ServiceBase. Ini adalah titik masuk utama untuk layanan. Saat Anda membuat layanan menggunakan templat Layanan Windows, kode disisipkan dalam metode aplikasi Main Anda untuk menjalankan layanan. Kode ini terlihat seperti ini:

    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)
    

    Nota

    Contoh-contoh ini menggunakan array jenis ServiceBase, di mana setiap layanan yang dikandung aplikasi Anda dapat ditambahkan, dan kemudian semua layanan dapat dijalankan bersama-sama. Namun, jika Anda hanya membuat satu layanan, Anda dapat memilih untuk tidak menggunakan array dan hanya mendeklarasikan objek baru yang mewarisi dari ServiceBase lalu menjalankannya. Misalnya, lihat Cara: Menulis Layanan Secara Terprogram.

  • Serangkaian properti pada kelas ServiceBase. Ini menentukan metode apa yang dapat dipanggil pada layanan Anda. Misalnya, saat properti CanStop diatur ke true, metode OnStop pada layanan Anda dapat dipanggil. Ketika properti CanPauseAndContinue diatur ke true, metode OnPause dan OnContinue dapat dipanggil. Ketika Anda mengatur salah satu properti ini ke true, Anda kemudian harus mengganti dan mengatur pemrosesan untuk metode terkait.

    Nota

    Layanan Anda harus mengganti setidaknya OnStart dan OnStop agar berguna.

Anda juga dapat menggunakan komponen yang ServiceController disebut untuk berkomunikasi dengan dan mengontrol perilaku layanan yang ada.

Lihat juga