Diferencias entre el modelo de trabajo aislado y el modelo en proceso para .NET en Azure Functions

Hay dos modelos de ejecución para las funciones de .NET:

Modelo de ejecución Descripción
Modelo de trabajo aislado El código de función se ejecuta en un proceso de trabajo de .NET independiente. Se usa con versiones compatibles de .NET y .NET Framework. Para obtener más información, consulte Desarrollo de funciones de procesos de trabajo aislados en .NET.
Modelo de proceso El código de función se ejecuta en el mismo proceso que el proceso de host de Functions. Solo admite versiones de .NET de compatibilidad a largo plazo (LTS). Para obtener más información, consulte Desarrollo de funciones de la biblioteca de clases de .NET.

En este artículo se describe el estado actual de las diferencias funcionales y de comportamiento entre los dos modelos. Para migrar del modelo en proceso al modelo de trabajador aislado, consulte Migración de aplicaciones .NET del modelo en proceso al modelo de trabajador aislado.

Tabla comparativa del modelo de ejecución

Use la tabla siguiente para comparar las diferencias funcionales y de características entre los dos modelos:

Característica/comportamiento Modelo de trabajo aislado Modelo en proceso3
Versiones de .NET compatibles Versiones con soporte técnico de larga duración (LTS),
Versiones con soporte técnico de términos estándar (STS),
.NET Framework
Versiones con soporte técnico a largo plazo (LTS)6
Paquetes base Microsoft.Azure.Functions.Worker
Microsoft.Azure.Functions.Worker.Sdk
Microsoft.NET.Sdk.Functions
Paquetes de extensión de enlace Microsoft.Azure.Functions.Worker.Extensions.* Microsoft.Azure.WebJobs.Extensions.*
Funciones duraderas Compatible Compatible
Tipos de modelos expuestos mediante enlaces Tipos simples
Tipos serializables con JSON
Matrices o enumeraciones
Tipos de SDK de servicio4
Tipos simples
Tipos serializables con JSON
Matrices o enumeraciones
Tipos de SDK de servicio4
Tipos de modelos de desencadenadores HTTP HttpRequestData / HttpResponseData
HttpRequest / IActionResult (mediante la integración de ASP.NET Core)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
Interacción de enlaces de salida Valores devueltos en un modelo expandido con:
- una o varias salidas
- matrices de salidas
Valores devueltos (solo salida única),
out parámetros,
IAsyncCollector
Enlaces imperativos1 No compatible: en lugar de , trabaje con tipos de SDK directamente Compatible
Inserción de dependencia Compatible (modelo mejorado coherente con el ecosistema de .NET) Compatible
Software intermedio Compatible No compatible
Registro ILogger<T>/ILogger se obtiene de FunctionContext o mediante la inserción de dependencias ILogger se pasa a la función
ILogger<T> mediante inserción de dependencias
Dependencias de Application Insights Compatible Compatible
Tokens de cancelación Compatible Compatible
Tiempos de inicio en frío2 Optimizaciones configurables Optimizado
ReadyToRun Compatible Compatible

1 Cuando necesite interactuar con un servicio mediante parámetros determinados en tiempo de ejecución, se recomienda usar directamente los SDK de servicios correspondientes en lugar de los enlaces imperativos. Los SDK son menos detallados, cubren más escenarios y tienen ventajas para el control y la depuración de errores. Esta recomendación se aplica a ambos modelos.

2 Los tiempos de inicio de acceso esporádico pueden verse también afectados en Windows al usar algunas versiones preliminares de .NET debido a la carga Just-In-Time de los marcos de versión preliminar. Este impacto se aplica tanto a los modelos dentro del proceso como fuera de proceso, pero puede ser notable cuando se comparan diferentes versiones. Este retraso para las versiones preliminares no está presente en los planes de Linux.

3 Las funciones de script de C# también se ejecutan dentro del proceso y usan las mismas bibliotecas que las funciones de biblioteca de clases dentro del proceso. Para más información, consulte la Referencia para desarrolladores de scripts de C# de Azure Functions (.csx).

4 Los tipos de SDK de servicio incluyen tipos del SDK de Azure para .NET, como BlobClient.

5 tipos de ASP.NET Core no se admiten para .NET Framework.

6 .NET 8 aún no se admite en el modelo en proceso, aunque está disponible en el modelo de trabajo aislado. Para obtener información sobre los planes de .NET 8, incluidas las opciones futuras para el modelo dentro del proceso, consulte la publicación Actualización de la hoja de ruta de Azure Functions.

Versiones compatibles

Las versiones del tiempo de ejecución de Functions son compatibles con versiones específicas de .NET. Para obtener más información sobre las versiones de Functions, consulte Introducción a las versiones de tiempo de ejecución de Azure Functions. La compatibilidad con versiones depende de si las funciones se ejecutan en proceso o como proceso de trabajo aislado.

Nota

Para aprender a cambiar la versión del runtime de Functions que usa la aplicación de funciones, consulte la sesión Visualización y actualización de la versión actual del entorno de ejecución.

En la tabla siguiente, se muestra el nivel más alto de .NET o .NET Framework que se puede usar con una versión específica de Functions.

Versiones del entorno en tiempo de ejecución de Functions Modelo de trabajo aislado Modelo en proceso5
Functions 4.x .NET 8.0
.NET 7.01
.NET 6.02
.NET Framework 4.83
.NET 6.02
Functions 1.x4 N/D .NET Framework 4.8

1 .NET 7 llega al fin del soporte oficial el 14 de mayo de 2024.
2 .NET 6 llega al final del soporte oficial el 12 de noviembre de 2024.
3 El proceso de compilación también requiere el SDK de .NET. 4 La compatibilidad finaliza para la versión 1.x del runtime de Azure Functions el 14 de septiembre de 2026. Para más información, consulte este anuncio de soporte. Para seguir teniendo soporte completo, debería migrar sus aplicaciones a la versión 4.x.
5El soporte técnico finalizará para el modelo en proceso el 10 de noviembre de 2026. Para más información, consulte este anuncio de soporte. Para seguir teniendo soporte técnico completo, debería migrar sus aplicaciones al modelo de trabajo aislado.

Para obtener las últimas noticias sobre las versiones de Azure Functions, incluida la eliminación de versiones secundarias específicas anteriores, revise los anuncios de Azure App Service.

Pasos siguientes