Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
Layanan Microsoft Windows, yang sebelumnya dikenal sebagai layanan NT, memungkinkan Anda membuat aplikasi yang dapat dieksekusi jangka panjang yang berjalan di sesi Windows mereka sendiri. Layanan ini dapat dimulai secara otomatis ketika komputer boot, dapat dijeda dan dimulai ulang, dan tidak menampilkan antarmuka pengguna apa pun. Fitur-fitur ini membuat layanan ideal untuk digunakan di server atau kapan pun Anda memerlukan fungsionalitas jangka panjang yang tidak mengganggu pengguna lain yang bekerja di komputer yang sama. Anda juga dapat menjalankan layanan dalam konteks keamanan akun pengguna tertentu yang berbeda dari pengguna yang masuk atau akun komputer default. Untuk informasi selengkapnya tentang layanan dan sesi Windows, lihat dokumentasi Windows SDK.
Anda dapat dengan mudah membuat layanan dengan membuat aplikasi yang diinstal sebagai layanan. Misalnya, Anda ingin memantau data penghitung kinerja dan bereaksi terhadap nilai ambang batas. Anda dapat menulis aplikasi Layanan Windows yang mendengarkan data penghitung kinerja, menyebarkan aplikasi, dan mulai mengumpulkan dan menganalisis data.
Anda membuat layanan sebagai proyek Microsoft Visual Studio, menentukan kode di dalamnya yang mengontrol perintah apa yang dapat dikirim ke layanan dan tindakan apa yang harus diambil saat perintah tersebut diterima. Perintah yang dapat dikirim ke layanan termasuk memulai, menjeda, memulai kembali, dan menghentikan layanan; Anda juga dapat menjalankan perintah kustom.
Setelah membuat dan membangun aplikasi, Anda dapat menginstalnya dengan menjalankan utilitas baris perintah InstallUtil.exe dan meneruskan jalur ke file yang dapat dieksekusi layanan. Anda kemudian dapat menggunakan Pengelola Kontrol Layanan untuk memulai, menghentikan, menjeda, melanjutkan, dan mengonfigurasi layanan Anda. Anda juga dapat menyelesaikan banyak tugas yang sama ini di node Layanan di Server Explorer atau dengan menggunakan ServiceController kelas .
Aplikasi Layanan vs. Aplikasi Visual Studio Lainnya
Aplikasi layanan berfungsi secara berbeda dari banyak jenis proyek lainnya dalam beberapa cara:
File yang dapat dikompilasi yang dapat dieksekusi yang dibuat proyek aplikasi layanan harus diinstal di server sebelum proyek dapat berfungsi dengan cara yang bermakna. Anda tidak dapat men-debug atau menjalankan aplikasi layanan dengan menekan F5 atau F11; Anda tidak dapat segera menjalankan layanan atau melangkah ke kodenya. Sebagai gantinya, Anda harus menginstal dan memulai layanan Anda, lalu melampirkan debugger ke proses layanan. Untuk informasi selengkapnya, lihat Cara: Men-debug Aplikasi Layanan Windows.
Tidak seperti beberapa jenis proyek, Anda harus membuat komponen penginstalan untuk aplikasi layanan. Komponen penginstalan menginstal dan mendaftarkan layanan di server dan membuat entri untuk layanan Anda dengan Pengelola Kontrol Layanan Windows. Untuk informasi selengkapnya, lihat Cara: Menambahkan Penginstal ke Aplikasi Layanan Anda.
Metode
Main
untuk aplikasi layanan Anda harus mengeluarkan perintah Jalankan untuk layanan yang dikandung proyek Anda. MetodeRun
memuat layanan ke Pengelola Kontrol Layanan di server yang sesuai. Jika Anda menggunakan templat proyek Windows Services , metode ini ditulis untuk Anda secara otomatis. Perhatikan bahwa memuat layanan bukan hal yang sama dengan memulai layanan. Lihat "Masa Pakai Layanan" di bawah ini untuk informasi selengkapnya.Aplikasi Layanan Windows berjalan di stasiun jendela yang berbeda dari stasiun interaktif pengguna yang masuk. Stasiun jendela adalah objek aman yang berisi Clipboard, sekumpulan atom global, dan sekelompok objek desktop. Karena stasiun layanan Windows bukan stasiun interaktif, kotak dialog yang dinaikkan dari dalam aplikasi layanan Windows tidak akan terlihat dan dapat menyebabkan program Anda berhenti merespons. Demikian pula, pesan kesalahan harus dicatat di log peristiwa Windows daripada dinaikkan di antarmuka pengguna.
Kelas layanan Windows yang didukung oleh .NET Framework tidak mendukung interaksi dengan stasiun interaktif, yaitu pengguna yang masuk. .NET Framework juga tidak menyertakan kelas yang mewakili stasiun dan desktop. Jika layanan Windows Anda harus berinteraksi dengan stasiun lain, Anda harus mengakses WINDOWS API yang tidak dikelola. Untuk informasi selengkapnya, lihat dokumentasi Windows SDK.
Interaksi layanan Windows dengan pengguna atau stasiun lain harus dirancang dengan hati-hati untuk menyertakan skenario seperti tidak ada pengguna yang masuk, atau pengguna yang memiliki sekumpulan objek desktop yang tidak terduga. Dalam beberapa kasus, mungkin lebih tepat untuk menulis aplikasi Windows yang berjalan di bawah kendali pengguna.
Aplikasi layanan Windows berjalan dalam konteks keamanan mereka sendiri dan dimulai sebelum pengguna masuk ke komputer Windows tempat mereka diinstal. Anda harus merencanakan dengan cermat akun pengguna apa yang akan menjalankan layanan di dalamnya; layanan yang berjalan di bawah akun sistem memiliki lebih banyak izin dan hak istimewa daripada akun pengguna.
Masa Pakai Layanan
Layanan melewati beberapa status internal selama masa pakainya. Pertama, layanan diinstal ke sistem tempat layanan akan berjalan. Proses ini menjalankan alat penginstal untuk proyek layanan dan memuat layanan ke Dalam Pengelola Kontrol Layanan untuk komputer tersebut. Services Control Manager adalah utilitas pusat yang disediakan oleh Windows untuk mengelola layanan.
Setelah layanan dimuat, harus langsung dimulai. Memulai layanan memungkinkannya untuk mulai berfungsi. Anda dapat memulai layanan dari Pengelola Kontrol Layanan, dari Server Explorer, atau dari kode dengan memanggil Start metode . Metode ini Start meneruskan pemrosesan ke metode aplikasi OnStart dan memproses kode apa pun yang telah Anda tentukan di sana.
Layanan yang sedang berjalan dapat ada dalam status ini tanpa batas waktu hingga dihentikan atau dijeda atau sampai komputer dimatikan. Layanan dapat ada di salah satu dari tiga status dasar: Running, , Pausedatau Stopped. Layanan ini juga dapat melaporkan status perintah yang tertunda: ContinuePending, , PausePendingStartPending, atau StopPending. Status ini menunjukkan bahwa perintah telah dikeluarkan, seperti perintah untuk menjeda layanan yang sedang berjalan, tetapi belum dilakukan. Anda dapat mengkueri Status untuk menentukan status layanan, atau menggunakan WaitForStatus untuk melakukan tindakan saat salah satu status ini terjadi.
Anda dapat menjeda, menghentikan, atau melanjutkan layanan dari Pengelola Kontrol Layanan, dari Server Explorer, atau dengan memanggil metode dalam kode. Masing-masing tindakan ini dapat memanggil prosedur terkait dalam layanan (OnStop, , OnPauseatau OnContinue), di mana Anda dapat menentukan pemrosesan tambahan yang akan dilakukan ketika layanan berubah status.
Jenis Layanan
Ada dua jenis layanan yang dapat Anda buat di Visual Studio menggunakan .NET Framework. Layanan yang merupakan satu-satunya layanan dalam proses diberi jenis Win32OwnProcess. Layanan yang berbagi proses dengan layanan lain diberi jenis Win32ShareProcess. Anda dapat memperoleh jenis layanan dengan melakukan kueri pada properti ServiceType.
Terkadang Anda mungkin melihat jenis layanan lain jika Anda mengkueri layanan yang sudah ada yang tidak dibuat di Visual Studio. Untuk informasi selengkapnya tentang ini, lihat ServiceType.
Layanan dan Komponen ServiceController
Komponen ServiceController ini digunakan untuk terhubung ke layanan yang diinstal dan memanipulasi statusnya; menggunakan ServiceController komponen, Anda dapat memulai dan menghentikan layanan, menjeda dan melanjutkan fungsinya, dan mengirim perintah kustom ke layanan. Namun, Anda tidak perlu menggunakan ServiceController komponen saat membuat aplikasi layanan. Bahkan, dalam kebanyakan kasus, komponen Anda ServiceController harus ada dalam aplikasi terpisah dari aplikasi layanan Windows yang menentukan layanan Anda.
Untuk informasi selengkapnya, lihat ServiceController .
Persyaratan
Layanan harus dibuat dalam proyek aplikasi Layanan Windows atau proyek lain yang mendukung .NET Framework yang membuat file .exe saat dibangun dan diwarisi dari kelas ServiceBase.
Proyek yang berisi layanan Windows harus memiliki komponen penginstalan untuk proyek dan layanannya. Ini dapat dengan mudah dicapai dari jendela Properti . Untuk informasi selengkapnya, lihat Cara: Menambahkan Penginstal ke Aplikasi Layanan Anda.
Lihat juga
- Aplikasi Layanan Windows
- Arsitektur Pemrograman Aplikasi Layanan
- Cara: Membuat Layanan Windows
- Cara: Menginstal dan Menghapus Instalan Layanan
- Cara: Memulai Layanan
- Cara: Men-debug Aplikasi Layanan Windows
- Panduan: Membuat Aplikasi Layanan Windows di Perancang Komponen
- Cara: Menambahkan Penginstal ke Aplikasi Layanan Anda