Novidades do .NET 7: suporte a Azure Functions + Isolated Process
Com o lançamento do .NET 7 temos também agora a possibilidade de desenvolvermos soluções serverless com esta versão, fazendo uso para isto de Azure Functions no modelo conhecido como Isolated Process. Esta foi inclusive uma das novidades anunciadas durante a edição 2022 do .NET Conf:
Neste artigo descreverei os passos necessários para a criação de Function Apps com o .NET 7, incluindo o deployment de uma aplicação serverless no Microsoft Azure.
Precisaremos inicialmente atualizar o Azure Functions Core Tools para sua versão mais recente. Utilizei para isto a seguinte instrução baseada no npm:
npm i -g azure-functions-core-tools
Em seguida criaremos uma Function App com o comando func init (lembrando que será assumido o nome do diretório como identificação do projeto). Aqui indicamos o uso de Isolated Process (parâmetro --worker-runtime), bem como do .NET 7 (parâmetro --target-framework):
func init --worker-runtime dotnet-isolated --target-framework net7.0
Com a instrução func new será criada então uma Function baseada em HttpTrigger e chamada ValorAtual:
Ao acessar o arquivo FunctionAppContagem.csproj no Visual Studio Code será possível observar que o projeto tomou por base o .NET 7:
Na listagem a seguir temos o conteúdo do arquivo FunctionAppContagem.csproj:
Já em Program.cs configurei uma dependência para o tipo Contador como Singleton:
Na próxima listagem temos a implementação do tipo Contador:
A classe ResultadorContador corresponde ao retorno produzido pela Function ValorAtual (contagem de acessos):
E chegamos à implementação da Function ValorAtual, com uma instância do tipo Contador sendo injetada a partir do construtor:
Este exemplo foi disponibilizado como um repositório no GitHub:
https://github.com/renatogroffe/DotNet7-AzureFunctions-HttpTrigger_ContagemAcessos
Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!
Para testes locais executei a aplicação por meio do comando func start:
Acessando o endpoint da Function ValorAtual serão produzidos resultados similares ao da imagem seguinte (já considerando o uso do .NET 7):
Ao criarmos uma nova Function App no Portal do Azure uma das opções possíveis será o .NET 7:
Para também testar a aplicação na nuvem realizei o deployment da mesma a partir do próprio Visual Studio Code:
Na imagem a seguir podemos visualizar um teste de acesso à Function App, após a publicação desta no Azure: