• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience
Contributor (MTAC)
• Mais de 15 anos de experiência na área de
Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET e do
.NET São Paulo
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
Agenda
• Dicas e truques
• Exemplos práticos
Docker + Variáveis de Ambiente
• Variáveis de ambiente podem
substituir itens de configuração
definidos no appSettings.json
• Evita-se assim a necessidade de
builds sucessivos devido a
mudanças de configurações
Kubernetes + Secrets + Configurações
• Secrets no Kubernetes também
podem substituir itens de
configuração definidos no
appSettings.json
Application Insights + Queries de um ORM
• Uso de telemetria para coleta
automatizada de dados
• Possibilidade de analisar queries e
outros comandos já executados a
partir de um ORM
Visual Studio 2019 – Debugging
• Novidades na execução de Console
Applications
• Data Breakpoints (apenas .NET Core 3.x no
momento)
• Debug Search
Escolhendo a versão utilizada pelo comando dotnet new
• Criando um novo arquivo global.json a partir de um diretório-
base será possível selecionar a versão do .NET Core empregada
na criação de um novo projeto
dotnet new globaljson --sdk-version <VERSÃO>
• Lista dos SDKs disponíveis:
dotnet --list-sdks
Escolhendo em que porta uma aplicação irá executar
• Alterando a porta para execução de uma
aplicação via dotnet run -> atributo
launchSettings.json (propriedade
applicationUrl)
• Alterando a porta para execução de uma
aplicação a partir do Visual Studio Code ->
arquivo launch.json (atributo
ASPNETCORE_URLS na seção env)
Azure App Configuration
• Gerenciamento centralizado de configurações de aplicações
• Alteração de configurações sem a necessidade de reiniciar uma
aplicação
Dynamic Data Masking
• Mascarar visualização de informações
sensíveis
• Presente desde a versão 2016
• Controle de acordo com permissões de
um usuário
• Extremamente útil na produção de
relatórios
Azure Key Vault
• Armazenamento de configurações
sensíveis
• Acesso a dados armazenados
mediante concessão de acesso
• Integração com Azure Active
Directory
Extension Methods e um código mais limpo na classe Startup
• Extensões permitem um código mais enxuto na
classe Startup, ocultando toda a complexidade de
um ajuste de configuração/funcionalidade
Consumir uma API protegida por tokens com Refit
• Solução mais simplificada para o consumo de
APIs REST, tendo compatibilidade com o .NET
Standard
Código Resiliente com Polly
• Biblioteca para a implementação de tratamentos
de falha de maneira descomplicada
Injeção de Dependências
• O ASP.NET Core conta desde as primeiras versões com um
mecanismo nativo de injeção de dependências
• Favorece Baixo Acoplamento
Azure Functions + Injeção de Dependências
• É também possível se valer deste mesmo
mecanismo de injeção de dependências com
Azure Functions
RabbitMQ + Azure Functions
• Possibilidade de uso de Azure Functions criando funções
para processamento de mensagens associadas a uma
fila/queue
GitHub Actions + App Service
• Rápida configuração de workflow/pipeline
para Continuous Integration/Continuos
Delivery
• Actions (conjunto de instruções) são a base
para a implementação
.NET Core 3.x - Novo provider de acesso a dados
• Package Microsoft.Data.SqlClient
• Suporte a novos recursos do SQL
Server (Always Encrypted, Data
Classification)
C# 8.0 + Using Declarations
• Alternativa para um código mais
enxuto
• Dispensa a necessidade de usings
encadeados
.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e Truques

.NET Core e ASP.NET Core: Dicas e Truques

  • 2.
    • Microsoft MostValuable Professional (MVP) • Multi-Plataform Technical Audience Contributor (MTAC) • Mais de 15 anos de experiência na área de Tecnologia • Autor Técnico e Palestrante • Um dos organizadores do Canal .NET e do .NET São Paulo Renato Groffe h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
  • 3.
    Renato Groffe -Contatos h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e / /renatogroffe /in/renatogroffe /canaldotnet /renatogroffe /canaldotnet /renatogroff
  • 4.
    Agenda • Dicas etruques • Exemplos práticos
  • 5.
    Docker + Variáveisde Ambiente • Variáveis de ambiente podem substituir itens de configuração definidos no appSettings.json • Evita-se assim a necessidade de builds sucessivos devido a mudanças de configurações
  • 6.
    Kubernetes + Secrets+ Configurações • Secrets no Kubernetes também podem substituir itens de configuração definidos no appSettings.json
  • 7.
    Application Insights +Queries de um ORM • Uso de telemetria para coleta automatizada de dados • Possibilidade de analisar queries e outros comandos já executados a partir de um ORM
  • 8.
    Visual Studio 2019– Debugging • Novidades na execução de Console Applications • Data Breakpoints (apenas .NET Core 3.x no momento) • Debug Search
  • 9.
    Escolhendo a versãoutilizada pelo comando dotnet new • Criando um novo arquivo global.json a partir de um diretório- base será possível selecionar a versão do .NET Core empregada na criação de um novo projeto dotnet new globaljson --sdk-version <VERSÃO> • Lista dos SDKs disponíveis: dotnet --list-sdks
  • 10.
    Escolhendo em queporta uma aplicação irá executar • Alterando a porta para execução de uma aplicação via dotnet run -> atributo launchSettings.json (propriedade applicationUrl) • Alterando a porta para execução de uma aplicação a partir do Visual Studio Code -> arquivo launch.json (atributo ASPNETCORE_URLS na seção env)
  • 11.
    Azure App Configuration •Gerenciamento centralizado de configurações de aplicações • Alteração de configurações sem a necessidade de reiniciar uma aplicação
  • 12.
    Dynamic Data Masking •Mascarar visualização de informações sensíveis • Presente desde a versão 2016 • Controle de acordo com permissões de um usuário • Extremamente útil na produção de relatórios
  • 13.
    Azure Key Vault •Armazenamento de configurações sensíveis • Acesso a dados armazenados mediante concessão de acesso • Integração com Azure Active Directory
  • 14.
    Extension Methods eum código mais limpo na classe Startup • Extensões permitem um código mais enxuto na classe Startup, ocultando toda a complexidade de um ajuste de configuração/funcionalidade
  • 15.
    Consumir uma APIprotegida por tokens com Refit • Solução mais simplificada para o consumo de APIs REST, tendo compatibilidade com o .NET Standard
  • 16.
    Código Resiliente comPolly • Biblioteca para a implementação de tratamentos de falha de maneira descomplicada
  • 17.
    Injeção de Dependências •O ASP.NET Core conta desde as primeiras versões com um mecanismo nativo de injeção de dependências • Favorece Baixo Acoplamento
  • 18.
    Azure Functions +Injeção de Dependências • É também possível se valer deste mesmo mecanismo de injeção de dependências com Azure Functions
  • 19.
    RabbitMQ + AzureFunctions • Possibilidade de uso de Azure Functions criando funções para processamento de mensagens associadas a uma fila/queue
  • 20.
    GitHub Actions +App Service • Rápida configuração de workflow/pipeline para Continuous Integration/Continuos Delivery • Actions (conjunto de instruções) são a base para a implementação
  • 21.
    .NET Core 3.x- Novo provider de acesso a dados • Package Microsoft.Data.SqlClient • Suporte a novos recursos do SQL Server (Always Encrypted, Data Classification)
  • 22.
    C# 8.0 +Using Declarations • Alternativa para um código mais enxuto • Dispensa a necessidade de usings encadeados