O Italog é uma Central de Erros, responsável por centralizar os registros de erros de várias aplicações.
Em projetos modernos é cada vez mais comum o uso de arquiteturas baseadas em serviços ou microsserviços. Nestes ambientes complexos, erros podem surgir em diferentes camadas da aplicação (backend, frontend, mobile, desktop) e mesmo em serviços distintos. Desta forma, é muito importante que os desenvolvedores possam centralizar todos os registros de erros em um local, de onde podem monitorar e tomar decisões mais acertadas. Neste projeto vamos implementar um sistema para centralizar registros de erros de aplicações.
Etapa | Descrição |
---|---|
Monitoramento | Armazenar e acompanhar, em tempo real, eventos que são gerados por todas as aplicações cadastradas |
Triagem | Separar os eventos recebidos pelo Monitoramento de acordo com o tipo de ambiente, severidade e prioridade de cada um deles |
Diagnóstico | Identificar possíveis falhas de desenvolvimento ou intermitências das aplicações conforme dados catalogados pela Triagem |
Ação | Agir de acordo com a necessidade identificada pela etapa de Diagnóstico, acionando os recursos disponíveis para a solução dos problemas, além de definir e atualizar o status de cada evento |
Manutenção | Propor resoluções para inconsistências e utilizar os dados de todas as etapas anteriores para sugerir melhorias e manutenções preventivas |
Decidimos separar as camadas de projeto, tendo como orientação o modelo Clean Architecture, de Bob Martin, mas usado aqui na visão de Steve Smith. Info: Microsoft Docs.
Através desta modelo arquitetural, esperamos melhorar a forma como o projeto é separado e compreendido. Tendo também vantagens como uso de injeção de dependência, fazendo a inversão do controle e viabilizando testes automatizados (unitários a princípio).
Também nos serviu de base o material apresentado no livro Asp.NET Core Architecture e-book, disponível em sítio Microsoft.
São itens desta camada, aqueles relativos à:
- Conexão com banco de dados
- Tipos representando o banco de dados
- Implementações de acesso a dados (das Interfaces definidas no Core)
Esta camada será responsável por receber as requisições dos clientes e endereçá-las.
Vamos tratar aqui:
- Autenticação e autorização
- Injeção de dependência
- Criando migrations
Execute dotnet ef migrations add "nome-da-migration" --project ./ItaLog/ItaLog.Data/ --startup-project ./ItaLog/ItaLog.API/
para gerar uma nova migration do banco de dados.
Execute dotnet ef database update --project ./ItaLog/ItaLog.Data/ --startup-project ./ItaLog/ItaLog.API/
atulizando o banco de banco de dados com as migrations do projeto.
Esta camada é responsável por armazenar as abstrações do nosso universo. Por exemplo, o que é um log de erro será representado aqui por uma classe.
Nesta camada você vai encontrar os seguintes itens:
- Entidades
- Interfaces
Execute dotnet watch run --project ./ItaLog/ItaLog.Api/
para iniciar o servidor. Navegue em http://localhost:5000/
. O aplicativo será recarregado automaticamente se você alterar qualquer um dos arquivos de origem.
Execute dotnet build ./ItaLog/ItaLog.sln
para contruir os executaveis do projeto.
Por fim uma camada para separar os testes será utilizada.
- Testes unitários
Execute
dotnet test ./ItaLog/ItaLog.sln
para iniciar os testes unitários via xUnit.
- .Net Core - versão 3.1.3
- Entity Framework - versão 3.1.3
- Auto Mapper - versão 9.0.0
- Identity - versão 2.2.0
- MailKit - versão 2.6.0
- Moq - versão 4.14.1
- xUnit - versão 2.4.1
- Swashbuckle - versão 5.4.1