Übersicht über die Runtimeversionen von Azure FunctionsAzure Functions runtime versions overview

Es gibt zwei Hauptversionen der Azure Functions-Runtime: 1.x und 2.x.There are two major versions of the Azure Functions runtime: 1.x and 2.x. Die aktuelle Version, in der neue Funktionen eingeführt und Verbesserungen vorgenommen werden, ist 2.x. Es werden jedoch beide Versionen für Produktionsszenarien unterstützt.The current version where new feature work and improvements are being made is 2.x, though both are supported for production scenarios. Im Folgenden werden einige der Unterschiede zwischen den beiden Versionen erläutert. Zudem wird beschrieben, wie Sie Apps in beiden Versionen erstellen und von 1.x auf 2.x aktualisieren.The following details some of the differences between the two, how you can create each version, and upgrade from 1.x to 2.x.

Hinweis

Dieser Artikel bezieht sich auf den Clouddienst Azure Functions.This article refers to the cloud service Azure Functions. Informationen zum Vorschauprodukt, mit dem Sie Azure Functions lokal ausführen können, finden Sie in der Übersicht über die Azure Functions-Runtime.For information about the preview product that lets you run Azure Functions on-premises, see the Azure Functions Runtime Overview.

Plattformübergreifende EntwicklungCross-platform development

Die Runtime in Version 2.x wird auf .NET Core 2 ausgeführt, kann also auf allen Plattformen ausgeführt werden, die von .NET Core unterstützt werden, einschließlich macOS und Linux.The version 2.x runtime runs on .NET Core 2, which enables it to run on all platforms supported by .NET Core, including macOS and Linux. Die Ausführung auf .NET Core ermöglicht plattformübergreifende Entwicklungs- und Hostingszenarien.Running on .NET Core enables cross-platform development and hosting scenarios.

Im Vergleich dazu unterstützt die Runtimeversion 1.x nur das Entwickeln und Hosten im Azure-Portal oder auf Windows-Computern.By comparison, the version 1.x runtime only supports development and hosting in the Azure portal or on Windows computers.

SprachenLanguages

Die Runtimeversion 2.x verwendet ein neues Modell für die Erweiterbarkeit von Sprachen.The version 2.x runtime uses a new language extensibility model. In Version 2.x müssen alle Funktionen in einer Funktions-App die gleiche Sprache verwenden.In version 2.x, all functions in a function app must share the same language. Die Sprache von Funktionen in einer Funktions-App wird beim Erstellen der App ausgewählt.The language of functions in a function app is chosen when creating the app.

Experimentelle Sprachen von Azure Functions 1.x werden nicht auf die Verwendung des neuen Modells aktualisiert und werden daher in 2.x nicht unterstützt.Azure Functions 1.x experimental languages won't be updated to use the new model, so they aren't supported in 2.x. Die folgende Tabelle zeigt, welche Programmiersprachen derzeit in den einzelnen Runtimeversionen unterstützt werden.The following table indicates which programming languages are currently supported in each runtime version.

SpracheLanguage 1.x1.x 2.x2.x
C#C# Allgemeine Verfügbarkeit (.NET Framework 4.7)GA (.NET Framework 4.7) Allgemeine Verfügbarkeit (.NET Core 2)GA (.NET Core 2)
JavaScriptJavaScript Allgemeine Verfügbarkeit (Node 6)GA (Node 6) Allgemeine Verfügbarkeit (Node 8 & 10)GA (Node 8 & 10)
F#F# Allgemeine Verfügbarkeit (.NET Framework 4.7)GA (.NET Framework 4.7) Allgemeine Verfügbarkeit (.NET Core 2)GA (.NET Core 2)
JavaJava N/VN/A Preview (Java 8)Preview (Java 8)
PythonPython ExperimentellExperimental N/VN/A
TypeScriptTypeScript ExperimentellExperimental Unterstützt durch Transpilierung in JavaScriptSupported through transpiling to JavaScript
PHPPHP ExperimentellExperimental N/VN/A
Batch (.cmd, .bat)Batch (.cmd, .bat) ExperimentellExperimental N/VN/A
BashBash ExperimentellExperimental N/VN/A
PowerShellPowerShell ExperimentellExperimental N/VN/A

Informationen zu geplanten Änderungen an der Sprachunterstützung finden Sie unter Azure-Roadmap.For information about planned changes to language support, see Azure roadmap.

Weitere Informationen finden Sie unter Unterstützte Sprachen.For more information, see Supported languages.

Ausführung in Version 1.xRun on version 1.x

Im Azure-Portal erstellte Funktions-Apps sind standardmäßig auf Version 2.x festgelegt.By default, function apps created in the Azure portal are set to version 2.x. Verwenden Sie diese Runtimeversion nach Möglichkeit, da sie auch in Zukunft um neue Features erweitert wird.When possible, you should use this runtime version, where new feature investments are being made. Bei Bedarf können Sie eine Funktions-App auch weiterhin in der Runtimeversion 1.x ausführen.If you need to, you can still run a function app on the version 1.x runtime. Sie können die Runtimeversion nur ändern, nachdem Sie die Funktions-App erstellt haben, aber bevor Sie Funktionen hinzufügen.You can only change the runtime version after you create your function app but before you add any functions. Informationen dazu, wie Sie die Runtimeversion auf 1.x festlegen, finden Sie unter Anzeigen und Aktualisieren der aktuellen Runtimeversion.To learn how to pin the runtime version to 1.x, see View and update the current runtime version.

Migrieren von 1.x zu 2.xMigrating from 1.x to 2.x

Sie können eine vorhandene App, die für die Runtimeversion 1.x geschrieben wurde, zur Version 2.x migrieren.You may choose to migrate an existing app written to use the version 1.x runtime to instead use version 2.x. Die meisten Änderungen, die Sie vornehmen müssen, betreffen die Sprachruntime, z.B. die Unterschiede in der C#-API zwischen .NET Framework 4.7 und .NET Core 2.Most of the changes you need to make are related to changes in the language runtime, such as C# API changes between .NET Framework 4.7 and .NET Core 2. Sie müssen auch sicherstellen, dass Ihr Code und Ihre Bibliotheken mit den ausgewählten Sprachruntimes kompatibel sind.You'll also need to make sure your code and libraries are compatible with the language runtime you choose. Beachten Sie nicht zuletzt auch die unten genannten Änderungen an Triggern, Bindungen und Funktionen.Finally, be sure to note any changes in trigger, bindings, and features highlighted below. Um ein optimales Migrationsergebnis zu erzielen, sollten Sie eine neue Funktions-App für Version 2.x erstellen und Ihren vorhandenen Funktionscode für Version 1.x in die neue App portieren.For the best migration results, you should create a new function app for version 2.x and port your existing version 1.x function code to the new app.

Änderungen an Triggern und BindungenChanges in triggers and bindings

In Version 2.x müssen Sie die Erweiterungen für bestimmte Trigger und Bindungen installieren, die von den Funktionen in Ihrer App verwendet werden.Version 2.x requires you to install the extensions for specific triggers and bindings used by the functions in your app. Die einzigen Ausnahmen sind HTTP- und Timertrigger, für die keine Erweiterung erforderlich ist.The only exception for this HTTP and timer triggers, which don't require an extension. Weitere Informationen finden Sie unter Registrieren und Installieren von Bindungserweiterungen.For more information, see Register and install binding extensions.

Es gibt zwischen den Versionen auch einige Unterschiede in der function.json und den Attributen der Funktion.There have also been a few changes in the function.json or attributes of the function between versions. Die Event Hub-Eigenschaft path beispielsweise lautet jetzt eventHubName.For example, the Event Hub path property is now eventHubName. Links zur Dokumentation für die einzelnen Bindungen finden Sie in der Tabelle der vorhandenen Bindungen.See the existing binding table for links to documentation for each binding.

Änderungen bei Features und FunktionalitätChanges in features and functionality

Einige Features wurden in der neuen Version entfernt, aktualisiert oder ersetzt.A few features that have also been removed, updated, or replaced in the new version. Dieser Abschnitt erläutert die Änderungen, die Sie in Version 2.x im Vergleich zu Version 1.x bemerken werden.This section details the changes you see in version 2.x after having used version 1.x.

In Version 2.x wurden die folgenden Änderungen vorgenommen:In version 2.x, the following changes were made:

  • Schlüssel für aufrufende HTTP-Endpunkte werden immer verschlüsselt in Azure Blob Storage gespeichert.Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. In Version 1.x wurden die Schlüssel standardmäßig in Azure File Storage gespeichert.In version 1.x, keys were stored in Azure File storage be default. Beim Durchführen eines Upgrades für eine App von Version 1.x auf Version 2.x werden vorhandene Geheimnisse, die sich in File Storage befinden, zurückgesetzt.When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • Version 2.x der Runtime umfasst keine integrierte Unterstützung für Webhookanbieter.The version 2.x runtime doesn't include built-in support for webhook providers. Diese Änderung wurde vorgenommen, um die Leistung zu verbessern.This change was made to improve performance. Sie können weiterhin HTTP-Trigger als Endpunkte für Webhooks verwenden.You can still use HTTP triggers as endpoints for webhooks.

  • Die Hostkonfigurationsdatei (host.json) muss leer sein oder die Zeichenfolge "version": "2.0" enthalten.The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • Zur Verbesserung der Überwachung wurde das WebJobs-Dashboard im Portal, das die Einstellung AzureWebJobsDashboard verwendete, durch Azure Application Insights ersetzt – hierbei wird die Einstellung APPINSIGHTS_INSTRUMENTATIONKEY verwendet.To improve monitoring, the WebJobs dashboard in the portal, which used the AzureWebJobsDashboard setting is replaced with Azure Application Insights, which uses the APPINSIGHTS_INSTRUMENTATIONKEY setting. Weitere Informationen finden Sie unter Überwachen von Azure Functions.For more information, see Monitor Azure Functions.

  • Alle Funktionen in einer Funktions-App müssen die gleiche Sprache verwenden.All functions in a function app must share the same language. Wenn Sie eine Funktions-App erstellen, müssen Sie einen Runtimestapel für die App auswählen.When you create a function app, you must choose a runtime stack for the app. Der Runtimestapel wird durch den FUNCTIONS_WORKER_RUNTIME-Wert in den Anwendungseinstellungen angegeben.The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. Diese Anforderung wurde hinzugefügt, um den Speicherbedarf und die Startzeit zu verbessern.This requirement was added to improve footprint and startup time. Bei der lokalen Entwicklung müssen Sie diese Einstellung auch in die Datei „local.settings.json“ einschließen.When developing locally, you must also include this setting in the local.settings.json file.

  • Das Standardzeitlimit für Funktionen in einem App Service-Plan wurde zu 30 Minuten geändert.The default timeout for functions in an App Service plan is changed to 30 minutes. Sie können das Zeitlimit mit der functionTimeout-Einstellung in der host.json-Datei manuell wieder zu „unbegrenzt“ ändern.You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • HTTP-Parallelitätsdrosselungen sind standardmäßig für Verbrauchsplanfunktionen implementiert. Der Standardwert beträgt 100 gleichzeitige Anforderungen pro Instanz.HTTP concurrency throttles are implemented by default for consumption plan functions, with a default of 100 concurrent requests per instance. Sie können diesen Wert in der maxConcurrentRequests-Einstellung in der host.json-Datei ändern.You can change this in the maxConcurrentRequests setting in the host.json file.

  • Aufgrund der Einschränkungen von .NET Core wurde die Unterstützung für F#-Skriptfunktionen (FSX) entfernt.Because of .NET core limitations, support for F# script (.fsx) functions has been removed. Kompilierte F#-Funktionen (FS) werden weiterhin unterstützt.Compiled F# functions (.fs) are still supported.

  • Das URL-Format von Event Grid-Triggerwebhooks wurde zu https://{app}/runtime/webhooks/{triggerName} geändert.The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

Migrieren einer lokal entwickelten AnwendungMigrating a locally developed application

Möglicherweise verfügen Sie über vorhandene Funktions-App-Projekte, die Sie lokal mit der Runtimeversion 1.x entwickelt haben.You may have existing function app projects that you developed locally using the version 1.x runtime. Um ein Upgrade auf Version 2.x durchführen zu können, müssen Sie ein lokales Funktions-App-Projekt mit Version 2.x erstellen und Ihren vorhandenen Code in die neue App portieren.To upgrade to version 2.x, you should create a local function app project against version 2.x and port your existing code into the new app. Sie könnten das vorhandene Projekt und den vorhandenen Code auch manuell aktualisieren – in einer Art „direktem Upgrade“.You could manually update the existing project and code, a sort of "in-place" upgrade. Allerdings gibt es eine Vielzahl weiterer Verbesserungen in Version 2.x gegenüber Version 1.x, die Sie dann auch noch anwenden müssten.However, there are a number of other improvements between version 1.x and version 2.x that you may still need to make. Beispielsweise wurde das Debuggingobjekt in C# von TraceWriter zu ILogger geändert.For example, in C# the debugging object was changed from TraceWriter to ILogger. Indem Sie ein neues Projekt mit Version 2.x erstellen, stehen Ihnen die aktualisierten Funktionen basierend auf den neuesten Vorlagen der Version 2.x direkt zur Verfügung.By creating a new version 2.x project, you start off with updated functions based on the latest version 2.x templates.

Visual Studio-RuntimeversionenVisual Studio runtime versions

In Visual Studio wählen Sie die Runtimeversion beim Erstellen eines Projekts aus.In Visual Studio, you select the runtime version when you create a project. Azure Functions-Tools für Visual Studio unterstützen beide Hauptversionen der Runtime.Azure Functions tools for Visual Studio supports both major runtime versions. Beim Debuggen und Veröffentlichen wird die richtige Version verwendet, basierend auf den Projekteinstellungen.The correct version is used when debugging and publishing based on project settings. Die Versionseinstellungen sind in der .csproj-Datei in den folgenden Einstellungen definiert:The version settings are defined in the .csproj file in the following properties:

Version 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
Version 2.xVersion 2.x
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>

Wenn Sie Ihr Projekt debuggen oder veröffentlichen, wird die richtige Version der Runtime verwendet.When you debug or publish your project, the correct version of the runtime is used.

Visual Studio Code und Azure Functions Core ToolsVS Code and Azure Functions Core Tools

Azure Functions Core Tools werden für die Entwicklung über die Befehlszeile und auch von der Azure Functions-Erweiterung für Visual Studio Code verwendet.Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. Um für Version 2.x zu entwickeln, installieren Sie Version 2.x der Core Tools.To develop against version 2.x, install version 2.x of the Core Tools. Für die Entwicklung für Version 1.x ist Version 1.x der Core Tools erforderlich.Version 1.x development requires version 1.x of the Core Tools. Weitere Informationen finden Sie unter Installieren der Azure Functions Core Tools.For more information, see Install the Azure Functions Core Tools.

Für die Visual Studio Code-Entwicklung müssen Sie möglicherweise auch die Benutzereinstellung für die azureFunctions.projectRuntime entsprechend der installierten Version der Tools aktualisieren.For Visual Studio Code development, you may also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. Diese Einstellung aktualisiert auch die Vorlagen und Sprachen, die während der Erstellung von Funktions-Apps verwendet werden.This setting also updates the templates and languages used during function app creation.

Ändern der Version von Apps in AzureChanging version of apps in Azure

Welche Version der Functions-Runtime von veröffentlichten Apps in Azure verwendet wird, wird durch die FUNCTIONS_EXTENSION_VERSION-Anwendungseinstellung bestimmt.The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. Der Wert ~2 gilt für die Runtimeversion 2.x, der Wert ~1 für die Version 1.x.A value of ~2 targets the version 2.x runtime and ~1 targets the version 1.x runtime. Ändern Sie diese Einstellung nicht unüberlegt, da sehr wahrscheinlich weitere Änderungen an App-Einstellungen sowie am Code in Ihren Funktionen erforderlich sind.Don't arbitrarily change this setting, because other app setting changes and code changes in your functions are likely required. Informationen zur empfohlenen Methode für die Migration Ihrer Funktions-App zu einer anderen Runtimeversion finden Sie unter Einstellen von Runtimeversionen von Azure Functions als Ziel.To learn about the recommended way to migrate your function app to a different runtime version, see How to target Azure Functions runtime versions.

BindungenBindings

Die Runtimeversion 2.x verwendet ein neues Modell für die Erweiterbarkeit von Bindungen, das folgende Vorteile bietet:The version 2.x runtime uses a new binding extensibility model that offers these advantages:

  • Unterstützung für Bindungserweiterungen von Drittanbietern.Support for third-party binding extensions.

  • Entkoppeln von Runtime und Bindungen.Decoupling of runtime and bindings. Mit dieser Änderung können Bindungserweiterungen versioniert und unabhängig freigegeben werden.This change allows binding extensions to be versioned and released independently. Sie können z.B. ein Upgrade auf eine Version einer Erweiterung durchführen, das auf einer neueren Version des zugrunde liegenden SDKs basiert.You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • Eine schlankere Ausführungsumgebung, in der nur die tatsächlich verwendeten Bindungen bekannt sind und von der Runtime geladen werden.A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

Mit Ausnahme von HTTP- und Timertriggern müssen alle Bindungen explizit zum Funktions-App-Projekt hinzugefügt oder im Portal registriert werden.With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. Weitere Informationen finden Sie unter Registrieren von Bindungserweiterungen.For more information, see Register binding extensions.

Die folgende Tabelle zeigt, welche Bindungen in den einzelnen Runtimeversionen unterstützt werden.The following table shows which bindings are supported in each runtime version.

Die folgende Tabelle zeigt die Bindungen, die in den beiden Hauptversionen der Azure Functions-Runtime unterstützt werden.The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

TypType 1.x1.x 2.x12.x1 TriggerTrigger EingabeInput OutputOutput
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
Externe Datei2External File2
Externe Tabelle2External Table2
HTTPHTTP
Microsoft Graph
Excel-Tabellen
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive-Dateien
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook-E-Mail
Microsoft Graph
Outlook email
Microsoft Graph
Ereignis
Microsoft Graph
Events
Microsoft Graph
Authentifizierungstoken
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
TabellenspeicherungTable storage
ZeitgeberTimer
TwilioTwilio
WebhooksWebhooks

1 In 2.x müssen alle Bindungen außer HTTP und Timer registriert sein.1 In 2.x, all bindings except HTTP and Timer must be registered. Siehe Registrieren von Bindungserweiterungen.See Register binding extensions.

2 Experimentell – keine Unterstützung und möglicherweise in Zukunft entfernt.2 Experimental — not supported and might be abandoned in the future.

Nächste SchritteNext steps

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources: