Bağımsız Dayanıklı İşlevler PowerShell SDK Kılavuzu

Tek başına Dayanıklı İşlevler PowerShell SDK'sı (AzureFunctions.PowerShell.Durable.SDK), PowerShell ile Dayanıklı İşlevler uygulamaları yazmak için önerilen yaklaşımdır. Yerleşik SDK'yı daha hızlı yeniden yürütme mantığı (C# yalıtılmış SDK ile aynı altyapı), bağımsız sürüm oluşturma ve geliştirilmiş özel durum işleme, null değer işleme ve serileştirme ile değiştirir. Yerleşik SDK, PowerShell 7.4 ve önceki sürümlerde kullanılabilir durumda kalır, ancak PowerShell çalışanının gelecekteki önemli bir sürümünde kaldırılacaktır.

Geçiş denetim listesi

Her geçiş adımında ilerleme durumunuzu izlemek için aşağıdaki denetim listesini kullanın:

Step Bölüm
1. Önkoşulları doğrulama Prerequisites
2. Tek başına SDK'yı etkinleştirme Tek başına SDK'yı etkinleştirme
3. SDK paketini yükleme SDK paketini yükleme
4. SDK'yi içeri aktarma SDK'yi içeri aktarma
5. Uygulamanızı çalıştırma Uygulamanızı çalıştırma
6. Arabirim ve davranış değişikliklerini gözden geçirme Yerleşik SDK'dan geçiş

Tek başına SDK'yı yükle

Mevcut uygulamanızda tek başına SDK'yı yüklemek ve etkinleştirmek için bu adımları izleyin.

Önkoşulları doğrula

Tek başına PowerShell SDK'sı aşağıdaki en düşük sürümleri gerektirir:

Tek başına SDK'yı etkinleştirme

Tek başına PowerShell SDK'sını çalıştırmak için aşağıdaki uygulama ayarı gereklidir:

  • İsim: ExternalDurablePowerShellSDK
  • Değer: "true"

Bu uygulama ayarı, PowerShell sürüm 7.4 ve üzeri için yerleşik Dayanıklı SDK'yı devre dışı bırakır ve çalışanı dış SDK'yı kullanmaya zorlar.

Azure İşlevleri Çekirdek Araçları'nı kullanarak yerel olarak çalıştırıyorsanız, bu ayarı dosyanıza local.settings.json eklemeniz gerekir. Azure'da çalıştırıyorsanız, seçtiğiniz araçla şu adımları izleyin:

<FUNCTION_APP_NAME> ve <RESOURCE_GROUP_NAME> öğelerini sırasıyla işlev uygulamanızın adı ve kaynak grubunuzun adıyla değiştirin.

az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"

SDK paketini yükleme

SDK paketini yüklemek için iki seçeneğiniz vardır. Yönetilen bağımlılıkları kullanın (çoğu uygulama için önerilir) veya belirli bir sürümü sabitlemeniz gerekiyorsa veya dağıtımınız yönetilen bağımlılıkları desteklemiyorsa modülü uygulama içeriğinizle birlikte paketleyin. Yalnızca bir seçenek gereklidir.

SDK'yı yönetilen bağımlılık olarak yüklemek için yönetilen bağımlılıklar kılavuzunu izleyin. İlk olarak, host.json öğesinin managedDependency bölümünü, enabled olarak ayarlanmış true ile içerdiğinden emin olun.

{
  "version": "2.0",
  "managedDependency": {
    "enabled": true
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[3.*, 4.0.0)"
  }
}

Ardından dosyanızda requirements.psd1 SDK için bir girdi belirtin:

# 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' = '2.*'
}

2. Seçenek: SDK modülünü uygulama içeriğinize ekleme

SDK'yı uygulamanızla birlikte paketlemek için SDK paketini uygulamanızın kökündeki bir ".\Modules" dizinin içine yerleştirin. Daha fazla bilgi için bkz Uygulama içeriğine modüllerin dahil edilmesi.

Uygulama kökünden dizini oluşturun ve SDK'yı indirin:

Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"

SDK'yi içeri aktarma

SDK'nın her soğuk başlangıçta içeri aktarılması için dosyanıza profile.ps1 aşağıdaki satırı ekleyin:

Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop

Uygulamanızı çalıştırma

Uygulamanızı func host start ile başlatın. Tek başına SDK artık etkindir.

Yerleşik SDK'dan geçiş

Mevcut bir uygulamayı yerleşik SDK'dan geçiriyorsanız aşağıdaki arabirim ve davranış değişikliklerini gözden geçirin.

Yeni cmdlet’ler

Cmdlet Description
Invoke-DurableSubOrchestrator Bir orchestrator iş akışının içinden alt düzenleyicileri çağır.
Suspend-DurableOrchestration Çalışan bir düzenleme örneğini askıya alma.
Resume-DurableOrchestration Önceden askıya alınmış bir düzenleme örneğini sürdür.

Değiştirilmiş cmdlet'ler

Change Ayrıntılar
Get-DurableTaskResult Artık görev listesi yerine tek bir Task'yi bağımsız değişken olarak kabul eder.
New-DurableRetryOptionsNew-DurableRetryPolicy Yeniden adlandırıldı. Önceki uyumluluk için eski ad için bir takma ad sağlanır.

Davranış değişiklikleri

Wait-DurableTask'da istisna yönetimi

ile Wait-DurableTask zamanlanan etkinlikler (fan-out/fan-in deseni) tarafından oluşan özel durumlar artık sessizce yoksayılır. Cmdlet artık özel durumu düzenleyiciye ilettiğinden, bunu kodunuzda işleyebilirsiniz.

Yerleşik SDK — özel durumlar sessizce yutuldu:

# Exceptions from failed activities were lost
$tasks = @()
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
$results = Wait-DurableTask -Task $tasks
# No error even if an activity failed

Tek başına SDK — özel durumlar orkestratöre aktarılır:

try {
    $tasks = @()
    $tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
    $tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
    $results = Wait-DurableTask -Task $tasks
} catch {
    # Handle the activity failure
    Write-Host "An activity failed: $_"
}

Sonuçlarda null değerler Wait-DurableTask olarak korundu.

Null değerler artık ( Wait-DurableTask WhenAll) çağrısının sonuç listesinden bırakılamaz. Bayrağı olmayan -Any başarılı bir çağrı artık null döndüren etkinlikler için girdiler de dahil olmak üzere $null zamanlanan görev sayısıyla aynı boyutta bir dizi döndürür.

Yerleşik SDK — null sonuçlar bırakıldı:

# 3 tasks scheduled, but if one returned $null, results had only 2 items
$results = Wait-DurableTask -Task $tasks
$results.Count  # Could be 2 instead of 3

Tek başına SDK — null sonuçlar korunur:

# 3 tasks scheduled, results always has 3 items
$results = Wait-DurableTask -Task $tasks
$results.Count  # Always 3, with $null for activities that returned null

SDK referansı

Tam cmdlet referansı için bkz. AzureFunctions.PowerShell.Durable.SDK Module. Modülü içeri aktardıktan sonra, tüm kullanılabilir cmdlet'leri listelemek veya Get-Help *-Durable* ayrıntılı kullanım için komutunu da çalıştırabilirsinizGet-Help <cmdlet-name> -Full.

Destek alın

SDK'nın GitHub deposundaki hataları ve özellik isteklerini bildirin.

Sonraki Adımlar