Diferenças entre o modelo de trabalho isolado e o modelo em processo para o .NET no Azure Functions

Há dois modelos de execução para funções do .NET:

Modelo de execução Descrição
Modelo de trabalho isolado O código de função é executado em um processo de trabalho do .NET separado. Use com versões com suporte do .NET e do .NET Framework. Para saber mais, confira Desenvolver funções de processo de trabalho isolado no .NET.
Modelo em processo Seu código de função é executado no mesmo processo que o processo de host do Functions. Dá suporte apenas a versões LTS (suporte de longo prazo) do .NET. Para saber mais, confira Desenvolver funções de biblioteca de classes do .NET.

Este artigo descreve o estado atual das diferenças funcionais e comportamentais entre os dois modelos. Para migrar do modelo em processo para o modelo de trabalho isolado, consulte Migrar os aplicativos .NET do modelo em processo para o modelo de trabalho isolado.

Tabela de comparação entre modelos de execução

Use a tabela a seguir para comparar as diferenças funcionais e de recursos entre os dois modelos:

Recurso/comportamento Modelo de trabalho isolado Modelo em processo3
Versões do .NET com suporte Versões LTS (suporte a longo prazo),
Versões de Suporte de Prazo Padrão (STS),
.NET Framework
Versões6 de Suporte a Longo Prazo (LTS).
Pacotes principais Microsoft.Azure.Functions.Worker
Microsoft.Azure.Functions.Worker.Sdk
Microsoft.NET.Sdk.Functions
Pacotes de extensão de associação Microsoft.Azure.Functions.Worker.Extensions.* Microsoft.Azure.WebJobs.Extensions.*
Funções duráveis Com suporte Com suporte
Tipos de modelo expostos por associações Tipos simples
Tipos serializáveis JSON
Matrizes/enumerações
Tipos de SDK de Serviço4
Tipos simples
Tipos JSON serializáveis
Matrizes/enumerações
Tipos de SDK de Serviço4
Tipos de modelo de gatilho HTTP HttpRequestData / HttpResponseData
HttpRequest / IActionResult (usando integração ASP.NET Core)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
Interações de associação de saída Retornar valores em um modelo expandido com:
- saídas únicas ou saídas múltiplas
– matrizes de saídas
Valores retornados (somente saída única),
out parâmetros,
IAsyncCollector
Associações imperativas1 Sem suporte - em vez disso, trabalhe diretamente com tipos de SDK Com suporte
Injeção de dependência Com suporte (modelo aprimorado consistente com o ecossistema do .NET) Com suporte
Middleware Com suporte Sem suporte
Registrando em log ILogger<T>/ILogger obtidos do FunctionContext ou por meio de injeção de dependência ILogger passado para a função
ILogger<T> por meio de injeção de dependência
Dependências do Application Insights Com suporte Com suporte
Tokens de cancelamento Com suporte Com suporte
Horários de inicialização a frio2 Otimizações configuráveis Otimizado
ReadyToRun Com suporte Com suporte

1 Quando você precisa interagir com um serviço usando parâmetros determinados em runtime, o uso de SDKs de serviço correspondentes diretamente é recomendado com associações imperativas. Os SDKs são menos detalhados, cobrem mais cenários e têm vantagens para fins de tratamento de erro e depuração. Essa recomendação se aplica a ambos os modelos.

2 Os horários de inicialização a frio podem ser afetados adicionalmente no Windows quando algumas versões prévias do .NET são usadas devido ao carregamento just-in-time das estruturas de versão prévia. Esse impacto se aplica aos modelos em processo e fora de processo, mas pode ser particularmente perceptível se comparado entre versões diferentes. Esse atraso para versões prévias não está presente nos planos do Linux.

3 Funções de script C# também são executadas em processo e usam as mesmas bibliotecas que as funções de biblioteca de classes em processo. Para obter mais informações, consulte a referência do desenvolvedor do script C# do Azure Functions (.csx).

4 Tipos de SDK de Serviço incluem tipos do SDK do Azure para .NET, como BlobClient.

5 Os tipos ASP.NET Core não têm suporte no .NET Framework.

6 O .NET 8 ainda não tem suporte no modelo em processo, embora esteja disponível no modelo de trabalho isolado. Para obter informações sobre planos do .NET 8, incluindo futuras opções para o modelo em processo, confira a postagem Atualização do roteiro do Azure Functions.

Versões com suporte

As versões runtime do Functions dão suporte a versões específicas do .NET. Saiba mais sobre as versões do Functions, confira Visão geral de versões do Azure Functions runtime. O suporte a uma versão depende de suas funções serem executadas em processo ou no processo de trabalho isolado.

Observação

Para saber como alterar a versão de runtime do Functions usada pelo aplicativo de funções, confira Exibir e atualizar a versão de runtime atual.

A tabela a seguir mostra o nível mais alto do .NET ou .NET Framework que pode ser usado com uma versão específica do Functions.

Versão do runtime do Functions Modelo de trabalho isolado Modelo em processo5
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 O .NET 7 chega ao fim do suporte oficial em 14 de maio de 2024.
2 O .NET 6 chega ao fim do suporte oficial em 12 de novembro de 2024.
3 O processo de build também requer o SDK do .NET. 4 O suporte termina para a versão 1.x do runtime do Azure Functions em 14 de setembro de 2026. Para obter mais informações, confira este comunicado de suporte. Para obter suporte completo contínuo, você deve migrar seus aplicativos para a versão 4.x.
5 O suporte termina para o modelo em processo em 10 de novembro de 2026. Para obter mais informações, confira este comunicado de suporte. Para obter suporte completo contínuo, você deve migrar seus aplicativos para o modelo de trabalho isolado.

Para receber as notícias mais recentes sobre as versões de Azure Functions, incluindo a remoção de versões secundárias específicas mais antigas, acompanhe os comunicados de Serviço de Aplicativo do Azure.

Próximas etapas