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 type
orchestrationClient
. 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.