Skip to main content

🚀 Trilha de Backend com C#

Bem-vindo(a) à Trilha de Desenvolvimento com .NET, C# e Boas Práticas! Esta trilha foi cuidadosamente estruturada para oferecer um caminho completo de aprendizado, desde os conceitos básicos de versionamento de código com Git e GitHub, passando pelo desenvolvimento com C# e .NET, até práticas avançadas como Clean Architecture, CQRS, Injeção de Dependência e Testes Automatizados.

Além do conhecimento técnico, você aprenderá a aplicar as melhores práticas de desenvolvimento, garantindo um código limpo, modular e escalável para projetos reais.

🔎 O que você vai aprender?
Controle de versão com Git e GitHub
Fundamentos de C# e Programação Orientada a Objetos
Programação assíncrona e injeção de dependência
Containers e automação com Docker e Docker Compose
Conceitos fundamentais do .NET e APIs RESTful
Arquitetura de software: Clean Architecture, CQRS e padrões de projeto
Autenticação com JWT e boas práticas de segurança
Testes unitários e automatizados no ambiente .NET

Carga horária total: 25h15min
📌 Formato: Vídeos, artigos, leituras complementares e desafios práticos

🎯 Pré-requisitos
Para um melhor aproveitamento da trilha, é recomendado possuir conhecimentos básicos de:

Carga horária total: 25 horas e 15 minutos.

1. GIT e GitHub (2:30h)

O Git é um sistema de controle de versão distribuído amplamente utilizado para gerenciar o histórico de alterações de arquivos em projetos de desenvolvimento de software. Essa ferramenta permite que múltiplos desenvolvedores trabalhem de forma colaborativa, rastreando mudanças, revertendo para versões anteriores e mantendo um histórico completo de todas as modificações realizadas.

O GitHub é uma plataforma de hospedagem de código-fonte que utiliza o Git como sistema de controle de versão.

📹 [Vídeo Aula] - Aprenda Git e GitHub do zero (40 min)

📹 [Vídeo Aula] - Curso de Git e GitHub (Desafios e Práticas) (50 min)

📄 [Documentação] - Desvendando Git e GitHub (1h)


2. Introdução ao C# (4h)

C# é uma linguagem de programação moderna, orientada a objetos e fortemente tipada, desenvolvida pela Microsoft como parte da plataforma .NET. Foi projetada para ser simples, eficiente e robusta, combinando a facilidade de uso de linguagens como Visual Basic com o poder e a flexibilidade de linguagens como C++ e Java.

🎥 [Vídeo Aula] - Curso completo de C# (4h)

📖 Leitura complementar (30 min):

📄 [Documentação] - List, ICollection, IEnumerable... (30 min)


3. Programação Orientada a Objetos em C# (3h)

Programação Orientada a Objetos (POO) é um paradigma de programação que organiza o software em torno de "objetos", que são instâncias de "classes". Cada objeto representa uma entidade do mundo real ou conceitual com características (atributos) e comportamentos (métodos).

📄 [Documentação] - Classes (30 min)

📄 [Documentação] - POO (30 min)

📄 [Documentação] - Interface (30 min)

📄 [Documentação] - Herança (30 min)

🎥 [Tutoriais] - Curso de POO  (1h)


4. Programação Assíncrona (1h)

Programação Assíncrona é um modelo de programação que permite a execução de operações sem bloquear a execução de um programa. Em vez de esperar que uma operação, como uma solicitação de rede ou leitura de arquivo, seja concluída, a programação assíncrona permite que o programa continue executando outras tarefas, melhorando a eficiência e a capacidade de resposta.

📄 [Documentação] - Programação Assíncrona (1h)


5. Injeção de Dependência (45min)

Injeção de Dependência (Dependency Injection - DI) é um padrão de design usado para implementar o princípio da inversão de controle (IoC), que tem como objetivo tornar um sistema de software mais flexível, modular e fácil de testar.

📄 [Documentação] - Injeção de dependência (30 min)

📄 [Artigo] - Injeção de dependência no .NET (15 min)


6. Docker e Docker-Compose (2h)

Docker é uma plataforma de contêineres que permite empacotar, distribuir e executar aplicativos de maneira isolada e consistente em diferentes ambientes. Um contêiner Docker encapsula tudo o que um software precisa para ser executado, incluindo o código, as bibliotecas, as dependências e o sistema operacional, garantindo que ele funcione da mesma maneira em qualquer lugar.

Docker-Compose é uma ferramenta que facilita a definição e execução de múltiplos contêineres Docker como parte de um único aplicativo. Ele usa um arquivo YAML (docker-compose.yml) para definir serviços, redes e volumes, permitindo a execução de aplicativos compostos por várias partes (como servidores web, bancos de dados, filas de mensagens, etc.) com um único comando.

📹 [Vídeo Aula] - Curso sobre Docker (1h)

📹 [Vídeo Aula] - Curso sobre Docker Compose (1h)


7. Introdução ao .NET (2:15h)

.NET é uma plataforma de desenvolvimento de software criada pela Microsoft que fornece um ambiente para a criação, execução e manutenção de aplicações. Ela suporta diversas linguagens de programação, como C#, F#, e Visual Basic, e permite o desenvolvimento de uma ampla variedade de aplicações, incluindo aplicativos web, desktop, móveis, de nuvem, jogos e IoT (Internet das Coisas).

🎥 [Vídeo Aula] - Curso sobre .NET (teórico) (15 min)

📄 [Documentação] - Minimal API (1h)

🎥 [Tutoriais] - ASP.NET Core MVC + EF Core (1h)

📚 Cursos complementares (2:50h):

🎥 [Vídeo Aula] - .NET 8 Web API & Entity Framework (50 min)

🎥 [Vídeo Aula] - Criando API em ASP.NET 8 com Minimal APIs (43 min)

🎥 [Vídeo Aula] - Criando um CRUD API com .NET (1:20h)


8. Introdução ao Clean Architecture (3:45h)

Clean Architecture é um conceito de arquitetura de software proposto para organizar o código de forma que seja fácil de entender, manter e evoluir. A Clean Architecture visa a criação de sistemas modulares, altamente coesos, de baixo acoplamento e independentes de frameworks, interfaces de usuário, bancos de dados e outros detalhes de implementação.

🎥 [Vídeo Aula] - Introdução Clean Architecture (15 min)

🎥 [Vídeo Aula] - Curso sobre Clean Architecture (prático) (assistir do 7 vídeo em diante) (1:30h)

Auto Mapper (30 min)

AutoMapper é uma biblioteca em .NET que facilita o mapeamento de objetos de um tipo para outro.

📄 [Artigo] - Auto Mapper com .Net Core (15 min)

📄 [Artigo] - ASP .NET Core - Usando o AutoMapper (15 min)

Mediator (50min)

Mediator é um padrão de design que facilita a comunicação entre diferentes partes de um sistema sem que elas se comuniquem diretamente. O MediatR é usado para enviar comandos e consultas, de modo que cada comando ou consulta tenha apenas um manipulador responsável por processá-los.

📄 [Documentação] - Mediator (30 min)

📄 [Artigo] - Mediator Pattern (10 min)

📄 [Artigo] - Mediator Pattern (10 min)

Unit Of Work (20min)

Unit of Work (Unidade de Trabalho) é um padrão que mantém um registro das operações realizadas em um repositório durante uma transação. Ele coordena a escrita de mudanças para a base de dados, garantindo que todas as operações sejam bem-sucedidas ou nenhuma delas será persistida.

📹 [Vídeo Aula] - Unit Of Work Patterns (10 min)

📄 [Artigo] - Unit Of Work Patterns (10 min)

Repository Patterns (10min)

Repository Pattern (Padrão de Repositório) é um padrão de design que abstrai a lógica de acesso a dados. Ele fornece uma interface para realizar operações de CRUD (Create, Read, Update, Delete) e oculta os detalhes de implementação do armazenamento de dados (por exemplo, Entity Framework).

📹 [Vídeo Aula] - Repository Patterns (10 min)

Generic Repository (10min)

Generic Repository é uma implementação do Repository Pattern que é genérica, permitindo que a lógica de acesso a dados seja reutilizada para diferentes tipos de entidades.

📹 [Vídeo Aula] - Generic Repository (10 min)

Result Pattern (10min)

Result Pattern é um padrão utilizado para representar o resultado de uma operação, especialmente em termos de sucesso ou falha. Geralmente, um objeto Result contém informações sobre se a operação foi bem-sucedida, uma mensagem de erro (se aplicável), e quaisquer dados adicionais relevantes.

📹 [Vídeo Aula] - Result Pattern (10 min)

CQRS (1:15h)

CQRS é um padrão de arquitetura que separa operações de leitura (Queries) das operações de escrita (Commands) em sistemas. Em vez de usar o mesmo modelo de dados para ler e escrever, CQRS promove a criação de modelos distintos para cada um.

📹 [Curso] - CQRS (1 h)

📄 [Artigo] - CQRS (15 min)

Autenticação JWT (45min)

JWT (JSON Web Token) é um padrão para representar declarações de forma segura entre duas partes. Em sistemas de autenticação, JWT é usado para transmitir informações de forma compacta e segura, como a identidade do usuário e as permissões associadas a ele.

📹 [Curso] - Token Authentication In ASP.NET Core (25 min)

📹 [Curso] - Create JSON Web Tokens (JWT) - User Registration / Login / Authentication (20 min)

Leitura Complementar (35 min):

📄 [Artigo] - ASP.NET 8 - Authentication and Authorization in 7 steps (35 min)

📄 [Artigo] - Clean Architecture in ASP .NET Core Web API (10 min)


9. Testes no Ambiente .NET (2:30h)

Testes unitários, BDD (Behavior-Driven Development) e handlers são práticas fundamentais no desenvolvimento de software moderno para garantir qualidade, manutenibilidade e colaboração eficaz. Testes unitários verificam pequenas unidades de código isoladamente para detectar erros precocemente e facilitar refatorações seguras.

📹 [Tutoriais] - Unit Testing in C# 2022 (2h)

📹 [Vídeo Aula] - Unit Testing CQRS Handlers With Moq, Fluent Assertions, and xUnit (15 min)

📄 [Artigo] - BDD Testing in .NET8 (15 min)


10. Tutorial de um CRUD Básico usando .NET (3h)

O RestauranteAPI é um projeto de CRUD básico desenvolvido seguindo os princípios da Clean Architecture e do padrão CQRS (Command Query Responsibility Segregation). O objetivo principal é proporcionar melhor desempenho, segurança e escalabilidade para a API, garantindo um código modular e de fácil manutenção.

11. Desafio

O desafio é desenvolver um programa que permita realizar as seguintes buscas:

  1. Listar os órgãos, códigos e editais dos concursos públicos que se encaixam no perfil do candidato, tomando como base o seu CPF;
  2. Listar o nome, data de nascimento e o CPF dos candidatos que se encaixam no perfil do concurso tomando com base o Código do Concurso do concurso público;

Para maiores detalhes do desafio clique no link.