.NET izole edilmiş çalışandaki Dayanıklı İşlevler'a genel bakış

.NET yalıtılmış çalışanı, Dayanıklı İşlevler'i Azure İşlevleri konak işleminden bağımsız olarak desteklenen herhangi bir .NET sürümünde çalıştırmanıza olanak tanır. Bu model bağımlılık ekleme, ara yazılım ve .NET sürüm oluşturma üzerinde tam denetim sağlar.

Bu makalede şunları öğreneceksiniz:

Sosyal haklar

.NET yalıtılmış çalışanı Dayanıklı İşlevler uygulamaları için çeşitli avantajlar sağlar:

  • Bağımsız .NET sürümü oluşturma: İşlevler konağı güncelleştirmesini beklemeden uygulamanızı .NET 8, .NET 9 veya sonraki sürümlerde çalıştırın.
  • Tam bağımlılık ekleme: Etkinliklerinizde standart .NET IServiceCollection / IServiceProvider desenlerini kullanın.
  • Özel ara yazılım: İşlevler çalışanı ara yazılım işlem hattı aracılığıyla günlüğe kaydetme, kimlik doğrulaması veya hata işleme gibi çapraz kesme sorunları ekleyin.
  • Doğrudan giriş enjeksiyonu: Orkestrasyon girdisi doğrudan tetikleme metodunun imzasına enjekte edilebilir: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input).
  • Kesin olarak yazılan çağrılar (önizleme): Kaynak oluşturucu paketiyle, etkinlikler ve alt düzenlemeler için derleme süresi açısından güvenli çağrılar alırsınız. Daha fazla bilgi için bkz. Kaynak oluşturucular ve sınıf tabanlı söz dizimi (önizleme).

Yalıtılmış çalışan avantajlarının tam listesi için bkz. Yalıtılmış çalışan modelinin avantajları.

Başlayın

.NET yalıtılmış çalışanını kullanarak Dayanıklı İşlevler uygulaması oluşturmak için:

  1. Gerekli NuGet paketini yükleyin:

    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.*" />
    
  2. Orkestratörler için TaskOrchestrationContext ve istemci işlemleri için DurableTaskClient kullanın. Eksiksiz bir kılavuz için hızlı başlangıç öğreticisine bakın.

İşlem içi ile arasındaki temel farklar

İşlem içi modelden geçiş gerçekleştiriyor veya modelle karşılaştırıyorsanız önemli farklar şunlardır:

Alan Devam ediyor .NET yalıtılmış çalışanı
NuGet paketi Microsoft.Azure.WebJobs.Extensions.DurableTask Microsoft.Azure.Functions.Worker.Extensions.DurableTask
Orchestrator bağlamı IDurableOrchestrationContext TaskOrchestrationContext
İstemci türü IDurableOrchestrationClient DurableTaskClient
Etkinlik bağlamı IDurableActivityContext TaskActivityContext
Namespace Microsoft.Azure.WebJobs.Extensions.DurableTask Microsoft.DurableTask / Microsoft.Azure.Functions.Worker
Yeniden yürütmeye karşı güvenli loglayıcı context.CreateReplaySafeLogger(log) context.CreateReplaySafeLogger("Name")

Proje kurulumu, paket başvuruları, API eşlemeleri, davranış farklılıkları ve yaygın sorunları kapsayan kapsamlı bir geçiş kılavuzu için bkz. İşlem içi çalışan modelinden yalıtılmış çalışan modeline geçiş.

Kaynak oluşturucular ve sınıf tabanlı söz dizimi (önizleme)

Kaynak oluşturucu paketi, işlev tabanlı Dayanıklı İşlevler'e bir alternatif sağlar. [Function] özniteliklerine sahip statik yöntemler yerine, Dayanıklı SDK'dan devralınan güçlü türlenmiş sınıflar yazarsınız.

Prerequisites

Kaynak oluşturucu NuGet paketini projenize ekleyin:

<PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" />

Paket iki özellik sağlar:

  • Kapsamlı tanımlanmış sınıflardan miras alan sınıf tabanlı etkinlikler ve düzenlemeler - TaskOrchestrator<TInput, TOutput> ve TaskActivity<TInput, TOutput>.
  • Güçlü şekilde yazılmış uzantı metotları — alt orkestrasyon ve etkinlikleri çağırmak için derlenme zamanı güvenli metotlar. Bu uzantı yöntemleri, işlev tabanlı orkestrasyonlarda da kullanılabilir.

Example

Aşağıdaki örnekte, sınıf tabanlı etkinliği çağıran sınıf tabanlı düzenleme gösterilmektedir:

using Microsoft.DurableTask;

[DurableTask]
public class MyOrchestration : TaskOrchestrator<string, string>
{
    public override async Task<string> RunAsync(TaskOrchestrationContext context, string input)
    {
        return await context.CallActivityAsync<string>(nameof(MyActivity), input);
    }
}

[DurableTask]
public class MyActivity : TaskActivity<string, string>
{
    public override Task<string> RunAsync(TaskActivityContext context, string input)
    {
        return Task.FromResult($"Processed: {input}");
    }
}

Tavsiye

İşlevsel giriş veya çıkış gerektirmeyen düzenleme veya etkinlikler için genel tür bağımsız değişkeni olarak kullanın object? (örneğin, TaskOrchestrator<object?, object?>). Bu desen, sınıf tabanlı modeli kullanmaya devam ederken etkinliklerde bağımlılık ekleme (örneğin, ILogger<T>) kullanmanıza olanak tanır.

Dayanıklı varlıklar

Dayanıklı varlıklar, yalıtılmış .NET işleçte desteklenir. Daha fazla bilgi için geliştirici kılavuzuna bakın.

Sonraki Adımlar