Gambaran Umum versi Durable Functions

Durable Functions adalah ekstensi dari Azure Functions dan Azure WebJobs yang memungkinkan Anda menulis fungsi stateful di lingkungan tanpa server. Ekstensi ini mengelola status, titik pemeriksaan, dan menghidupkan ulang untuk Anda. Jika Anda belum terbiasa dengan Durable Functions, lihat dokumentasi gambaran umum.

Fitur baru di versi 2.x

Bagian ini menjelaskan fitur Durable Functions yang ditambahkan di versi 2.x.

Catatan

Bagian ini tidak berlaku untuk Durable Functions di pekerja terisolasi dotnet. Untuk itu, lihat ringkasan proses terisolasi fungsi tahan lama.

Entitas tahan lama

Dalam Durable Functions versi 2.x, kami memperkenalkan konsep fungsi entitas baru.

Fungsi entitas mendefinisikan operasi untuk membaca dan memperbarui potongan-potongan kecil status, yang dikenal sebagai entitas tahan lama. Seperti fungsi orkestrator, fungsi entitas adalah fungsi dengan jenis pemicu khusus, pemicu entitas. Tidak seperti fungsi orkestrator, fungsi entitas tidak memiliki batasan kode tertentu. Fungsi entitas juga mengelola status secara eksplisit, bukan secara implisit, yang menunjukkan status melalui alur kontrol.

Untuk mempelajari lebih lanjut, lihat artikel entitas tahan lama.

HTTP tahan lama

Dalam Durable Functions versi 2.x, kami memperkenalkan fitur HTTP Tahan Lama baru yang memungkinkan Anda:

  • Memanggil API HTTP langsung dari fungsi orkestrasi (dengan beberapa batasan yang didokumentasikan).
  • Menerapkan penjajakan status HTTP 202 sisi klien otomatis.
  • Dukungan bawaan untuk Identitas Terkelola Azure.

Untuk mempelajari lebih lanjut, lihat artikel fitur HTTP.

Migrasi dari versi 1.x ke 2.x

Bagian ini menjelaskan cara memigrasikan Durable Functions versi 1.x yang ada ke versi 2.x untuk memanfaatkan fitur baru.

Meningkatkan ekstensi

Instal versi 2.x terbaru dari ekstensi pengikatan Durable Functions di project Anda.

JavaScript, Python, dan PowerShell

Durable Functions 2.x tersedia mulai dari versi 2.x dari bundel ekstensi Azure Functions.

Dukungan Python dalam Durable Functions membutuhkan Durable Functions versi 2.x atau lebih tinggi.

Untuk memperbarui versi bundel ekstensi di proyek Anda, buka host.json dan perbarui bagian extensionBundle untuk menggunakan versi 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Catatan

Jika Visual Studio Code tidak menampilkan template yang benar setelah Anda mengubah versi bundel ekstensi, muat ulang jendela dengan menjalankan perintah Developer: Reload Window (Ctrl+R di Windows dan Linux, Command+R di macOS).

Java

Durable Functions versi 2.x tersedia mulai dari versi 4.x dari bundel ekstensi Azure Functions. Anda harus menggunakan runtime Azure Functions 4.0 untuk menjalankan fungsi Java.

Untuk memperbarui versi bundel ekstensi di proyek Anda, buka host.json dan perbarui bagian extensionBundle untuk menggunakan versi 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

.NET

Perbarui proyek .NET Anda untuk menggunakan versi terbaru ekstensi pengikatan Durable Functions.

Untuk informasi lebih lanjut, lihat Mendaftarkan ekstensi pengikatan Azure Functions.

Memperbarui kode Anda

Durable Functions 2.x memperkenalkan beberapa perubahan besar. Aplikasi Durable Functions 1.x tidak kompatibel dengan Durable Functions 2.x tanpa perubahan kode. Bagian ini mencantumkan beberapa perubahan yang harus Anda lakukan saat meningkatkan fungsi versi 1.x ke 2.x.

Skema host.json

Durable Functions 2.x menggunakan skema host.json baru. Perubahan utama dari 1.x meliputi:

  • "storageProvider" (dan subbagian "azureStorage") untuk konfigurasi khusus penyimpanan.
  • "tracing" untuk konfigurasi pelacakan dan pencatatan.
  • "notifications" (dan subbagian "eventGrid") untuk konfigurasi pemberitahuan Azure Event Grid.

Untuk detail lebih lanjut, lihat Dokumentasi referensi host.json Durable Functions.

Perubahan nama hub tugas secara default

Di versi 1.x, jika nama hub tugas tidak ditentukan di host.json, maka defaultnya adalah "DurableFunctionsHub". Di versi 2.x, nama hub tugas default sekarang diturunkan dari nama aplikasi fungsi. Karena itu, jika Anda belum menentukan nama hub tugas saat meningkatkan ke versi 2.x, kode Anda akan beroperasi dengan hub tugas baru, dan semua orkestrasi yang digunakan tidak akan lagi memiliki aplikasi yang memprosesnya. Untuk mengatasi hal ini, Anda dapat secara eksplisit mengatur nama hub tugas Anda ke default v1.x dari "DurableFunctionsHub", atau Anda dapat mengikuti panduan penyebaran zero-downtime kami untuk detail tentang cara menangani perubahan besar untuk orkestrasi dalam penerbangan.

Perubahan antarmuka publik (khusus .NET)

Di versi 1.x, berbagai objek konteks yang didukung oleh Durable Functions memiliki kelas dasar abstrak yang dimaksudkan untuk digunakan dalam pengujian unit. Sebagai bagian dari Durable Functions 2.x, kelas dasar abstrak ini diganti dengan antarmuka.

Tabel berikut ini menunjukkan perubahan utama:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient atau IDurableClient
DurableOrchestrationContext atau DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext atau DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

Dalam kasus di mana kelas dasar abstrak berisi metode virtual, metode virtual ini telah digantikan oleh metode ekstensi yang didefinisikan dalam DurableContextExtensions.

perubahan function.json

Dalam Durable Functions 1.x, pengikatan klien orkestrasi menggunakan type dari orchestrationClient. Versi 2.x menggunakan durableClient sebagai gantinya.

Menaikkan perubahan peristiwa

Di Durable Functions 1.x, memanggil API peristiwa kenaikan dan menentukan instans yang tidak ada mengakibatkan kegagalan diam. Mulai versi 2.x, menaikkan peristiwa ke orkestrasi yang tidak ada mengakibatkan pengecualian.