Panduan untuk SDK PowerShell Durable Functions mandiri
PowerShell SDK Durable Functions (DF) sekarang tersedia, dalam pratinjau, sebagai paket mandiri di Galeri PowerShell: AzureFunctions.PowerShell.Durable.SDK
.
Setelah paket SDK ini adalah GA, ini akan menjadi sarana yang direkomendasikan untuk menulis aplikasi Durable Functions dengan PowerShell. Dalam artikel ini, kami menjelaskan manfaat perubahan ini, dan perubahan apa yang dapat Anda harapkan saat mengadopsi paket baru ini.
Catatan
Paket ini sedang dalam pratinjau.
Motivasi di balik SDK mandiri
DF SDK sebelumnya dibangun ke dalam pekerja bahasa PowerShell. Pendekatan ini datang dengan manfaat bahwa aplikasi Durable Functions dapat ditulis di luar kotak untuk pengguna PowerShell Azure Functions. Namun, itu juga datang dengan berbagai kekurangan:
- Fitur baru, perbaikan bug, dan perubahan lainnya bergantung pada irama rilis pekerja PowerShell.
- Karena sifat peningkatan otomatis pekerja PowerShell, DF SDK harus konservatif tentang memperbaiki bug karena setiap perubahan perilaku dapat merupakan perubahan yang melanggar.
- Algoritma pemutaran ulang yang digunakan oleh DF SDK bawaan sudah kedaluarsa: SDK DF lainnya sudah menggunakan implementasi yang lebih cepat dan lebih andal.
Dengan membuat paket DF PowerShell SDK mandiri, kita dapat mengatasi kekurangan ini. Ini adalah manfaat memanfaatkan paket SDK mandiri baru ini:
- SDK ini mencakup banyak peningkatan yang sangat diminta seperti pengecualian yang lebih baik dan penanganan nilai null, dan perbaikan serialisasi.
- Paket ini dibuat versinya secara independen dari pekerja PowerShell. Ini memungkinkan pengguna untuk menggabungkan fitur dan perbaikan baru segera setelah tersedia, sekaligus menghindari melanggar perubahan dari peningkatan otomatis.
- Logika pemutaran ulang lebih cepat, dan lebih dapat diandalkan: menggunakan mesin pemutaran ulang yang sama dengan SDK terisolasi DF untuk C#.
Rencana penghentian penggunaan untuk DF PowerShell SDK bawaan
DF SDK bawaan di pekerja PowerShell akan tetap tersedia untuk PowerShell 7.4, 7.2, dan rilis sebelumnya.
Kami berencana untuk akhirnya merilis versi utama baru pekerja PowerShell tanpa SDK bawaan. Pada saat itu, pengguna harus menginstal SDK secara terpisah menggunakan paket mandiri ini; langkah-langkah penginstalan dijelaskan di bawah ini.
Menginstal dan mengaktifkan SDK
Lihat bagian ini untuk mempelajari cara menginstal dan mengaktifkan SDK mandiri baru di aplikasi yang sudah ada.
Prasyarat
PowerShell SDK mandiri memerlukan versi minimum berikut:
- Azure Functions Runtime v4.16+
- Azure Functions Core Tools v4.0.5095+ (jika berjalan secara lokal)
- Azure Functions aplikasi PowerShell untuk PowerShell 7.2 atau yang lebih tinggi
Ikut serta dalam DF SDK mandiri
Pengaturan aplikasi berikut diperlukan untuk menjalankan PowerShell SDK mandiri:
- Nama:
ExternalDurablePowerShellSDK
- Nilai:
"true"
Pengaturan aplikasi ini akan menonaktifkan Durable SDK bawaan untuk PowerShell versi 7.2 ke atas, memaksa pekerja untuk menggunakan SDK eksternal.
Jika Anda menjalankan secara lokal menggunakan Azure Functions Core Tools, Anda harus menambahkan pengaturan ini ke file Andalocal.settings.json
. Jika Anda menjalankan di Azure, ikuti langkah-langkah berikut dengan alat pilihan Anda:
Ganti <FUNCTION_APP_NAME>
dan <RESOURCE_GROUP_NAME>
dengan nama aplikasi fungsi dan grup sumber daya Anda.
az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"
Menginstal dan mengimpor SDK
Anda memiliki dua opsi untuk menginstal paket SDK: dapat diinstal sebagai dependensi terkelola, atau sebagai modul kustom. Di bagian ini, kami menjelaskan kedua opsi tersebut, tetapi hanya salah satunya yang diperlukan.
Opsi penginstalan 1: Gunakan dependensi terkelola
Untuk menginstal SDK sebagai dependensi terkelola, Anda harus mengikuti panduan dependensi terkelola. Harap tinjau panduan untuk detailnya.
Singkatnya, Pertama-tama Anda perlu memastikan bahwa Anda host.json
berisi managedDependency
bagian dengan properti yang enabled
diatur ke true
. Di bawah ini adalah contoh host.json
yang memenuhi persyaratan ini:
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
},
}
Kemudian Anda hanya perlu menentukan entri untuk DF SDK dalam file Anda requirements.psd1
, seperti dalam contoh di bawah ini:
# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
# For latest supported version, go to 'https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/'.
'AzureFunctions.PowerShell.Durable.SDK' = '1.*'
}
Opsi penginstalan 2: Menggunakan modul kustom
Untuk menginstal DF SDK mandiri sebagai modul kustom, Anda perlu mengikuti panduan mengenai pembuatan folder modul tingkat aplikasi. Pastikan untuk meninjau dokumen yang disebutkan di atas untuk detailnya.
Singkatnya, Anda harus menempatkan paket SDK di dalam direktori yang ".\Modules"
terletak di akar aplikasi Anda.
Misalnya, dari dalam akar aplikasi Anda, dan setelah membuat ".\Modules"
direktori, Anda dapat mengunduh SDK mandiri ke direktori modul seperti:
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
Mengimpor SDK
Langkah terakhir adalah mengimpor SDK ke sesi kode Anda. Untuk melakukan ini, impor PowerShell SDK melalui Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
di file Anda profile.ps1
.
Misalnya, jika aplikasi Anda di-scaffold melalui templat, file Anda profile.ps1
mungkin akhirnya mencari seperti itu:
# Azure Functions profile.ps1
#
# This profile.ps1 will get executed every "cold start" of your Function App.
# "cold start" occurs when:
#
# * A Function App starts up for the very first time
# * A Function App starts up after being de-allocated due to inactivity
#
# You can define helper functions, run commands, or specify environment variables
# NOTE: any variables defined that are not environment variables will get reset after the first execution
# Authenticate with Azure PowerShell using MSI.
# Remove this if you are not planning on using MSI or Azure PowerShell.
if ($env:MSI_SECRET) {
Disable-AzContextAutosave -Scope Process | Out-Null
Connect-AzAccount -Identity
}
# Uncomment the next line to enable legacy AzureRm alias in Azure PowerShell.
# Enable-AzureRmAlias
# You can also define functions or aliases that can be referenced in any of your PowerShell functions.
# Import standalone PowerShell SDK
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
Ini semua adalah langkah-langkah yang diperlukan untuk menggunakan PowerShell SDK berikutnya. Jalankan aplikasi Anda seperti biasa, melalui func host start
di terminal Anda untuk mulai menggunakan SDK.
Panduan migrasi
Di bagian ini, kami menjelaskan antarmuka dan perubahan perilaku yang dapat Anda harapkan saat menggunakan SDK baru.
CmdLet Baru
-
Invoke-DurableSubOrchestrator -FunctionName <Name> -Input <Input>
adalah CmdLet baru yang memungkinkan pengguna untuk menggunakan suborkestrator dalam alur kerja mereka.
CmdLet yang Dimodifikasi
- CmdLet
Get-DurableTaskResult -Task <task>
sekarang hanya menerima satu Tugas sebagai argumen, alih-alih menerima daftar Tugas.
Perubahan perilaku
- Pengecualian yang dilemparkan oleh aktivitas yang dijadwalkan dengan
Wait-DurableTask
(seperti dalam pola Fan-Out/Fan-In) tidak lagi diabaikan secara diam-diam. Sebaliknya, pada pengecualian, CmdLet menyebarluaskan pengecualian tersebut ke orkestrator sehingga dapat ditangani oleh kode pengguna. - Nilai null tidak lagi dihilangkan dari daftar hasil pemanggilan
Wait-DurableTask
(yaitu, WhenAll). Ini berarti bahwa pemanggilanWait-DurableTask
yang berhasil tanpa-Any
bendera harus mengembalikan array dengan ukuran yang sama dengan jumlah tugas yang dijadwalkannya.
Tempat mendapatkan dukungan, memberikan umpan balik, dan menyarankan perubahan
Selama fase pratinjau rilis ini, SDK mandiri dapat memperkenalkan beberapa perubahan lagi. Perubahan ini dapat dipengaruhi oleh komunitas sehingga melaporkan umpan balik dan saran apa pun ke repositori GitHub baru SDK.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk