Unterschiede zwischen dem isolierten Workermodell und dem In-Process-Modell für .NET in Azure Functions
Es gibt zwei Ausführungsmodelle für .NET-Funktionen:
Ausführungsmodell | Beschreibung |
---|---|
Isoliertes Workermodell | Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie unter Entwickeln von isolierten .NET-Workerprozessfunktionen. |
In-Process-Modell | Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von .NET-Klassenbibliotheksfunktionen. |
Wichtig
Die Unterstützung für das In-Process-Modell endet am 10. November 2026. Es wird dringend empfohlen, Ihre Apps zum isolierten Workermodell zu migrieren, um den vollständigen Support zu ermöglichen.
In diesem Artikel wird der aktuelle Zustand der Funktions- und Verhaltensunterschiede zwischen den beiden Modellen beschrieben. Informationen zum Migrieren vom In-Process-Modell zum isolierten Workermodell finden Sie unter Migrieren von .NET-Apps vom In-Process-Modell zum isolierten Workermodell.
Vergleichstabelle für Ausführungsmodelle
Verwenden Sie die folgende Tabelle, um Feature- und Funktionsunterschiede zwischen den beiden Modellen zu vergleichen:
Feature/Verhalten | Isoliertes Workermodell | Prozessinternes Modell3 |
---|---|---|
Unterstützte .NET-Versionen | LTS-Versionen (Long-Term Support, langfristiger Support) STS-Versionen (Standard Term Support, Standard-Laufzeitunterstützung), .NET Framework |
Versionen mit langfristigem Support (LTS), endend mit .NET 8 |
Erforderliche Pakete | Microsoft.Azure.Functions.Worker Microsoft.Azure.Functions.Worker.Sdk |
Microsoft.NET.Sdk.Functions |
Pakete für Bindungserweiterungen | Microsoft.Azure.Functions.Worker.Extensions.* | Microsoft.Azure.WebJobs.Extensions.* |
Langlebige Funktionen | Unterstützt | Unterstützt |
Modelltypen, die durch Bindungen verfügbar gemacht werden | Einfache Typen Serialisierbare JSON-Typen Arrays/Enumerationen Typen von Dienst-SDKs4 |
Einfache Typen JSON-serialisierbare Typen Arrays/Enumerationen Typen von Dienst-SDKs4 |
HTTP-Triggermodelltypen | HttpRequestData / HttpResponseData HttpRequest / IActionResult (mit ASP.NET Core Integration)5 |
HttpRequest / IActionResult5 HttpRequestMessage / HttpResponseMessage |
Ausgabebindungsinteraktionen | Rückgabewerte in einem erweiterten Modell mit Folgendem: – einzelne Ausgabe oder mehrere Ausgaben – Ausgabearrays |
Rückgabewerte (nur einzelne Ausgabe),out -Parameter,IAsyncCollector |
Imperative Bindungen1 | Nicht unterstützt, arbeiten Sie stattdessen direkt mit SDK-Typen | Unterstützt |
Abhängigkeitsinjektion | Unterstützt (verbessertes, mit dem .NET-Ökosystem konsistentes Modell) | Unterstützt |
Middleware | Unterstützt | Nicht unterstützt |
Protokollierung | ILogger<T> /ILogger abgerufen aus FunctionContext oder über Abhängigkeitsinjektion |
An die Funktion übergebene Schnittstelle ILogger ILogger<T> über Abhängigkeitsinjektion |
Application Insights-Abhängigkeiten | Unterstützt | Unterstützt |
Abbruchtoken | Unterstützt | Unterstützt |
Kaltstartdauer2 | Konfigurierbare Optimierungen | Optimiert |
ReadyToRun | Unterstützt | Unterstützt |
[Flex-Verbrauch] | Unterstützt | Nicht unterstützt |
1 Wenn Sie mit einem Dienst unter Verwendung von Parametern interagieren müssen, die zur Laufzeit bestimmt werden, empfiehlt sich die direkte Verwendung der entsprechenden Dienst-SDKs gegenüber der Verwendung imperativer Bindungen. Die SDKs sind weniger ausführlich, decken mehr Szenarien ab und haben Vorteile bei der Fehlerbehandlung und beim Debuggen. Diese Empfehlung gilt für beide Modelle.
2 Die Kaltstartzeiten können unter Windows bei der Verwendung einiger Vorschauversionen von .NET aufgrund des Just-In-Time-Ladens von Vorschauframeworks zusätzlich beeinträchtigt werden. Diese Auswirkungen betreffen sowohl die In-Process- als auch die Out-of-Process-Modelle, können aber bei einem Vergleich zwischen verschiedenen Versionen auffällig sein. Diese Verzögerung für Vorschauversionen ist in Linux-Plänen nicht vorhanden.
3 C#-Skriptfunktionen werden auch In-Process ausgeführt und verwenden dieselben Bibliotheken wie In-Process-Klassenbibliotheksfunktionen. Weitere Informationen finden Sie in der C#-Skriptentwicklerreferenz (C#-Skript, CSX) zu Azure Functions.
4 Zu den Dienst-SDK-Typen gehören auch Typen aus dem Azure SDK für .NET, wie z. B. BlobClient.
5 ASP.NET Core-Typen werden für .NET Framework nicht unterstützt.
Unterstützte Versionen
Versionen der Functions-Laufzeit unterstützen bestimmte Versionen von .NET. Weitere Informationen zu den Functions-Versionen finden Sie unter Übersicht über die Runtimeversionen von Azure Functions. Die Versionsunterstützung hängt auch davon ab, ob Ihre Funktionen prozessintern oder in einem isolierten Workerprozess ausgeführt werden.
Hinweis
Informationen zum Ändern der von Ihrer Funktions-App verwendeten Functions-Runtimeversion finden Sie unter Anzeigen und Aktualisieren der aktuellen Runtimeversion.
In der folgenden Tabelle sind die höchsten .NET- bzw. .NET Framework-Versionen aufgeführt, die mit einer bestimmten Version von Functions verwendet werden können.
Version der Functions-Laufzeit | Isoliertes Workermodell | Prozessinternes Modell5 |
---|---|---|
Functions 4.x1 | .NET 9.0 (Vorschauversion) .NET 8.0 .NET 6.02 .NET Framework 4.83 |
.NET 8.0 .NET 6.02 |
Functions 1.x4 | – | .NET Framework 4.8 |
1 .NET 7 wurde zuvor beim isolierten Workermodell unterstützt, hat aber am 14. Mai 2024 das Ende der offiziellen Unterstützung erreicht.
2 .NET 6 wird ab dem 12. November 2024 nicht mehr offiziell unterstützt.
3 Für den Buildprozess ist auch das .NET SDK erforderlich.
4 Der Support für die Version 1.x der Azure Functions-Runtime endet am 14. September 2026. Weitere Informationen finden Sie in dieser Supportankündigung. Um weiterhin uneingeschränkten Support zu erhalten, müssen Sie Ihre Apps zur Version 4.x migrieren.
5 Die Unterstützung für das In-Process-Modell endet am 10. November 2026. Weitere Informationen finden Sie in dieser Supportankündigung. Um weiterhin uneingeschränkten Support zu erhalten, müssen Sie Ihre Apps zum Modell mit isolierten Workern migrieren.
Aktuelle Informationen zu Azure Functions-Releases (einschließlich Informationen zur Entfernung bestimmter älterer Nebenversionen) finden Sie unter Azure App Service-Ankündigungen.