Desenvolvi este projeto para colocar em prática tudo que aprendemos durante a primeira MJV School de .NET, que foi ao ar entre 23/10/2023 e 23/11/2023.
O CRUD da Justiça é uma aplicação simples que lida com informações sobre super-heróis. Programas desse tipo são maçantes por natureza, e por isso, escolhi um tema leve para tentar torná-lo menos entediante. Ele possui duas interfaces de usuário: uma web implementada com o ASP.NET MVC e uma de console. Você pode vê-las na seção de imagens deste readme.
Durante o curso foram abordados diversas características e funcionalidades do C# e .NET. A seguir estão aquelas que melhor se encaixaram no escopo deste projeto.
- REST API: o backend do sistema web é um API. Link
- ASP.NET MVC: a interface web do projeto. Link
- ADO.NET: o projeto consegue armazenar dados por meio do SQL Server. Link
- Leitura do arquivo appsettings.json: a string de conexão do banco de dados é lida deste arquivo. Link
- Injeção de dependências: tanto o website quanto o aplicativo de console fazem injeção de dependências. Link
- String e StringBuilder: a interface de linha de comando é desenhada usando strings. Link
- Array: o projeto tem um repositório virtual que armazena informações em arrays. Link
- Serialização e manipulação de arquivos: o projeto consegue salvar dados em arquivos JSON. Link
- Listas: atalhos de teclado são armazenados dentro de uma lista. Link
- Queues e tipagem genérica: usados para gerar e preencher formulários de linha de comando. Link
- Records: os modelos de exibição do website são records. Link
- Structs: as páginas de dados são encapsuladas em um struct. Link
- Classes: quase todos os tipos do projeto são classes. Link
- Interfaces: os repositórios de dados implementam interfaces. Link
- Classes abstratas e herança: ambos são usados para desenhar decorações de janela na linha de comando. Link
Estes conceitos não foram abordados durante o bootcamp, porém apliquei alguns deles para assegurar a qualidade da implementação.
- MVC: o website é estruturado neste padrão.
- MVP e Mediator: a comunicação entre a interface de linha de comando e o backend é mediada pelos controladores.
- Repository ou Façade: os controladores não sabem com quais repositórios eles se comunicam.
- Decorator: a interface de linha de comando é implementada neste padrão.