omówienie wersji Durable Functions

Durable Functions to rozszerzenie zadań Azure Functions i Azure WebJob, które umożliwia pisanie funkcji stanowych w środowisku bezserwerowym. Rozszerzenie zarządza stanem, punktami kontrolnymi i ponownym uruchamianiem. Jeśli nie znasz jeszcze Durable Functions, zapoznaj się z dokumentacją przeglądu.

Nowe funkcje w wersji 2.x

W tej sekcji opisano funkcje Durable Functions, które są dodawane w wersji 2.x.

Uwaga

Ta sekcja nie ma zastosowania do Durable Functions w izolowanym procesie roboczym dotnet. Aby to uzyskać, zobacz omówienie procesów izolowanych funkcji trwałych.

Jednostki trwałe

W Durable Functions 2.x wprowadziliśmy nową koncepcję funkcji jednostki.

Funkcje jednostki definiują operacje odczytu i aktualizowania małych fragmentów stanu, znanych jako trwałe jednostki. Podobnie jak funkcje orkiestratora, funkcje jednostki to funkcje z specjalnym typem wyzwalacza, wyzwalaczem jednostki. W przeciwieństwie do funkcji orkiestratora funkcje jednostki nie mają żadnych określonych ograniczeń kodu. Funkcje jednostek zarządzają również stanem jawnie, a nie niejawnie reprezentującym stan za pośrednictwem przepływu sterowania.

Aby dowiedzieć się więcej, zobacz artykuł o jednostkach trwałych .

Trwały protokół HTTP

W Durable Functions 2.x wprowadziliśmy nową funkcję trwałego protokołu HTTP, która umożliwia:

  • Wywołaj interfejsy API HTTP bezpośrednio z funkcji aranżacji (z pewnymi udokumentowanymi ograniczeniami).
  • Zaimplementuj automatyczne sondowanie stanu HTTP po stronie klienta 202.
  • Wbudowana obsługa tożsamości zarządzanych platformy Azure.

Aby dowiedzieć się więcej, zobacz artykuł Funkcje HTTP .

Migrowanie z wersji 1.x do wersji 2.x

W tej sekcji opisano sposób migrowania istniejącej wersji 1.x Durable Functions do wersji 2.x w celu korzystania z nowych funkcji.

Uaktualnianie rozszerzenia

Zainstaluj najnowszą wersję 2.x rozszerzenia powiązań Durable Functions w projekcie.

JavaScript, Python i PowerShell

Durable Functions 2.x jest dostępny w wersji 2.x pakietu rozszerzenia Azure Functions.

Obsługa języka Python w Durable Functions wymaga Durable Functions wersji 2.x lub nowszej.

Aby zaktualizować wersję pakietu rozszerzeń w projekcie, otwórz plik host.json i zaktualizuj extensionBundle sekcję, aby używać wersji 4.x ([4.*, 5.0.0)).

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

Uwaga

Jeśli Visual Studio Code nie wyświetla prawidłowych szablonów po zmianie wersji pakietu rozszerzeń, załaduj ponownie okno, uruchamiając polecenie Developer: Reload Window (Ctrl+R w systemach Windows i Linux, Command+R w systemie macOS).

Java

Durable Functions 2.x jest dostępny w wersji 4.x pakietu rozszerzenia Azure Functions. Aby wykonywać funkcje Języka Java, należy użyć środowiska uruchomieniowego Azure Functions 4.0.

Aby zaktualizować wersję pakietu rozszerzeń w projekcie, otwórz plik host.json i zaktualizuj extensionBundle sekcję, aby używać wersji 4.x ([4.*, 5.0.0)).

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

.NET

Zaktualizuj projekt platformy .NET, aby użyć najnowszej wersji rozszerzenia powiązań Durable Functions.

Aby uzyskać więcej informacji, zobacz Rejestrowanie rozszerzeń powiązań Azure Functions.

Aktualizowanie kodu

Durable Functions 2.x wprowadza kilka zmian powodujących niezgodność. aplikacje Durable Functions 1.x nie są zgodne z Durable Functions 2.x bez zmian kodu. W tej sekcji wymieniono niektóre zmiany, które należy wprowadzić podczas uaktualniania funkcji w wersji 1.x do wersji 2.x.

Schemat Host.json

Durable Functions 2.x używa nowego schematu host.json. Główne zmiany z wersji 1.x obejmują:

  • "storageProvider" (i "azureStorage" podsekcja) dla konfiguracji specyficznej dla magazynu.
  • "tracing" do śledzenia i rejestrowania konfiguracji.
  • "notifications" (i "eventGrid" podsekcja) dla konfiguracji powiadomień usługi Event Grid.

Aby uzyskać szczegółowe informacje, zobacz dokumentację referencyjną Durable Functions host.json.

Domyślne zmiany nazwy centrum zadań

Jeśli w wersji 1.x nazwa centrum zadań nie została określona w pliku host.json, wartość domyślna to "DurableFunctionsHub". W wersji 2.x domyślna nazwa centrum zadań pochodzi teraz od nazwy aplikacji funkcji. W związku z tym, jeśli nie określono nazwy centrum zadań podczas uaktualniania do wersji 2.x, kod będzie działał z nowym centrum zadań, a wszystkie orkiestracje w locie nie będą już miały aplikacji do ich przetwarzania. Aby obejść ten temat, możesz jawnie ustawić nazwę centrum zadań na wartość domyślną "DurableFunctionsHub" w wersji 1.x lub skorzystać z naszych wskazówek dotyczących wdrażania bez przestojów , aby uzyskać szczegółowe informacje na temat obsługi zmian powodujących niezgodność aranżacji w locie.

Zmiany interfejsu publicznego (tylko platforma.NET)

W wersji 1.x różne obiekty kontekstowe obsługiwane przez Durable Functions mają abstrakcyjne klasy bazowe przeznaczone do użycia w testach jednostkowych. W ramach Durable Functions 2.x te abstrakcyjne klasy podstawowe są zastępowane interfejsami.

W poniższej tabeli przedstawiono główne zmiany:

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

W przypadku, gdy abstrakcyjna klasa bazowa zawierała metody wirtualne, te metody wirtualne zostały zastąpione przez metody rozszerzenia zdefiniowane w pliku DurableContextExtensions.

zmiany function.json

W Durable Functions 1.x powiązanie klienta aranżacji używa elementu typeorchestrationClient. Zamiast tego używana jest durableClient wersja 2.x.

Zgłaszanie zmian zdarzeń

W Durable Functions 1.x wywołanie interfejsu API zdarzenia wywołania i określenie wystąpienia, które nie istniało, spowodowało niepowodzenie dyskretne. Począwszy od wersji 2.x, podniesienie zdarzenia do nieistniejącej aranżacji powoduje wyjątek.