Perbedaan antara model pekerja yang terisolasi dan model dalam proses untuk .NET di Azure Functions
Ada dua model eksekusi untuk fungsi .NET:
Model eksekusi | Deskripsi |
---|---|
Model pekerja terisolasi | Kode fungsi Anda berjalan dalam proses pekerja .NET terpisah. Gunakan dengan versi .NET dan .NET Framework yang didukung. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi proses pekerja terisolasi .NET. |
Model dalam proses | Kode fungsi Anda berjalan dalam proses yang sama dengan proses host Azure Functions. Hanya mendukung versi Dukungan Jangka Panjang (LTS) .NET. Untuk mempelajari lebih lanjut, lihat Mengembangkan fungsi pustaka kelas .NET. |
Penting
Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.
Artikel ini menjelaskan status perbedaan fungsi dan perilaku saat ini antara kedua model. Untuk bermigrasi dari model dalam proses ke model pekerja yang terisolasi, lihat Memigrasikan aplikasi .NET dari model dalam proses ke model pekerja yang terisolasi.
Tabel perbandingan model eksekusi
Gunakan tabel berikut untuk membandingkan fitur dan perbedaan fungsional antara kedua model:
Fitur/perilaku | Model pekerja terisolasi | Model dalam proses3 |
---|---|---|
Versi .NET yang didukung | Versi Dukungan Jangka Panjang (LTS), Versi Dukungan Istilah Standar (STS), .NET Framework |
Versi Dukungan Jangka Panjang (LTS), berakhiran dengan .NET 8 |
Paket inti | Microsoft.Azure.Functions.Worker Microsoft.Azure.Functions.Worker.Sdk |
Microsoft.NET.Sdk.Functions |
Paket ekstensi pengikatan | Microsoft.Azure.Functions.Worker.Extensions.* | Microsoft.Azure.WebJobs.Extensions.* |
Fungsi Tahan Lama | Didukung | Didukung |
Jenis model yang diekspos oleh pengikatan | Jenis sederhana Jenis yang bisa diserialisasikan JSON Array/enumerasi Layanan SDK jenis4 |
Jenis sederhana Jenis JSON yang dapat diserialisasikan Array/enumerasi Layanan SDK jenis4 |
Jenis model pemicu HTTP | HttpRequestData / HttpResponseData HttpRequest / IActionResult (menggunakan integrasi ASP.NET Core)5 |
HttpRequest IActionResult5 / HttpRequestMessage / HttpResponseMessage |
Interaksi pengikatan output | Mengembalikan nilai dalam model yang diperluas dengan: - output tunggal atau beberapa - array output |
Mengembalikan nilai (output tunggal saja),out ParameterIAsyncCollector |
Pengikatan imperatif1 | Tidak didukung - sebagai gantinya bekerja dengan jenis SDK secara langsung | Didukung |
Injeksi dependensi | Didukung (model yang ditingkatkan konsisten dengan ekosistem .NET) | Didukung |
Middleware | Didukung | Tidak didukung |
Pencatatan | ILogger<T> /ILogger diperoleh dari FunctionContext atau melalui injeksi dependensi |
ILogger diteruskan ke fungsiILogger<T> melalui injeksi dependensi |
Dependensi Application Insights | Didukung | Didukung |
Token pembatalan | Didukung | Didukung |
Waktu cold start2 | Pengoptimalan yang dapat dikonfigurasi | Dioptimalkan |
ReadyToRun | Didukung | Didukung |
[Konsumsi Flex] | Didukung | Tidak didukung |
1 Ketika Anda perlu berinteraksi dengan layanan menggunakan parameter yang ditentukan pada runtime, menggunakan SDK layanan yang sesuai secara langsung disarankan daripada menggunakan pengikatan imperatif. SDK bersifat kurang verbose, mencakup lebih banyak skenario, dan memiliki keuntungan untuk tujuan penanganan kesalahan dan penelusuran kesalahan. Rekomendasi ini berlaku untuk kedua model.
2 Waktu mulai dingin dapat juga terpengaruh pada Windows saat menggunakan beberapa versi pratinjau .NET karena pemuatan kerangka kerja pratinjau just-in-time. Dampak ini berlaku untuk model dalam proses dan di luar proses tetapi dapat terlihat saat membandingkan di berbagai versi. Penundaan untuk versi pratinjau ini tidak ada pada paket Linux.
3 Fungsi Skrip C# juga berjalan dalam proses dan menggunakan pustaka yang sama dengan fungsi pustaka kelas dalam proses. Untuk informasi selengkapnya, lihat referensi pengembang skrip Azure Functions C# (.csx).
4 Jenis SDK Layanan mencakup jenis dari Azure SDK untuk .NET seperti BlobClient.
5 jenis ASP.NET Core tidak didukung untuk .NET Framework.
Versi yang didukung
Versi runtime Functions mendukung versi .NET tertentu. Untuk mempelajari selengkapnya tentang versi Functions, lihat Gambaran umum versi runtime Azure Functions. Dukungan versi juga bergantung pada apakah fungsi Anda berjalan dalam proses atau proses pekerja terisolasi.
Catatan
Untuk mempelajari cara mengubah versi runtime Functions yang digunakan oleh aplikasi fungsi Anda, lihat menampilkan dan memperbarui versi runtime saat ini.
Tabel berikut menunjukkan tingkat tertinggi .NET atau .NET Framework yang dapat digunakan dengan versi Functions tertentu.
Versi runtime Functions | Model pekerja terisolasi | Model dalam proses5 |
---|---|---|
Functions 4.x1 | .NET 9.0 (pratinjau) .NET 8.0 .NET 6.02 .NET Framework 4.83 |
.NET 8.0 .NET 6.02 |
Functions 1.x4 | n/a | .NET Framework 4.8 |
1 .NET 7 sebelumnya didukung pada model pekerja yang terisolasi tetapi mencapai akhir dukungan resmi pada 14 Mei 2024.
2 .NET 6 mencapai akhir dukungan resmi pada 12 November 2024.
3 Proses build juga memerlukan .NET SDK.
4 Dukungan berakhir untuk runtime Azure Functions versi 1.x pada 14 September 2026. Untuk informasi selengkapnya, lihat pengumuman dukungan ini. Untuk dukungan penuh berkelanjutan, Anda harus memigrasikan aplikasi Anda ke versi 4.x.
5 Dukungan berakhir untuk model dalam proses pada 10 November 2026. Untuk informasi selengkapnya, lihat pengumuman dukungan ini. Untuk dukungan penuh berkelanjutan, Anda harus memigrasikan aplikasi Anda ke model pekerja yang terisolasi.
Untuk berita terbaru tentang rilis Azure Functions, termasuk penghapusan versi minor lama tertentu, lihat pengumuman Azure App Service.