.NET Core 3.x + Serverless: configuração, dicas e exemplos com Azure Functions 3.x

Renato Groffe
3 min readFeb 24, 2020

--

A Microsoft anunciou recentemente (Dezembro/2019) a disponibilidade da versão 3.0 das Azure Functions, alternativa para o desenvolvimento de soluções serverless dentro do Microsoft Azure. E qual o impacto disto para Desenvolvedores .NET?

Com este release agora é possível a implementação de aplicações baseadas em Azure Functions utilizando a versão o .NET Core 3.x. Projetos serverless poderão assim se beneficiar da nova versão da plataforma .NET, valendo-se de recursos como o novo serializer JSON e o novo provider para acesso a bases do SQL Server/Azure SQL.

E o que seria necessário para iniciarmos o desenvolvimento utilizando Azure Functions na versão 3.x?

Precisaremos instalar a versão 3 das Azure Functions Core Tools. No caso específico de ambientes Windows, este procedimento envolverá o uso do utilitário de linha de comando npm como indicado na instrução:

npm install -g azure-functions-core-tools@3

Na imagem a seguir é possível observar a execução deste comando via PowerShell em uma máquina de Desenvolvimento com Windows 10:

As instruções para a instalação da versão 3 das Azure Functions Core Tools em ambientes Linux e macOS podem ser encontradas no seguinte link:

Work with Azure Functions Core Tools | Microsoft Docs

Para aqueles habituados com Azure Functions 2.x, na versão 3.x o desenvolvimento de Function Apps acontecerá de maneira quase idêntica (devendo-se levar em contas as novidades do .NET Core 3.x). No caso do Visual Studio Code, será necessário o uso da extensão já existente para implementação de Azure Functions.

Os artigos a seguir trazem detalhes do desenvolvimento de Azure Functions a partir do Visual Studio Code:

.NET Core + Serverless: implementando jobs com Azure Functions e o VS Code

.NET Core + Serverless: publicando uma Azure Function via VS Code

No Portal do Azure já há uma indicação que novas Function Apps serão criadas por default na versão 3.x:

Ao criar um novo projeto baseado em Azure Functions 3.x o código do arquivo .csproj já estará referenciando o .NET Core 3.x como indicado na seguinte listagem:

Na listagem a seguir temos exemplos de uso de algumas novidades do .NET Core 3.x:

  • O primeiro exemplo envolve o novo serializer JSON que integra o .NET Core 3.x. Conforme podemos observar, o método genérico Deserialize da classe JsonSerializer (namespace System.Text.Json) foi acionado na linha 17;
  • Temos ainda a utilização do novo provider para SQL Server/Azure SQL, através de uma instância da classe SqlConnection (definida agora no namespace Microsoft.Data.SqlClient) a partir da linha 22 (em uso conjunto com a biblioteca Dapper).

O projeto no qual esta Queue Trigger foi implementada já se encontra disponível no GitHub:

.NET Core + Azure Functions 3.x + Queue Storage + Azure SQL/SQL Server + Queue Trigger + HTTP Trigger

Outros exemplos envolvendo a utilização de Azure Functions 3.x, .NET Core e diversas outras tecnologias estão listados nos links a seguir:

.NET Core + Azure Functions 3.x + Azure SQL/SQL Server + Timer Trigger

.NET Core + Azure Functions 3.x + Injeção de Dependências

.NET Core + Azure Functions 3.x + Table Storage + Timer Trigger + Monitoramento Sites

.NET Core + Azure Functions 3.x + Azure SQL/SQL Server + Timer Trigger + Monitoramento Sites

.NET Core + Azure Functions 3.x + Azure SQL/SQL Server + Typed Client + Timer Trigger + Monitoramento Sites

E aproveito este espaço também para um convite…

Que tal aprender mais sobre Docker, Kubernetes e a implementação de soluções baseadas em containers utilizando o Microsoft Azure, em um workshop que acontecerá durante um sábado (dia 04/04/2020) em São Paulo Capital e implementando um case na prática? Acesse então o link a seguir para efetuar sua inscrição com um desconto: http://bit.ly/anp-docker-blog-groffe

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet