Mengembangkan dan menyebarkan WebJobs menggunakan Visual Studio
Artikel ini menjelaskan cara menggunakan Visual Studio untuk menyebarkan proyek aplikasi konsol ke aplikasi web di Azure App Service sebagai Azure WebJob. Untuk informasi tentang cara menyebarkan WebJobs dengan menggunakan portal Microsoft Azure, lihat Menjalankan tugas latar belakang dengan WebJobs di Azure App Service.
Anda dapat memilih untuk mengembangkan WebJob yang dijalankan sebagai aplikasi .NET Core atau aplikasi .NET Framework. Azure WebJobs SDK versi 3.x memungkinkan Anda mengembangkan WebJobs yang dijalankan sebagai aplikasi .NET Core atau aplikasi .NET Framework, sedangkan versi 2.x hanya mendukung .NET Framework. Cara Anda menyebarkan proyek WebJobs untuk proyek .NET Core dan proyek .NET Framework berbeda.
Anda dapat menerbitkan beberapa WebJobs ke satu aplikasi web, asalkan setiap WebJob di aplikasi web memiliki nama yang unik.
WebJobs sebagai aplikasi konsol .NET Core
Dengan Azure WebJobs SDK versi 3.x, Anda dapat membuat dan menerbitkan WebJobs sebagai aplikasi konsol .NET Core. Untuk petunjuk langkah demi langkah dalam membuat dan memublikasikan aplikasi konsol .NET Core ke Azure sebagai WebJob, lihat Mulai menggunakan Azure WebJobs SDK untuk pemrosesan latar belakang berbasis peristiwa.
Catatan
.NET Core Web Apps dan/atau .NET Core WebJobs tidak dapat ditautkan dengan proyek web. Jika Anda perlu menggunakan WebJob dengan aplikasi web, buat WebJobs Anda sebagai aplikasi konsol .NET Framework.
Menyebarkan ke Azure App Service
Menerbitkan WebJob .NET Core ke Azure App Service dari Visual Studio menggunakan perkakas yang sama dengan menerbitkan ASP.NET Core.
Di Penjelajah Solusi, klik kanan proyek dan pilih Terbitkan.
Di kotak dialog Terbitkan, pilih Azure untuk Target, lalu pilih Berikutnya.
Pilih Azure WebJobs untuk Target spesifik, lalu pilih Berikutnya.
Di atas instans App Service, pilih tombol plus ( + ) untuk Membuat Azure WebJob baru.
Di kotak dialog Azure App Service (Windows) , gunakan pengaturan hosting dalam tabel berikut.
Pengaturan Nilai yang disarankan Deskripsi Nama Nama unik global Nama yang mengidentifikasi secara unik aplikasi fungsi baru Anda. Langganan Memilih langganan Anda Langganan Azure yang akan digunakan. Grup sumber daya myResourceGroup Nama grup sumber daya tempat membuat aplikasi fungsi Anda. Pilih Baru untuk membuat grup sumber daya baru. Paket Hosting Paket Azure App Service Paket Azure App Service menentukan lokasi, ukuran, dan fitur farm server web yang menghosting aplikasi Anda. Anda dapat menghemat uang saat menghosting beberapa aplikasi dengan mengonfigurasi aplikasi web untuk berbagi satu paket Azure App Service. Paket Azure App Service menentukan wilayah, ukuran instans, jumlah skala, dan SKU (Gratis, Berbagi, Dasar, Standar, atau Premium). Pilih Baru untuk membuat paket Azure App Service baru. Tingkat Gratis dan Dasar tidak mendukung opsi Grup Ketersediaan AlwaysOn untuk menjaga situs Anda berjalan terus-menerus. Pilih Buat untuk membuat WebJob dan sumber daya terkait di Azure dengan pengaturan ini dan menyebarkan kode proyek Anda.
Pilih Selesai untuk kembali ke halaman Terbitkan.
WebJobs sebagai aplikasi konsol .NET Framework
Jika Anda menggunakan Visual Studio untuk menyebarkan proyek aplikasi konsol .NET Framework yang mendukung WebJobs, file runtime akan disalin ke folder yang sesuai di aplikasi web (App_Data/jobs/continuous untuk WebJobs berkelanjutan dan App_Data/jobs/triggered untuk WebJobs terjadwal atau sesuai permintaan).
Visual Studio menambahkan item berikut ke proyek yang mendukung WebJobs:
- Paket NuGet Microsoft.Web.WebJobs.Publish.
- File webjob-publish-settings.json yang berisi pengaturan penyebaran dan penjadwal.
Anda dapat menambahkan item ini ke proyek aplikasi konsol yang sudah ada atau menggunakan template untuk membuat proyek aplikasi konsol baru yang mendukung WebJobs.
Sebarkan proyek sebagai WebJob dengan sendirinya, atau tautkan ke proyek web agar menyebar secara otomatis setiap kali Anda menyebarkan proyek web. Untuk menautkan proyek, Visual Studio menyertakan nama proyek yang mendukung WebJobs dalam file webjobs-list.json di proyek web.
Prasyarat
Instal Visual Studio 2022 dengan beban kerja pengembangan Azure.
Mengaktifkan penyebaran WebJobs untuk proyek aplikasi konsol yang sudah ada
Anda memiliki dua opsi:
Aktifkan penyebaran otomatis dengan proyek web.
Konfigurasikan proyek aplikasi konsol yang ada agar menyebar secara otomatis sebagai WebJob saat Anda menyebarkan proyek web. Gunakan opsi ini jika ingin menjalankan WebJob di aplikasi web yang sama tempat Anda menjalankan aplikasi web terkait.
Aktifkan penyebaran tanpa proyek web.
Konfigurasikan proyek aplikasi konsol yang ada untuk disebarkan sebagai WebJob dengan sendirinya, tanpa tautan ke proyek web. Gunakan opsi ini jika ingin menjalankan WebJob di aplikasi web itu sendiri, tanpa menjalankan aplikasi web di aplikasi web. Sebaiknya Anda melakukannya untuk menskalakan sumber daya WebJob secara independen dari sumber daya aplikasi web Anda.
Mengaktifkan penyebaran WebJobs otomatis dengan proyek web
Klik kanan proyek web di Penjelajah Solusi, lalu pilih Tambahkan>Proyek yang Sudah Ada sebagai Azure WebJob.
Kotak dialog Tambahkan Azure WebJob akan muncul.
Di menu drop-down Nama proyek, pilih proyek aplikasi konsol untuk ditambahkan sebagai WebJob.
Selesaikan kotak dialog Tambahkan Azure WebJob, lalu pilih OK.
Mengaktifkan penyebaran WebJobs tanpa proyek web
Klik kanan proyek aplikasi konsol di Penjelajah Solusi, lalu pilih Terbitkan sebagai Azure WebJob.
Kotak dialog Tambahkan Azure WebJob muncul, dengan proyek dipilih dalam kotak Nama proyek.
Selesaikan kotak dialog Tambahkan Azure WebJob, lalu pilih OK.
Wizard Terbitkan Web muncul. Jika Anda tidak ingin segera menerbitkan, tutup wizard. Pengaturan Anda masukkan disimpan saat Anda ingin menyebarkan proyek.
Membuat proyek baru yang mendukung WebJobs
Untuk membuat proyek baru yang mendukung WebJobs, gunakan template proyek aplikasi konsol dan aktifkan penyebaran WebJobs seperti yang dijelaskan di di bagian sebelumnya. Sebagai alternatif, Anda dapat menggunakan template proyek baru WebJobs:
Menggunakan template proyek baru WebJobs untuk WebJob independen
Buat proyek dan konfigurasikan untuk digunakan dengan sendirinya sebagai WebJob, tanpa tautan ke proyek web. Gunakan opsi ini jika ingin menjalankan WebJob di aplikasi web itu sendiri, tanpa menjalankan aplikasi web di aplikasi web. Sebaiknya Anda melakukannya untuk menskalakan sumber daya WebJob secara independen dari sumber daya aplikasi web Anda.
Menggunakan template proyek baru WebJobs untuk WebJob yang ditautkan ke proyek web
Buat proyek yang dikonfigurasi untuk disebarkan secara otomatis sebagai WebJob saat Anda menyebarkan proyek web dalam solusi yang sama. Gunakan opsi ini jika ingin menjalankan WebJob di aplikasi web yang sama tempat Anda menjalankan aplikasi web terkait.
Catatan
Template proyek baru WebJobs otomatis memasang paket NuGet dan menyertakan kode di Program.cs untuk WebJobs SDK. Jika Anda tidak ingin menggunakan WebJobs SDK, hapus atau ubah pernyataan host.RunAndBlock
di Program.cs.
Menggunakan template proyek baru WebJobs untuk WebJob independen
Pilih File>Proyek>Baru. Dalam kotak dialog Buat proyek baru, cari dan pilih Azure WebJob (.NET Framework) untuk C#.
Ikuti petunjuk sebelumnya untuk membuat proyek aplikasi konsol menjadi proyek WebJobs independen.
Menggunakan template proyek baru WebJobs untuk WebJob yang ditautkan ke proyek web
Klik kanan proyek web di Penjelajah Solusi, lalu pilih Tambahkan>Proyek Azure WebJob Baru.
Kotak dialog Tambahkan Azure WebJob akan muncul.
Selesaikan kotak dialog Tambahkan Azure WebJob, lalu pilih OK.
file webjob-publish-settings.json
Saat Anda mengonfigurasi aplikasi konsol untuk penyebaran WebJobs, Visual Studio akan memasang paket NuGet Microsoft.Web.WebJobs.Publish dan menyimpan informasi penjadwalan di file webjob-publish-settings.json di folder Properti proyek dari proyek WebJobs. Berikut adalah contoh file tersebut:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "WebJob1",
"startTime": "null",
"endTime": "null",
"jobRecurrenceFrequency": "null",
"interval": null,
"runMode": "Continuous"
}
Anda dapat mengedit file ini secara langsung, dan Visual Studio menyediakan IntelliSense. Skema file disimpan di https://schemastore.org dan dapat dilihat di sana.
file webjobs-list.json
Saat Anda menautkan proyek yang mendukung WebJobs ke proyek web, Visual Studio akan menyimpan nama proyek WebJobs di file webjobs-list.json di folder Properti proyek web. Daftar mungkin berisi beberapa proyek WebJobs, seperti yang diperlihatkan dalam contoh berikut:
{
"$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
"WebJobs": [
{
"filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
},
{
"filePath": "../WebJob1/WebJob1.csproj"
}
]
}
Anda dapat mengedit file ini langsung di Visual Studio, dengan IntelliSense. Skema file disimpan di https://schemastore.org.
Menyebarkan proyek WebJobs
Proyek WebJobs yang telah Anda tautkan ke proyek web menyebar secara otomatis dengan proyek web. Untuk informasi tentang penyebaran proyek web, lihat Panduan cara>Menyebarkan aplikasi di navigasi kiri.
Untuk menyebarkan proyek WebJobs dengan sendirinya, klik kanan proyek di Penjelajah Solusi dan pilih Terbitkan sebagai Azure WebJob.
Untuk WebJob independen, wizard Terbitkan Web yang sama yang digunakan untuk proyek web muncul, tetapi dengan lebih sedikit pengaturan yang dapat diubah.
Kotak dialog Tambahkan Azure WebJob
Kotak dialog Tambahkan Azure WebJob memungkinkan Anda memasukkan nama WebJob dan menjalankan pengaturan mode untuk WebJob Anda.
Beberapa bidang di kotak dialog ini sesuai dengan bidang di kotak dialog Tambahkan WebJob portal Microsoft Azure. Untuk informasi selengkapnya, lihat Menjalankan tugas latar belakang dengan WebJobs di Azure App Service.
Informasi penyebaran WebJob:
Untuk informasi tentang penyebaran baris perintah, lihat Mengaktifkan Baris Perintah atau Pengiriman Berkelanjutan Azure WebJobs.
Jika Anda menyebarkan WebJob, lalu memutuskan ingin mengubah jenis WebJob dan menyebarkan ulang, hapus file webjobs-publish-settings.json. Melakukannya menyebabkan Visual Studio menampilkan ulang opsi penerbitan, sehingga Anda dapat mengubah jenis WebJob.
Jika Anda menyebarkan WebJob dan kemudian mengubah mode eksekusi dari berkelanjutan ke tak berkelanjutan atau sebaliknya, Visual Studio akan membuat WebJob baru di Azure saat Anda melakukan penyebaran ulang. Jika Anda mengubah pengaturan penjadwalan lainnya, tetapi membiarkan mode eksekusi sama atau beralih antara Terjadwal dan Sesuai Permintaan, Visual Studio akan memperbarui tugas yang ada, bukan membuat tugas baru.
Jenis WebJob
Jenis WebJob bisa dipicu atau berkelanjutan:
Dipicu (default): WebJob yang dipicu dimulai berdasarkan peristiwa yang pengikatan, sesuai jadwal, atau saat Anda memicunya secara manual (sesuai permintaan). Ini dijalankan di satu instans tempat aplikasi web dieksekusi.
Berkelanjutan: WebJob berkelanjutan langsung dimulai saat WebJob dibuat. Ini dijalankan di semua instans skala aplikasi web secara default, tetapi dapat dikonfigurasi untuk dijalankan sebagai satu instans melalui settings.job.
Catatan
Sebuah aplikasi web dapat mengalami waktu habis setelah 20 menit tidak aktif, dan hanya permintaan ke aplikasi web yang sebenarnya dapat mengatur ulang timer. Melihat konfigurasi aplikasi di portal Microsoft Azure atau membuat permintaan ke situs alat lanjutan (https://<app_name>.scm.azurewebsites.net
) tidak mengatur ulang timer. Jika Anda menyetel aplikasi web yang meng-host pekerjaan Anda untuk terus berjalan, berjalan sesuai jadwal, atau menggunakan pemicu berdasarkan peristiwa, aktifkan setelan Selalu aktif di laman Konfigurasi Azure aplikasi web Anda. Pengaturan Selalu aktif membantu memastikan bahwa Jenis WebJobs ini berjalan dengan andal. Fitur ini hanya tersedia di tingkat harga Dasar, Standar, dan Premium.
Menjadwalkan WebJob yang dipicu
Saat Anda menerbitkan aplikasi konsol ke Azure, Visual Studio mengatur jenis WebJob ke Dipicu secara default, dan menambahkan file settings.job baru ke proyek. Untuk jenis WebJob yang dipicu, Anda dapat menggunakan file ini untuk mengatur jadwal eksekusi WebJob Anda.
Gunakan file settings.job untuk mengatur jadwal eksekusi WebJob Anda. Contoh berikut dijalankan setiap jam dari pukul 09.00 hingga 17.00:
{
"schedule": "0 0 9-17 * * *"
}
File ini berada di akar folder WebJobs dengan skrip WebJob Anda, seperti wwwroot\app_data\jobs\triggered\{job name}
atau wwwroot\app_data\jobs\continuous\{job name}
. Saat Anda menyebarkan WebJob dari Visual Studio, tandai properti file settings.job di Visual Studio sebagai Salin jika lebih baru.
Jika Anda membuat WebJob dari portal Microsoft Azure,file settings.job dibuat untuk Anda.
Ekspresi CRON
WebJobs menggunakan ekspresi CRON yang sama untuk penjadwalan sebagai pemicu timer di Azure Functions. Untuk mempelajari dukungan CRON lebih lanjut, lihat Pemicu ttimer untuk Azure Functions.
Catatan
Zona waktu default yang digunakan untuk menjalankan ekspresi CRON adalah Waktu Universal Terkoordinasi (UTC). Agar ekspresi CRON Anda berjalan berdasarkan zona waktu lain, buat setelan aplikasi untuk aplikasi fungsi Anda yang bernama WEBSITE_TIME_ZONE. Untuk mempelajari lebih lanjut, lihat Zona waktu NCRONTAB.
Referensi settings.job
Pengaturan berikut ini didukung oleh WebJobs:
Pengaturan | Jenis | Deskripsi |
---|---|---|
is_in_place |
Semua | Memungkinkan WebJob berjalan tanpa disalin terlebih dahulu ke folder sementara. Untuk informasi selengkapnya, lihat Direktori kerja WebJob. |
is_singleton |
Berkelanjutan | Hanya menjalankan WebJob di satu instans saat skalanya diperluas. Untuk informasi selengkapnya, lihat Mengatur pekerjaan berkelanjutan sebagai database tunggal. |
schedule |
Dipicu | Menjalankan WebJob sesuai jadwal berbasis CRON. Untuk informasi selengkapnya, lihat ekspresi NCRONTAB. |
stopping_wait_time |
Semua | Memungkinkan kontrol perilaku penonaktifan. Untuk informasi selengkapnya, lihat Penonaktifan lancar. |
Eksekusi berkelanjutan
Jika mengaktifkan Selalu aktif di Azure, Anda dapat menggunakan Visual Studio untuk mengubah WebJob agar berjalan terus menerus:
Jika Anda belum melakukannya, terbitkan proyek ke Azure.
Di Penjelajah Solusi, klik kanan proyek dan pilih Terbitkan.
Di bagian Pengaturan, pilih Tampilkan semua pengaturan.
Dalam kotak dialog Pengaturan profil, pilih Berkelanjutan untuk Jenis WebJob, lalu pilih Simpan.
Pilih Terbitkan di tab Terbitkan untuk menerbitkan ulang WebJob dengan pengaturan yang diperbarui.