O documento apresenta como construir uma API profissional em .NET 7 usando Minimal APIs. Ele discute 8 melhorias para a API: 1) organização dos endpoints em classes separadas; 2) uso de Route Groups; 3) configurações personalizadas; 4) injeção de dependência; 5) implementação de logs; 6) health checks; 7) cache de saída; e 8) limitação de taxa de requisição. O documento fornece exemplos de código para cada melhoria e conclui com referências para aprender mais.
O documento descreve o framework CakePHP, incluindo suas vantagens, requisitos, instalação e configuração. O autor também apresenta um exemplo de aplicação para empréstimos de livros entre professores e alunos utilizando o CakePHP.
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
O documento descreve Spring Boot, um framework Java que permite alta produtividade no desenvolvimento de aplicações. Spring Boot utiliza convenções para configuração automática e elimina a necessidade de XML, permitindo foco na lógica de negócio. O documento também explica como construir uma aplicação simples de lista de convidados usando Spring Boot e suas dependências.
O documento resume as principais características do framework Easy Framework: 1) É um framework MVC para PHP que facilita a construção de aplicações robustas e seguras; 2) Utiliza padrões como ORM e permite fácil integração com bancos de dados; 3) Fornece recursos como cache, segurança, internacionalização e suporte a aplicações RESTful.
O documento discute a ferramenta Cypress.io para automatizar testes de ponta a ponta. Cypress.io é uma ferramenta moderna, simples e eficaz para desenvolver testes E2E que simulam o ambiente real de aplicações. A ferramenta permite escrever testes rapidamente em JavaScript e oferece recursos como execução de testes no mesmo ciclo da aplicação.
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
O documento discute conceitos de front-end como MVC, MVP, MVVM e AngularJS. Explica que MVC separa a interface do usuário em Model, View e Controller, enquanto MVP usa Presenter no lugar de Controller. MVVM usa ViewModel para manter a View e Model sincronizados. AngularJS usa MVW, onde qualquer padrão pode ser usado.
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento introduz um tutorial sobre como desenvolver um site com Codeigniter. O autor explica que é novo em PHP, programação e MVC, mas decidiu compartilhar sua experiência para ajudar outros iniciantes. Ele estrutura o site com pastas separadas para aplicação, sistema e administração, e define convenções de nomenclatura para models, controllers e views.
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
O documento descreve o framework CakePHP, incluindo suas vantagens, requisitos, instalação e configuração. O autor também apresenta um exemplo de aplicação para empréstimos de livros entre professores e alunos utilizando o CakePHP.
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
O documento descreve Spring Boot, um framework Java que permite alta produtividade no desenvolvimento de aplicações. Spring Boot utiliza convenções para configuração automática e elimina a necessidade de XML, permitindo foco na lógica de negócio. O documento também explica como construir uma aplicação simples de lista de convidados usando Spring Boot e suas dependências.
O documento resume as principais características do framework Easy Framework: 1) É um framework MVC para PHP que facilita a construção de aplicações robustas e seguras; 2) Utiliza padrões como ORM e permite fácil integração com bancos de dados; 3) Fornece recursos como cache, segurança, internacionalização e suporte a aplicações RESTful.
O documento discute a ferramenta Cypress.io para automatizar testes de ponta a ponta. Cypress.io é uma ferramenta moderna, simples e eficaz para desenvolver testes E2E que simulam o ambiente real de aplicações. A ferramenta permite escrever testes rapidamente em JavaScript e oferece recursos como execução de testes no mesmo ciclo da aplicação.
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
O documento discute conceitos de front-end como MVC, MVP, MVVM e AngularJS. Explica que MVC separa a interface do usuário em Model, View e Controller, enquanto MVP usa Presenter no lugar de Controller. MVVM usa ViewModel para manter a View e Model sincronizados. AngularJS usa MVW, onde qualquer padrão pode ser usado.
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento introduz um tutorial sobre como desenvolver um site com Codeigniter. O autor explica que é novo em PHP, programação e MVC, mas decidiu compartilhar sua experiência para ajudar outros iniciantes. Ele estrutura o site com pastas separadas para aplicação, sistema e administração, e define convenções de nomenclatura para models, controllers e views.
O documento descreve como testar uma API REST chamada Mollom API utilizando Maven e Cucumber. Ele explica como encapsular as chamadas para a API usando um conceito similar ao Page Object e como implementar os testes em Cucumber com exemplos de cenários e passos.
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
O documento resume as principais novidades da linguagem Visual Basic 2010, incluindo: (1) co-evolução com C# para receber novos recursos simultaneamente; (2) direcionamento da evolução da linguagem por Anders Hejlsberg; (3) recursos que melhoram a produtividade como implicit line continuation, auto-implemented properties e collection initializer; (4) suporte a lambda expressions, array literals e melhorias em parâmetros opcionais.
O documento descreve os principais conceitos do framework Spring, incluindo Inversão de Controle e Injeção de Dependência. O Spring permite definir as dependências entre classes de uma aplicação Java através de um arquivo de configuração XML, facilitando o desenvolvimento de aplicações orientadas a objetos com baixo acoplamento entre classes.
Trabalhando Análise Qualitativa em seu Aplicativo AndroidVinícius Thiengo
SDKs de análise de dados como o AppSee fornecem análises quantitativas e qualitativas para ajudar desenvolvedores a melhorar aplicativos no longo prazo. A análise qualitativa usa gravações de tela para fornecer insights sobre onde os usuários abandonam fluxos e como melhorar a experiência. O AppSee oferece um plano gratuito e requer apenas uma linha de código para fornecer esses benefícios aos desenvolvedores.
“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler
Integração contínua - Prática de desenvolvimentoMario Mendonça
Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.
O documento discute integração contínua, incluindo o que é, por que usar, ferramentas, testes, build, servidor de integração contínua e deploy. A integração contínua envolve integrar e testar código frequentemente para encontrar e corrigir bugs rapidamente e entregar atualizações de software de forma rápida e frequente. Ferramentas como Jenkins automatizam o processo de integração contínua.
1. O documento descreve uma demonstração técnica de um projeto universitário desenvolvido por estudantes utilizando várias tecnologias como PHP, MySQL, CSS, JavaScript e Google Maps.
2. A aplicação está alojada em um servidor externo e comunica com uma base de dados criada no MySQL Workbench.
3. A demonstração técnica mostra o funcionamento do registro de usuários, streaming de vídeo, mapa e calendário.
1) O documento descreve uma demonstração técnica de um projeto universitário desenvolvido por estudantes utilizando várias tecnologias da web.
2) Foi criado um protótipo de site com arquitetura server-side em PHP e banco de dados MySQL hospedado em servidor externo.
3) A demonstração mostrou funcionalidades como login de usuário, streaming de vídeo, mapa e calendário utilizando tecnologias como PHP, CSS, JavaScript e API do Google Maps.
Preparar o ambiente para desenvolvimento angularNize Costa
O documento explica os passos para configurar o ambiente de desenvolvimento Angular 4 com TypeScript, incluindo a instalação do Node.js, NPM e Angular CLI. Também mostra como criar um projeto Angular usando o comando "ng new" e iniciar o servidor local com "ng serve".
Produtividade infinito e além com We.jsAlberto Souza
O documento discute ferramentas para aumentar a produtividade no desenvolvimento de aplicações web usando o framework We.js, incluindo generators para gerar partes da aplicação, o padrão MVC e diferentes formatos de resposta como JSON e HTML.
Web services permitem a integração e comunicação entre aplicações diferentes, facilitando a troca de informações entre sistemas. Eles funcionam com requisições HTTP e respostas XML, sendo implementados usando frameworks como Apache Axis em Java. O documento explica o que são web services, como funcionam, instalação e configuração do Apache Tomcat e Axis, e exemplos de criação de um web service simples em Java.
1) O documento descreve uma aula sobre desenvolvimento web com Angular, incluindo a instalação das ferramentas necessárias e a criação de um projeto Angular simples para gerenciar listas de tarefas.
2) É apresentado um modelo de dados para armazenar as tarefas, um template HTML para exibir os dados e um componente para conectar o modelo ao template.
3) O fluxo básico de execução de uma aplicação Angular é explicado, ligando o bootstrap, componentes, templates e data binding.
Slide 02 introdução ao code igniter, utilização do bootstrap Raniere de Lima
O documento apresenta uma introdução ao framework PHP CodeIgniter e ao framework front-end Bootstrap. Descreve as principais características e funcionalidades de ambos, incluindo exemplos de uso do CodeIgniter e instruções para download de ambos os frameworks.
O Visual Studio Summit 2016 é o maior evento sobre Visual Studio realizado no Brasil que está chegando a 5ª edição voltado para desenvolvedores de software que tem o objetivo de promover networking, apresentar tendências e principais estratégias atuais ligadas ao desenvolvimento de software na plataforma Microsoft usando Visual Studio, Azure e mobilidade. Durante o Keynote Ramon Durães abordou o tema transformação digital e DevOps.
Este documento descreve um curso de formação para desenvolvedores .NET 4.0, abordando tópicos como ASP.NET, C#, Visual Studio, Windows Forms, LINQ, MVC e relatórios com CrystalReports. O curso tem duração de 160 horas e inclui disciplinas como orientação a objetos, programação web, bancos de dados e padrões .NET avançados.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
O documento discute tendências e dicas para o desenvolvimento de software. Ele aborda tópicos como por que desenvolver software é difícil, motivos de falha em projetos, linguagens populares, boas práticas como teste e integração contínua, metodologias ágeis, tendências como computação em nuvem e NoSQL e por fim dicas para desenvolvedores.
1) A palestra apresentará o uso de Docker no desenvolvimento .NET, incluindo como criar imagens e contêineres para aplicações .NET e como orquestrá-los com Docker Compose.
2) O palestrante Marcio Nizzola explicará o que é Docker e como funciona a virtualização de contêineres, em seguida demonstrará a criação de uma aplicação .NET usando Docker.
3) A aplicação .NET demonstrará o uso de contêineres Docker para hospedar bancos de dados, filas de mensagens e a própria aplicação .
O documento resume uma palestra sobre o uso de containers Docker no desenvolvimento .NET. A palestra inclui uma introdução ao Docker e como ele é usado, uma demonstração de uma aplicação .NET rodando em containers Docker e questões frequentes sobre Docker.
Mais conteúdo relacionado
Semelhante a VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET 7 e Minimal Api
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
O documento resume as principais novidades da linguagem Visual Basic 2010, incluindo: (1) co-evolução com C# para receber novos recursos simultaneamente; (2) direcionamento da evolução da linguagem por Anders Hejlsberg; (3) recursos que melhoram a produtividade como implicit line continuation, auto-implemented properties e collection initializer; (4) suporte a lambda expressions, array literals e melhorias em parâmetros opcionais.
O documento descreve os principais conceitos do framework Spring, incluindo Inversão de Controle e Injeção de Dependência. O Spring permite definir as dependências entre classes de uma aplicação Java através de um arquivo de configuração XML, facilitando o desenvolvimento de aplicações orientadas a objetos com baixo acoplamento entre classes.
Trabalhando Análise Qualitativa em seu Aplicativo AndroidVinícius Thiengo
SDKs de análise de dados como o AppSee fornecem análises quantitativas e qualitativas para ajudar desenvolvedores a melhorar aplicativos no longo prazo. A análise qualitativa usa gravações de tela para fornecer insights sobre onde os usuários abandonam fluxos e como melhorar a experiência. O AppSee oferece um plano gratuito e requer apenas uma linha de código para fornecer esses benefícios aos desenvolvedores.
“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler
Integração contínua - Prática de desenvolvimentoMario Mendonça
Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.
O documento discute integração contínua, incluindo o que é, por que usar, ferramentas, testes, build, servidor de integração contínua e deploy. A integração contínua envolve integrar e testar código frequentemente para encontrar e corrigir bugs rapidamente e entregar atualizações de software de forma rápida e frequente. Ferramentas como Jenkins automatizam o processo de integração contínua.
1. O documento descreve uma demonstração técnica de um projeto universitário desenvolvido por estudantes utilizando várias tecnologias como PHP, MySQL, CSS, JavaScript e Google Maps.
2. A aplicação está alojada em um servidor externo e comunica com uma base de dados criada no MySQL Workbench.
3. A demonstração técnica mostra o funcionamento do registro de usuários, streaming de vídeo, mapa e calendário.
1) O documento descreve uma demonstração técnica de um projeto universitário desenvolvido por estudantes utilizando várias tecnologias da web.
2) Foi criado um protótipo de site com arquitetura server-side em PHP e banco de dados MySQL hospedado em servidor externo.
3) A demonstração mostrou funcionalidades como login de usuário, streaming de vídeo, mapa e calendário utilizando tecnologias como PHP, CSS, JavaScript e API do Google Maps.
Preparar o ambiente para desenvolvimento angularNize Costa
O documento explica os passos para configurar o ambiente de desenvolvimento Angular 4 com TypeScript, incluindo a instalação do Node.js, NPM e Angular CLI. Também mostra como criar um projeto Angular usando o comando "ng new" e iniciar o servidor local com "ng serve".
Produtividade infinito e além com We.jsAlberto Souza
O documento discute ferramentas para aumentar a produtividade no desenvolvimento de aplicações web usando o framework We.js, incluindo generators para gerar partes da aplicação, o padrão MVC e diferentes formatos de resposta como JSON e HTML.
Web services permitem a integração e comunicação entre aplicações diferentes, facilitando a troca de informações entre sistemas. Eles funcionam com requisições HTTP e respostas XML, sendo implementados usando frameworks como Apache Axis em Java. O documento explica o que são web services, como funcionam, instalação e configuração do Apache Tomcat e Axis, e exemplos de criação de um web service simples em Java.
1) O documento descreve uma aula sobre desenvolvimento web com Angular, incluindo a instalação das ferramentas necessárias e a criação de um projeto Angular simples para gerenciar listas de tarefas.
2) É apresentado um modelo de dados para armazenar as tarefas, um template HTML para exibir os dados e um componente para conectar o modelo ao template.
3) O fluxo básico de execução de uma aplicação Angular é explicado, ligando o bootstrap, componentes, templates e data binding.
Slide 02 introdução ao code igniter, utilização do bootstrap Raniere de Lima
O documento apresenta uma introdução ao framework PHP CodeIgniter e ao framework front-end Bootstrap. Descreve as principais características e funcionalidades de ambos, incluindo exemplos de uso do CodeIgniter e instruções para download de ambos os frameworks.
O Visual Studio Summit 2016 é o maior evento sobre Visual Studio realizado no Brasil que está chegando a 5ª edição voltado para desenvolvedores de software que tem o objetivo de promover networking, apresentar tendências e principais estratégias atuais ligadas ao desenvolvimento de software na plataforma Microsoft usando Visual Studio, Azure e mobilidade. Durante o Keynote Ramon Durães abordou o tema transformação digital e DevOps.
Este documento descreve um curso de formação para desenvolvedores .NET 4.0, abordando tópicos como ASP.NET, C#, Visual Studio, Windows Forms, LINQ, MVC e relatórios com CrystalReports. O curso tem duração de 160 horas e inclui disciplinas como orientação a objetos, programação web, bancos de dados e padrões .NET avançados.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
Este documento descreve um laboratório prático no qual o estudante deve criar e configurar vários recursos na nuvem do Google Cloud, como instâncias, clusters Kubernetes e balanceadores de carga, para atender às necessidades de um projeto fictício. O estudante deve completar as tarefas dentro do tempo limite para obter a pontuação máxima.
O documento descreve o padrão MVC (Model-View-Controller) e como aplicá-lo em aplicações Delphi para separar as camadas de apresentação, domínio e dados. Ele explica o que são as camadas Model, View e Controller no MVC e apresenta um exemplo simples de multiplicação para demonstrar como implementar cada parte e a comunicação entre elas.
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
O documento discute tendências e dicas para o desenvolvimento de software. Ele aborda tópicos como por que desenvolver software é difícil, motivos de falha em projetos, linguagens populares, boas práticas como teste e integração contínua, metodologias ágeis, tendências como computação em nuvem e NoSQL e por fim dicas para desenvolvedores.
Semelhante a VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET 7 e Minimal Api (20)
1) A palestra apresentará o uso de Docker no desenvolvimento .NET, incluindo como criar imagens e contêineres para aplicações .NET e como orquestrá-los com Docker Compose.
2) O palestrante Marcio Nizzola explicará o que é Docker e como funciona a virtualização de contêineres, em seguida demonstrará a criação de uma aplicação .NET usando Docker.
3) A aplicação .NET demonstrará o uso de contêineres Docker para hospedar bancos de dados, filas de mensagens e a própria aplicação .
O documento resume uma palestra sobre o uso de containers Docker no desenvolvimento .NET. A palestra inclui uma introdução ao Docker e como ele é usado, uma demonstração de uma aplicação .NET rodando em containers Docker e questões frequentes sobre Docker.
O documento descreve como criar uma API de geolocalização minimal usando SQL e C# para armazenar e consultar dados geoespaciais. A API usa os tipos de dados geography e geometry do SQL para armazenar pontos e polígonos e métodos como STIntersects para consultas espaciais. A API é implementada usando a abordagem de API minimal do .NET sem controllers, com endpoints no Program.cs e acesso aos dados via Dapper.
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaDextra Sistemas / Etec Itu
Dicas práticas de abordagem adotada em case de migração de legado e como melhorar aplicações legadas deixando sistemas mais estáveis para suportar o tempo de desenvolvimento de novas aplicações
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Dextra Sistemas / Etec Itu
Este documento descreve como criar uma API minimal para serviços de geolocalização utilizando SQL e C#. Resume-se em 3 frases:
1) Apresenta como armazenar dados geográficos como pontos e polígonos no banco de dados SQL Server utilizando os tipos de dados geometry e geography.
2) Detalha como construir uma API minimal em .NET para realizar consultas espaciais utilizando métodos como STIntersects para buscar pontos dentro de polígonos.
3) Fornece exemplos de consultas SQL para localizar lugares dentro
Os Benefícios dos testes no desenvolvimento de software
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET 7 e Minimal Api
1. MÁRCIO R. NIZZOLA
MVP DEVELOPER TECHNOLOGIES
MARCIONIZZOLA@GMAIL.COM
Como partir do zero e entregar uma API
profissional com .NET 7 e Minimal Api
#VSSUMMIT
2. INTRODUÇÃO
#VSSUMMIT
• O conceito de Minimal API foi introduzido no .NET 6 tornando muito mais simples a
implementação de um endpoint dado que anteriormente tínhamos a Controller, que
precisava de uma série de configurações específicas.
• Além disso, unido ao lançamento deste conceito, o C# 10 mudou também a forma
como se inicializa uma aplicação onde agora o program.cs incorporou o conceito “top
level statements” (instruções de nível superior) simplificando muito a inicialização da
aplicação.
Nota: Para quem ainda não utiliza o Visual Studio 2022, estes dois itens não serão
interpretados corretamente, caso não tenha a licença, uma recomendação é utilizar o VS
Code.
4. OBJETIVO
#VSSUMMIT
Ao final desta apresentação teremos uma API com:
- Utilização de Minimal Api´s
- Organização de seus endpoints escritos com conceito Minimal Api
- Implementação de Route Groups para melhorar a documentação
- Implementação de Configurações personalizadas
- Melhoria na injeção de dependência
- Implementação de Logging
- Implementação de HealthChecks
- Implementação de Output Cache
- Implementação de Rate Limit
6. CRIAÇÃODAAPIUTILIZANDOOVISUALSTUDIO
#VSSUMMIT
A partir do Visual Studio 2022 novos
checkboxes foram adicionados para
selecionar as opções que contemplam:
- Usar ou não Controllers (Minimal Api)
- Habilitar OpenApi (Swagger)
- Utilizar instruções de nível superior
7. NOVOTEMPLATE
#VSSUMMIT
Podemos destacar alguns detalhes
- O resultado é o mesmo e vemos que já
tem menos linhas de código.
- A declaração do endpoint é feita com
um simples comando “app.MapGet”
não precisando de arquivo separado
como era feito na Controller com uma
série de itens obrigatórios.
- Esta versão já contempla o Swagger
também.
Ponto negativo:
- Para um endpoint é tudo lindo, mas se
tiver mais começa a ficar complexo.
- Tem variáveis de negócio e classes no
program.cs !
8. 1ªMELHORIA–ORGANIZAÇÃO
#VSSUMMIT
Para melhor organização podemos criar uma
classe com os endpoints separados.
Podemos fazer de três formas:
- através do famoso “Scaffolding” que
pode criar uma classe e já montar todos
os métodos “Crud” conectando também
ao Entity Framework.
- Através do “Scaffolding” mas apenas
criando os endpoints para os principais
verbos sem conexão com o Entity
Framework.
- Manualmente criando uma classe com
extension methods e implementando
apenas os Endpoints que precisar.
10. 1ªMELHORIA–ORGANIZAÇÃO
#VSSUMMIT
Vemos que é criada uma classe estática
Com algumas particularidades:
- Ela tem um método que é uma
extensão de “IEndpointRouteBuilder”.
- Ela cria um grupo, que será utilizado
para declaração dos endpoints,
desta forma eles serão agrupados
de acordo com a rota.
- Será inserido no program.cs um
comando para inicialização dos
endpoints.
12. 2ªMELHORIA–ROUTEGROUPS
#VSSUMMIT
Nas primeiras versões de Minimal Api não tínhamos a possibilidade de utilizar Route Groups, agrupando as
rotas e aplicando configurações que fossem comuns à uma mesma rota.
Agora no .NET 7 já podemos utilizar RouteGroups, mas antes tínhamos que aplicar em cada Map
configurações específicas.
13. 2ªMELHORIA–ROUTEGROUPS
#VSSUMMIT
Agora no .NET 7, foram implementados os Route Groups, onde além de simplificar e não precisar ficar mais
repetindo o nome do endpoint em cada Map, podemos aplicar outras propriedades diretamente ao grupo.
Com isto Tags, Autorização, Filtros e outras funcionalidades ficarão mais fáceis de implementar.
14. 3ªMELHORIA–CONFIGURAÇÕES
#VSSUMMIT
Sempre será necessário realizar a
parametrização da sua aplicação com
configurações distintas para diferentes
Environments: Develop, Production,
Staging.
O .NET já cuida da leitura das suas
configurações diretamente dos arquivos
appsettings.json, sendo a leitura de
acordo com o Environment, então
teremos os
appsettings.Development.json por
exemplo.
E através do padrão IOptions<>
podemos carregar as configurações em
classes que poderão ser utilizadas via
injeção de dependência.
Você deve montar no
appsettings da sua
aplicação a parametrização
baseada na classe que
criou.
15. 3ªMELHORIA–CONFIGURAÇÕES
#VSSUMMIT
Para realizar a leitura da configuração criada, basta inserir no arquivo “program.cs” a linha destacada, onde
é feita leitura do “appsettings” e depois inserida na configuração. Automaticamente a aplicação já fará a
leitura do “environments” para carregar o arquivo “appsettings” correto.
16. 3ªMELHORIA–CONFIGURAÇÕES
#VSSUMMIT
Depois de feito tudo isso, é
só usar a configuração
inserindo via injeção de
dependência.
Isto serve não só para os
endpoints, mas também para
classes de serviço, onde
colocamos em seu construtor.
17. 4ªMELHORIA–INJEÇÃODEDEPENDÊNCIA
#VSSUMMIT
Muitas vezes o projeto começa a crescer e a configuração da injeção de dependência fica muito grande e
confusa, de difícil conferência e assim precisamos organizá-la melhor.
Uma das formas de se fazer é segregar as configurações em arquivos separados e também podemos sem
uso de nada muito sofisticado, e nem bibliotecas de terceiros, fazer um escaneamento das classes sem termos
que informar uma a uma.
Este é um exemplo bem
comum de algo que
acontece na vida real.
Inúmeras linhas para
declarar a injeção de
dependência.
18. 4ªMELHORIA–INJEÇÃODEDEPENDÊNCIA
#VSSUMMIT
Para solucionar podemos criar um “Extension Method” que fará um escaneamento das classes correspondentes
baseado no nome final da classe, pelo parâmetro “classEndWith”.
Eu utilizo isso para classes com finais do nome padronizados, como: ...Service, ...Repository.
19. 4ªMELHORIA–INJEÇÃODEDEPENDÊNCIA
#VSSUMMIT
Desta forma a inicialização ficará muito mais limpa e de fácil interpretação.
Por que passar o Assembly? Por que em muitos casos temos vários projetos na mesma solution, criando
diferentes “assembly”. Então criamos arquivos para injeção dentro de cada projeto.
20. 5ªMELHORIA-LOG
#VSSUMMIT
Sempre que implementamos uma API surge a necessidade de monitorar seu funcionamento, debugar erros,
etc, instrumentá-la para gerar logs que permitam identificar seus pontos de falha ou bugs é essencial.
Podemos realizar a implementação de Logs utilizando a biblioteca Serilog, que permite logarmos em
Arquivo, Console, Email e várias outras formas.
Para adicioná-lo, vamos utilizar as seguintes bibliotecas nuget.
Serilog.AspNetCore
Serilog.Sinks.Console
Serilog.Sinks.File
22. 5ªMELHORIA-LOG
#VSSUMMIT
Agora é só implementar na inicialização no program.cs a seguinte linha
builder.ConfigureLogging();
Agora é só utilizar dentro das suas classes e métodos, instrumentando a sua aplicação para os níveis
desejados que podem ser: Trace, Debug, Information, Error, Warning e Critical conforme a necessidade que
tiver para debug.
No exemplo abaixo só será registrado o log caso a configuração do nível seja “Debug”.
23. 5ªMELHORIA-LOG
#VSSUMMIT
Como resultado, seu log vai ficar assim:
Isto vai ajuda-los muito quando necessário obter as informações de tudo que acontece no método que
instrumentou.
Basta mudar no seu appsettings o nível de logging que precisa e debugar a aplicação, em produção,
implemente o nível Warning ou Error e monitore somente o que dá errado.
24. 5ªMELHORIA-LOG
#VSSUMMIT
Ainda se precisar fazer a configuração da sua aplicação para obter log de Request, Response e seus
Headers, pode implementar esta configuração no program.cs.
Pode-se também criar parâmetros no appsettings a fim de realizar a utilização destes logs só quando
precisar, para que não armazene logs desnecessariamente.
Exemplo básico de logs de request e response:
25. 6ªMELHORIA-HEALTHCHECKS
#VSSUMMIT
Como saber se nossa API está de pé? HealthChecks são importantes para monitoramento e verificação do
estado de nossa API.
Basta incluir no program.cs as seguintes instruções:
builder.Services.AddHealthChecks();
app.UseHealthChecks("/health");
Com isto será criado um endpoint para testar se a aplicação está de pé.
Pode-se também implementar pacotes nuget que testam se o banco
de dados está acessível também.
26. 7ªMELHORIA–OUTPUTCACHE
#VSSUMMIT
No .NET 7 foi implementado o recurso de output cache, que permite de forma muito simples realizar a
disponibilização de cache na saída da aplicação, garantindo maior performance e menor utilização de
recursos para dados previamente processados.
Para implementá-lo basta colocar dois comandos na inicialização da sua aplicação:
builder.Services.AddOutputCache(options =>
{
options.DefaultExpirationTimeSpan = TimeSpan.FromSeconds(10);
});
app.UseOutputCache();
No exemplo acima foi definido um tempo de 10 segundos de duração para o cache, mas você pode definí-lo
como quiser.
Além disso, esta implementação precisa que seja feita uma parametrização direta no seu endpoint ou rota.
28. 7ªMELHORIA–OUTPUTCACHE
#VSSUMMIT
Para testar basta executar várias vezes e identificar que a data não modifica-se enquanto está no tempo de
salvamento do cache !
Já o segundo exemplo, o cache varia de acordo com o parâmetro utilizado !
29. 8ªMELHORIA–RATELIMIT
#VSSUMMIT
O .NET 7 possui um middleware para limitação da taxa de acesso às API´s, ele é implementado pela
biblioteca Microsoft.AspNetCore.RateLimiting onde podemos limitar a quantidade de requisições que uma
API está apta a aceitar num período de tempo a ser estabelecido.
De acordo com a documentação, temos várias formas de implementar este tipo de limitador, sendo:
- Janela fixa – utiliza uma janela de tempo fixa para controlar as limitações
- Janela deslizante – utiliza uma janela de tempo deslizante, dividindo em segmentos e reciclando
solicitações não utilizadas
- Bucket de Token – similar ao anterior, mas um número fixo de tokens é adicionado a cada período de
reabastecimento.
- Simultaneidade - limita o número de solicitações simultâneas.
Vamos implementar então um limitador de janela fixa somente para demonstrar a possibilidade de
implementação em qualquer aplicação .Net 7.
31. 8ªMELHORIA–RATELIMIT
#VSSUMMIT
Após implementar a limitação, fiz 5 requisições para ultrapassar o limite implementado, com isto recebi a
mensagem de erro conforme demonstrado abaixo, com erro 429:
32. 8ªMELHORIA–RATELIMIT
#VSSUMMIT
Neste exemplo, podemos incluir uma fila de espera, onde a requisição não devolve erro caso haja 3
requisições na fila, resultando erro apenas se excederem este limite.
Basta que seja informado o nome da política “period3” no mapeamento do endpoint.
33. 8ªMELHORIA–RATELIMIT
#VSSUMMIT
Executando o exemplo anterior, vemos que o tempo de execução depois de atingir o limite foi bem maior, por
que ela foi colocada na fila e esperou que a janela de execução finalizasse para devolver a resposta.
34. 8ªMELHORIA–RATELIMIT
#VSSUMMIT
E para finalizar para que nossa inicialização não fique desorganizada e cheia de código, vamos aplicar um
extension method para deixar o código limpo no program.cs ficando uma simples linha.
Assim o código fica muito mais legível e
colocamos cada coisa no seu lugar !
Criando uma classe para guardar nossas
extensões de inicialização !
35. FINALIZANDO
#VSSUMMIT
Com certeza se implementarmos todos estes pontos numa API, teremos uma entrega muito profissional e
pronta para atender à grandes demandas.
Existem muitos outros pontos a se implementar como Autenticação/Autorização, Cors, mas isto não falta
documentação na Web para se pequisar e implementar na sua aplicação.