Introducción a las versiones de tiempo de ejecución de Azure FunctionsAzure Functions runtime versions overview

Hay dos versiones principales del entorno de ejecución de Azure Functions: 1.x y 2.x.There are two major versions of the Azure Functions runtime: 1.x and 2.x. La versión actual (donde se están realizando mejoras y trabajos en características nuevas) es la 2.x., aunque para los escenarios de producción se admiten las dos.The current version where new feature work and improvements are being made is 2.x, though both are supported for production scenarios. A continuación se detallan algunas de las diferencias entre ambas versiones y la manera de crear cada una de ellas y actualizar de 1.x a 2.x.The following details some of the differences between the two, how you can create each version, and upgrade from 1.x to 2.x.

Nota

Este artículo se refiere al servicio en la nube de Azure Functions.This article refers to the cloud service Azure Functions. Para información acerca del producto en versión preliminar que le permite ejecutar Azure Functions de forma local, consulte la Introducción a Azure Functions Runtime.For information about the preview product that lets you run Azure Functions on-premises, see the Azure Functions Runtime Overview.

Desarrollo multiplataformaCross-platform development

La versión 2.x del entorno de ejecución funciona en .NET Core 2, lo cual permite su ejecución en todas las plataformas que admita .NET Core, incluidos macOS y 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. La ejecución en .NET Core hace posible escenarios de desarrollo y hospedaje multiplataforma.Running on .NET Core enables cross-platform development and hosting scenarios.

En cambio, la versión 1.x del entorno de ejecución admite solo desarrollo y hospedaje en Azure Portal o en equipos Windows.By comparison, the version 1.x runtime only supports development and hosting in the Azure portal or on Windows computers.

LanguagesLanguages

La versión 2.x del entorno de ejecución emplea un nuevo modelo de extensibilidad de lenguajes.The version 2.x runtime uses a new language extensibility model. En la versión 2.x, todas las funciones de una aplicación de función deben compartir el mismo lenguaje.In version 2.x, all functions in a function app must share the same language. El lenguaje de las funciones en una aplicación de función se elige al crear la aplicación.The language of functions in a function app is chosen when creating the app.

Los lenguajes experimentales de la versión 1.x de Azure Functions no se actualizarán para usar el nuevo modelo, así que no se admiten en 2.x.Azure Functions 1.x experimental languages won't be updated to use the new model, so they aren't supported in 2.x. En la siguiente tabla se indican los lenguajes de programación que se admiten actualmente en cada versión del entorno de ejecución.The following table indicates which programming languages are currently supported in each runtime version.

IdiomaLanguage 1.x1.x 2.x2.x
C#C# Disponibilidad general (.NET Framework 4.7)GA (.NET Framework 4.7) Disponibilidad general (.NET Core 2.2)GA (.NET Core 2.2)
JavaScriptJavaScript Disponibilidad general (nodo 6)GA (Node 6) Disponibilidad general (nodos 8 y 10)GA (Node 8 & 10)
F#F# Disponibilidad general (.NET Framework 4.7)GA (.NET Framework 4.7) Disponibilidad general (.NET Core 2.2)GA (.NET Core 2.2)
JavaJava N/DN/A Disponibilidad general (Java 8)GA (Java 8)
PowerShellPowerShell ExperimentalExperimental Versión preliminar (PowerShell Core 6)Preview (PowerShell Core 6)
PythonPython ExperimentalExperimental GA (Python 3.6.x)GA (Python 3.6.x)
TypeScriptTypeScript ExperimentalExperimental Disponibilidad general (se admite mediante la transpilación a JavaScript)GA (supported through transpiling to JavaScript)
BashBash ExperimentalExperimental N/DN/A
Batch (.cmd, .bat)Batch (.cmd, .bat) ExperimentalExperimental N/DN/A
PHPPHP ExperimentalExperimental N/DN/A

Para información sobre los cambios planeados en la compatibilidad de lenguaje, consulte Azure roadmap.For information about planned changes to language support, see Azure roadmap.

Para más información, consulte Lenguajes admitidos.For more information, see Supported languages.

Ejecución en la versión 1.xRun on version 1.x

De forma predeterminada, las aplicaciones de función que se crean en Azure Portal se establecen en la versión 2.x.By default, function apps created in the Azure portal are set to version 2.x. Cuando sea posible, debe usar esta versión del entorno de ejecución, ya que en ella se invierte en nuevas características.When possible, you should use this runtime version, where new feature investments are being made. Si lo necesita, puede seguir ejecutando una aplicación de función en la versión 1.x del entorno de ejecución.If you need to, you can still run a function app on the version 1.x runtime. Solo puede cambiar la versión del entorno de ejecución después de crear la aplicación de función, pero antes de agregar funciones.You can only change the runtime version after you create your function app but before you add any functions. Para información sobre cómo anclar la versión 1.x del entorno de ejecución, consulte Visualización y actualización de la versión actual del entorno de ejecución.To learn how to pin the runtime version to 1.x, see View and update the current runtime version.

Migración de 1.x a 2.xMigrating from 1.x to 2.x

Puede migrar una aplicación existente escrita para usar la versión 1.x del entorno de ejecución para que use 2.x.You may choose to migrate an existing app written to use the version 1.x runtime to instead use version 2.x. La mayoría de los cambios que debe realizar están relacionados con cambios del entorno de ejecución del lenguaje, como en la API de C#, de .NET Framework 4.7 y .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. Deberá asegurarse de que el código y las bibliotecas son compatibles con la versión del entorno de ejecución del lenguaje que utilice.You'll also need to make sure your code and libraries are compatible with the language runtime you choose. Finalmente, asegúrese de anotar los cambios en el desencadenador, los enlaces y las características que se resaltan a continuación.Finally, be sure to note any changes in trigger, bindings, and features highlighted below. Para los mejores resultados de migración, debe crear una nueva aplicación de función para la versión 2.x y enrutar el código existente en 1.x a esta nueva aplicación.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.

Cambio en los desencadenadores y los enlacesChanges in triggers and bindings

La versión 2.x requiere la instalación de extensiones para desencadenadores y enlaces específicos que usan las funciones de la aplicación.Version 2.x requires you to install the extensions for specific triggers and bindings used by the functions in your app. La única excepción son los desencadenadores HTTP y el temporizador, que no requieren extensión.The only exception for this HTTP and timer triggers, which don't require an extension. Para más información, consulte la sección sobre Registro e instalación de extensiones de enlace.For more information, see Register and install binding extensions.

También ha habido algunos cambios en function.json o los atributos de la función de una versión a otra.There have also been a few changes in the function.json or attributes of the function between versions. Por ejemplo, la propiedad path del centro de eventos es ahora eventHubName.For example, the Event Hub path property is now eventHubName. Consulte la tabla de enlaces existentes para vínculos a la documentación de cada enlace.See the existing binding table for links to documentation for each binding.

Cambios en las características y la funcionalidadChanges in features and functionality

En la nueva versión también se han eliminado, actualizado o reemplazado algunas características.A few features that have also been removed, updated, or replaced in the new version. En esta sección se describen los cambios que se observan en la versión 2.x después de haber utilizado la versión 1.x.This section details the changes you see in version 2.x after having used version 1.x.

En la versión 2.x se han realizado los siguientes cambios:In version 2.x, the following changes were made:

  • Las claves para llamar a los puntos de conexión HTTP siempre se almacenan cifradas en Azure Blob Storage.Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. En la versión 1.x, se almacenaban en Azure File Storage de manera predeterminada.In version 1.x, keys were stored in Azure File storage be default. Al actualizar una aplicación de la versión 1.x a la versión 2.x, los secretos existentes que se encuentran en el almacenamiento de archivos se restablecen.When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • La versión 2.x del entorno de ejecución no incluye compatibilidad integrada con proveedores de webhooks.The version 2.x runtime doesn't include built-in support for webhook providers. Este cambio se realizó para mejorar el rendimiento.This change was made to improve performance. Todavía puede usar desencadenadores HTTP como puntos de conexión para los webhooks.You can still use HTTP triggers as endpoints for webhooks.

  • El archivo de configuración de host (host.json) debe estar vacío o tener la cadena "version": "2.0".The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • Para mejorar la supervisión, el panel de WebJobs del portal, que usaba la configuración AzureWebJobsDashboard se reemplaza por Azure Application Insights, que usa la configuración APPINSIGHTS_INSTRUMENTATIONKEY.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. Para más información, consulte Supervisión de Azure Functions.For more information, see Monitor Azure Functions.

  • Todas las funciones de una aplicación de función deben compartir el mismo lenguaje.All functions in a function app must share the same language. Al crear una aplicación de función, debe elegir una pila del entorno de ejecución para la aplicación.When you create a function app, you must choose a runtime stack for the app. La pila del entorno de ejecución se especifica con el valor FUNCTIONS_WORKER_RUNTIME en la configuración de la aplicación.The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. Este requisito se agregó para mejorar el tiempo de inicio y la superficie de memoria.This requirement was added to improve footprint and startup time. Al desarrollar localmente, también debe incluir esta configuración en el archivo local.settings.json.When developing locally, you must also include this setting in the local.settings.json file.

  • El tiempo de espera predeterminado para las funciones en un plan de App Service ha cambiado a 30 minutos.The default timeout for functions in an App Service plan is changed to 30 minutes. Puede cambiar manualmente el tiempo de espera de vuelta a ilimitado mediante la configuración functionTimeout de host.json.You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • Se implementan de forma predeterminada limitaciones de simultaneidad HTTP para las funciones del plan de consumo, cuyo valor predeterminado es de 100 solicitudes simultáneas por instancia.HTTP concurrency throttles are implemented by default for consumption plan functions, with a default of 100 concurrent requests per instance. Puede cambiar esto en la configuración maxConcurrentRequests del archivo host.json.You can change this in the maxConcurrentRequests setting in the host.json file.

  • A causa de las limitaciones de .NET Core, se ha eliminado la compatibilidad con las funciones de script (.fsx) de F#.Because of .NET core limitations, support for F# script (.fsx) functions has been removed. Todavía se admiten las funciones compiladas de F# (.fs).Compiled F# functions (.fs) are still supported.

  • El formato de dirección URL de los webhooks de desencadenador de Event Grid ha cambiado a https://{app}/runtime/webhooks/{triggerName}.The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

Migración de una aplicación desarrollada de forma localMigrating a locally developed application

Puede tener proyectos de aplicación de función existentes que haya desarrollado de forma local con la versión 1.x. del entorno de ejecución.You may have existing function app projects that you developed locally using the version 1.x runtime. Para actualizar a la versión 2.x, debe crear un proyecto de aplicación de función local con la versión 2.x y enrutar el código existente a la nueva aplicación.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. Puede actualizar manualmente el proyecto y el código existente, una especie de actualización "local".You could manually update the existing project and code, a sort of "in-place" upgrade. Sin embargo, hay otras mejoras de la versión 1.x a la 2.x que todavía tendrá que hacer.However, there are a number of other improvements between version 1.x and version 2.x that you may still need to make. Por ejemplo, en C# se modificó el objeto de depuración de TraceWriter a ILogger.For example, in C# the debugging object was changed from TraceWriter to ILogger. Al crear un nuevo proyecto con la versión 2.x, se empieza por las funciones actualizadas en función de las plantillas más recientes de la versión 2.x.By creating a new version 2.x project, you start off with updated functions based on the latest version 2.x templates.

Versiones de Runtime en Visual StudioVisual Studio runtime versions

En Visual Studio se selecciona la versión del entorno de ejecución al crear un proyecto.In Visual Studio, you select the runtime version when you create a project. Las herramientas de Azure Functions para Visual Studio son compatibles con las dos versiones principales del entorno de ejecución.Azure Functions tools for Visual Studio supports both major runtime versions. Se usa la versión correcta al depurar y publicar en función de configuración del proyecto.The correct version is used when debugging and publishing based on project settings. La configuración de la versión se define en el archivo .csproj en las siguientes propiedades:The version settings are defined in the .csproj file in the following properties:

Versión 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
Versión 2.xVersion 2.x
<TargetFramework>netcoreapp2.2</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>

Al depurar o publicar el proyecto, se usa la versión correcta del entorno de ejecución.When you debug or publish your project, the correct version of the runtime is used.

VS Code y Azure Functions Core ToolsVS Code and Azure Functions Core Tools

Azure Functions Core Tools se usa para el desarrollo de la línea de comandos, pero también lo usa la extensión de Azure Functions para Visual Studio Code.Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. Para desarrollar con la versión 2.x, instale la versión 2.x de Core Tools.To develop against version 2.x, install version 2.x of the Core Tools. El desarrollo con la versión 1.x requiere la versión 1.x de Core Tools.Version 1.x development requires version 1.x of the Core Tools. Para más información, consulte Instalación de Azure Functions Core Tools.For more information, see Install the Azure Functions Core Tools.

Para el desarrollo en Visual Studio Code es posible que deba actualizar la configuración de usuario en azureFunctions.projectRuntime para que coincida con la versión de las herramientas instaladas.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. Esta configuración también actualiza las plantillas y los lenguajes utilizados durante la creación de la aplicación de función.This setting also updates the templates and languages used during function app creation.

Cambio de la versión de las aplicaciones en AzureChanging version of apps in Azure

La versión del sistema en ejecución de Functions que usan las aplicaciones publicadas en Azure viene determinada por la configuración de la aplicación FUNCTIONS_EXTENSION_VERSION.The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. El valor ~2 es para la versión 2.x del entorno de ejecución y ~1, para 1.x.A value of ~2 targets the version 2.x runtime and ~1 targets the version 1.x runtime. No cambie esta configuración sin motivo, ya que puede requerir otros cambios de configuración de la aplicación y de código en las funciones.Don't arbitrarily change this setting, because other app setting changes and code changes in your functions are likely required. Para información acerca de la manera recomendada de migrar la aplicación de función a una versión diferente del entorno de ejecución, consulte Cómo seleccionar un destino para versiones de Azure Functions Runtime.To learn about the recommended way to migrate your function app to a different runtime version, see How to target Azure Functions runtime versions.

EnlacesBindings

La versión 2.x del entorno de ejecución usa un nuevo modelo de extensibilidad de enlaces que ofrece estas ventajas:The version 2.x runtime uses a new binding extensibility model that offers these advantages:

  • Compatibilidad con extensiones de enlace de terceros.Support for third-party binding extensions.

  • Desacoplamiento de tiempo de ejecución y enlaces.Decoupling of runtime and bindings. Este cambio permite el control de versiones y la publicación de las extensiones de enlace de forma independiente.This change allows binding extensions to be versioned and released independently. Por ejemplo, puede elegir actualizar a una versión de una extensión que se basa en una versión más reciente de un SDK subyacente.You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • Un entorno de ejecución más ligero, donde solo se conocen y se cargan en tiempo de ejecución los enlaces que están en uso.A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

A excepción de los desencadenadores HTTP y el temporizador, todos los enlaces deben agregarse explícitamente al proyecto de aplicación de función o registrarse en el portal.With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. Para más información, consulte Registro de extensiones de enlace.For more information, see Register binding extensions.

En la siguiente tabla se indica qué enlaces se admiten en cada versión del entorno de ejecución.The following table shows which bindings are supported in each runtime version.

En esta tabla se muestran los enlaces que son compatibles con las dos versiones principales del entorno de ejecución de Azure Functions:This table shows the bindings that are supported in the two major versions of the Azure Functions runtime:

typeType 1.x1.x 2.x12.x1 DesencadenadorTrigger EntradaInput OutputOutput
Blob StorageBlob storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP y webhooksHTTP & webhooks
Microsoft Graph
Tablas de Excel
Microsoft Graph
Excel tables
Microsoft Graph
Archivos de OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
Correo electrónico de Outlook
Microsoft Graph
Outlook email
Eventos de
Microsoft Graph
Microsoft Graph
events
Microsoft Graph
Tokens de autenticación
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Centros de notificacionesNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table storageTable storage
TemporizadorTimer
TwilioTwilio

1 En 2.x, se deben registrar todos los enlaces, excepto HTTP y el temporizador.1 In 2.x, all bindings except HTTP and Timer must be registered. Consulte Registro de extensiones de enlace.See Register binding extensions.

Duración del tiempo de espera de una aplicación de funciónFunction app timeout duration

La duración del tiempo de espera de una aplicación de función se define mediante la propiedad functionTimeout en el archivo de proyecto host.json.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. En la tabla siguiente se muestran los valores predeterminados y máximos en minutos para ambos planes y en ambas versiones en tiempo de ejecución:The following table shows the default and maximum values in minutes for both plans and in both runtime versions:

PlanPlan Versión en tiempo de ejecuciónRuntime Version Valor predeterminadoDefault MáximaMaximum
ConsumoConsumption 1.x1.x 55 1010
ConsumoConsumption 2.x2.x 55 1010
App ServiceApp Service 1.x1.x IlimitadoUnlimited IlimitadoUnlimited
App ServiceApp Service 2.x2.x 3030 IlimitadoUnlimited

Nota

Independientemente de la configuración del tiempo de espera de la aplicación de función, 230 segundos es la cantidad de tiempo máxima que una función desencadenada por HTTP puede tardar en responder a una solicitud.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. Esto se debe al tiempo de espera de inactividad predeterminado de Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. Para tiempos de procesamiento más largos, considere la posibilidad de usar el patrón asincrónico de Durable Functions o aplazar el trabajo real y devolver una respuesta inmediata.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

Pasos siguientesNext steps

Para obtener más información, consulte los siguientes recursos:For more information, see the following resources: