Este é um guia passo a passo para se tornar um engenheiro .NET, com links para recursos de aprendizagem relevantes.
Se você quiser saber mais sobre as tecnologias .NET, assine meu boletim informativo .
Se você achar útil este repositório, considere me apoiar no Patreon:

Este roteiro tem como objetivo dar uma idéia sobre a paisagem. O roteiro o guiará se você precisar de esclarecimentos sobre o que aprender a seguir, em vez de incentivá -lo a escolher o que é hype e moda. Ajudaria se você crescesse algum entendimento de por que uma ferramenta seria mais adequada para alguns casos do que a outra e lembre -se de que o hype e a moda apenas às vezes significam mais adequados para o trabalho.
Se você gosta ou está usando este projeto para aprender ou iniciar sua solução, dê uma estrela. Obrigado!
Observe que, pelo nível de antiguidade, significa:
? Junior : conceitos básicos
? Medior : conceitos avançados
? Senior : conceitos de especialistas

Baixe a versão em PDF.
Abaixo, você pode encontrar uma versão mínima nua que todo desenvolvedor júnior .NET precisa saber, com materiais de aprendizagem incluídos e clicáveis na versão em PDF.

Baixe a versão em PDF.
Antes de entrar em detalhes, você precisa ter um sólido entendimento do ecossistema .NET . Aqui estão alguns que você deve entender:
Nesta seção, examinaremos o principal .NET Times Run. Consideramos o tempo de execução do .NET como qualquer coisa que implemente o padrão ECMA-335 para .NET .
O .NET Framework é uma estrutura de desenvolvimento de software para criar e executar aplicativos no Windows. O .NET Framework consiste no tempo de execução do idioma comum (CLR), na biblioteca de classes da estrutura .NET e cargas de trabalho de aplicativos (WPF, Windows Forms e ASP.NET). O CLR faz parte de uma infraestrutura compartilhada que executa o código, JIT, faz coleta de lixo (C#, vb.net, f#), etc. O código que o CLR gerencia é chamado de código gerenciado. O código é compilado em linguagem intermediária comum (CIL) e armazenada em montagens (com extensão .exe ou .dll). Quando um aplicativo é executado, o CLR pega uma montagem e usa um compilador just-in-time (JIT) para transpilar código da máquina para o código que pode ser executado em arquitetura de computador específica.
Você pode usá -lo para o desenvolvimento da área de trabalho e da Web, mas é limitado ao desenvolvimento do Windows e é pré -instalado no Windows.
.NET Core é um dos tempos de execução no ecossistema .NET. Foi lançado em 2016. E é de código aberto. Ele não representa uma nova versão da estrutura .NET e não a substituirá. É uma versão totalmente independente, criada para permitir a capacidade de plataforma cruzada para o desenvolvimento de aplicativos. .NET Core consiste em um host de aplicativo (dotnet.exe) que executa o CLR e a biblioteca. Possui um tempo de execução de idioma comum (CoreCLR) e .NET Core Class Library. Ele suporta diferentes cargas de trabalho de aplicativos, como asp.net core (MVC e API), aplicativos de console e UWP (atualmente).
O Core .NET pode ser executado em diferentes plataformas: cliente Windows, servidor, IoT, Linux, Ubuntu, FreeBSD, Tizen e Mac OSX, e pode ser instalado lado a lado de diferentes versões por máquina ou usuário.
O .NET 5 foi lançado em novembro de 2020 com o objetivo de unificar o desenvolvimento para aplicativos de desktop, web, nuvem, móveis, jogos, IoT e IA. A meta de configuração anterior era produzir um único .NET Runtime e Framework, plataforma cruzada, integrando os melhores recursos da estrutura .NET Core, .NET Framework, Xamarin e Mono. No entanto, devido à pandemia global de saúde, a unificação foi adiada para .NET 6 .NET 5 é uma base de código compartilhada para implementações .NET Core, Mono, Xamarin e Future .NET. Além disso, os nomes da estrutura de destino (TFMS), que expressam qual versão do .NET direcionamento, são atualizados, por isso agora temos o Net5.0. Isto é para código que é executado em todos os lugares. Ele combina e substitui os nomes NetCoreApp e NetStandard e Net5.0-Windows que representam sabores específicos do OS do .NET 5 que incluem ligações específicas do Net5.0 mais OS.
.NET 9 é o mais recente tempo de execução do ecossistema .NET. É lançado em novembro de 2024. E unifica o desenvolvimento para aplicativos de desktop, web, nuvem, celular, jogos, IoT e IA. .NET 9 consiste em um host de aplicativo (dotnet.exe) que executa o CLR e a biblioteca. Possui um tempo de execução de idioma comum (CoreCLR) e .NET 8 Class Library. Ele também inclui o ASP.NET CORE 9 .NET 9 possui suporte quase idêntico na plataforma como .NET Core 3.1 para Windows, MacOS e Linux.
.NET 9 é uma liberação de suporte a termo padrão , suportada por seis meses após uma liberação subsequente de STS ou LTS.
.NET 8 foi um suporte de longo prazo (LTS) . Esses lançamentos são suportados por três anos após o lançamento inicial.
Diferentes tempos de execução usam diferentes bibliotecas de classes, por exemplo, o .NET Framework usa a biblioteca de classes da estrutura .NET, enquanto o .NET Core contém sua biblioteca de classes, bem como a Xamarin com sua biblioteca de classes. Dessa forma, é difícil compartilhar código entre diferentes tempos de execução, pois eles usam APIs diferentes. A solução da Microsoft é a biblioteca padrão .NET , lançada em 2016. Representa um conjunto de especificações (formais) que dizem quais APIs você pode usar e todos os momentos em execução implementam. É a evolução das bibliotecas de classes portáteis (PCL). Os tempos de execução específicos implementam versões específicas do padrão .NET (implementando APIs específicas). Por exemplo, .NET Framework 4.8.1 implementa o .NET Standard 2.0 e .Net 7 implementos .NET Standard 2.1 (link).
Para saber mais sobre o ecossistema .NET, consulte esta postagem do blog.
Cronograma de lançamento do .NET pela Microsoft:

C# é uma linguagem de programação desenvolvida pela Microsoft. É um idioma para criar qualquer coisa, desde aplicativos e jogos de desktop (usando unidade) a soluções baseadas em nuvem e serviços da Web. Com forte suporte para programação orientada a objetos e uma rica biblioteca, ela foi projetada para ser fácil e eficiente.
A versão mais recente é C# 13 , lançada em novembro de 2024.
Verifique a linha do tempo C# completa:

Você precisa entender diferentes recursos de idioma C# , como:

Mas também bibliotecas .NET e APIs para:
Recursos :
Dominar padrões de design, código limpo e controle de versão como o Git permite escrever um código eficiente e sustentável que funcione e prospere em um ambiente de equipe. É a diferença entre ser um codificador e um engenheiro de software qualificado .
Aqui, você precisa conhecer diferentes princípios, como:
Princípios sólidos :
Mas também:
Recursos :
É uma estrutura de plataforma cruzada e de alto desempenho desenvolvida pela Microsoft para criar aplicativos, APIs e microsserviços da Web . Você também pode executar seus aplicativos no Windows, Linux ou MacOS. É projetado para flexibilidade e escalabilidade com recursos como injeção de dependência interna e um sistema de configuração robusto.
Aqui, você também precisa conhecer os fundamentos do desenvolvimento da Web , como:
Recursos :
Se você deseja construir as UIs no .NET, precisará dessas estruturas. O Razor é um mecanismo de modelo para criar HTML dinâmico, enquanto Blazor aumenta um entalhe, permitindo criar UIs interativas da Web usando C# em vez de JavaScript. Maui é um sucessor Xamarin feito para a criação de aplicativos móveis de plataforma cruzada. A Windows Apresentation Foundation (WPF) é uma estrutura de interface do usuário que cria aplicativos de cliente de desktop. A UNO Platform é uma interface gráfica de usuário de plataforma cruzada de código aberto que permite o código baseado em UNUI e Universal Windows Platform (UWP) para ser executado em iOS, macOS, Linux, Android e WebAssembly.
Recursos :
O bom design de banco de dados garante armazenamento de dados eficientes e recuperação rápida, facilitando o seu aplicativo e a escala. O SQL , o idioma preferido para a interação do banco de dados, fornece o poder de consultar, atualizar e gerenciar os dados que você projetou com tanto cuidado para armazenar.
Aqui, você precisa saber:
Recursos :
O Mapeamento Relacional de Objetos (ORM) é como um tradutor entre o seu código C# orientado a objetos e o banco de dados relacional, eliminando a tediosa tarefa de escrever consultas SQL para operações básicas de CRUD. Usando estruturas ORM como a Entity Framework, você pode manipular dados como objetos em seu código, tornando -o mais legível e sustentável . Isso acelera o desenvolvimento, minimiza erros e permite que você se concentre na lógica de negócios complexa, em vez de lutar com a sintaxe do banco de dados.
Para a estrutura da entidade , você precisa saber o seguinte:
Recursos :
O cache é como a memória pessoal de curto prazo do seu aplicativo, armazenando dados acessados com frequência para que ele possa ser recuperado rapidamente sem acessar seu banco de dados . Ao reduzir a carga do banco de dados e acelerar o acesso aos dados, o cache fornece ao seu aplicativo a vantagem competitiva necessária para atender às demandas do usuário por capacidade de resposta e disponibilidade.
Recursos :
O registro captura informações de tempo de execução, erros e outros dados cruciais que podem ajudá -lo a identificar e corrigir rapidamente problemas, tornando seu aplicativo mais confiável e seguro. Estruturas de registro como NLOG ou Serilog se integrem perfeitamente ao .NET, fornecendo uma ferramenta de diagnóstico em tempo real indispensável para monitorar a saúde do aplicativo, solucionar problemas e até mesmo reunir informações para o desenvolvimento futuro.
Recursos :
No .NET, temos três tipos de comunicação: comunicação em tempo real, comunicação síncrona e assíncrona. Tecnologias de comunicação em tempo real , como o Signalr no ecossistema .NET, permitem essas funcionalidades mantendo uma conexão constante entre servidor e cliente. A comunicação síncrona é feita principalmente usando o cliente HTTP, enquanto a comunicação assíncrona é feita através de diferentes mensagens e estruturas e bibliotecas baseadas em eventos. Os sistemas de mensagens atuam como um intermediário entre diferentes partes do seu sistema, permitindo que eles se comuniquem sem serem diretamente conectados. Os manipuladores de eventos , por outro lado, são usados para lidar com eventos em um único aplicativo. Eles facilitam um modelo de publicador-assinante, onde uma parte do aplicativo pode aumentar um evento ao qual outras peças podem reagir.
Recursos :
Esses serviços executam tarefas em segundo plano, liberando seu aplicativo para se concentrar nas interações do usuário. Se o processamento de dados, e-mails automatizados ou limpezas periódicas , os serviços de segundo plano garantem que essas tarefas não diminuam a velocidade ou interrompa a experiência do usuário.
Recursos :
Os testes de unidade concentram-se em partes isoladas do seu código, os testes de integração garantem que diferentes peças sejam bem juntas e os testes de ponta a ponta validam toda a jornada do usuário dentro do seu aplicativo. Juntos, eles formam uma rede de segurança, pegando bugs mais cedo, simplificando a depuração e tornando sua base de código robusta e sustentável.
Aqui você precisa saber:
Recursos :
Essas ferramentas fornecem insights em tempo real sobre o desempenho, o comportamento do usuário e as taxas de erro do seu aplicativo , permitindo resolver os problemas antes que eles se transformem em problemas completos proativamente.
O monitoramento se concentra na saúde e na disponibilidade de serviços e sistemas, geralmente desencadeando alertas para condições predefinidas.
A telemetria coleta, processa e transmite dados de sistemas, permitindo a análise de padrões, tendências e anomalias.
Recursos :
As soluções de contêiner encapsulam seu aplicativo .NET, bibliotecas e tempo de execução em contêineres isolados. Isso permite consistência em vários ambientes de desenvolvimento e produção , resolvendo problemas de dependência. Com recursos como sistemas de arquivos em camadas, você pode gerenciar facilmente imagens de contêiner para asp.net, .NET Core ou outros serviços .NET, otimizando os tempos de construção e a utilização de recursos.
Recursos :
Os provedores de nuvem fornecem uma camada de APIs para abstrair infraestrutura e provisionar com base em limites de segurança e cobrança. A nuvem é executada em servidores nos data centers , mas as abstrações de maneira inteligente dão a aparência de interagir com uma única "plataforma" ou grande aplicativo. A capacidade de provisionar, configurar e proteger rapidamente recursos com provedores de nuvem tem sido fundamental para o tremendo sucesso e complexidade dos DevOps modernos.
Os provedores de nuvem mais populares do mercado são AWS e Azure , bem como o Google Cloud .
Aqui, você deve saber como gerenciar usuários e administração, redes, servidores virtuais etc.
Recursos :
O CI/CD automatiza os estágios de construção, teste e implantação em um pipeline simplificado e resistente a erros. Isso significa liberações mais rápidas, correções de bugs e mais tempo para se concentrar no desenvolvimento de recursos .
Aqui você precisa saber como:
Recursos :
Algumas bibliotecas .NET úteis. Observe que nem todas as bibliotecas serão usadas por todos, depende principalmente de um projeto em que você trabalha.
Além disso, você também precisa saber o seguinte:
As performances desempenham um papel essencial nas aplicações .NET. Aqui você precisa saber:
Essas ferramentas podem ajudá -lo a identificar e depurar diferentes gargalos de desempenho que você tem em seu código. Para isso, você pode usar outras ferramentas, como:
Junto com as ferramentas, você deve estar ciente de diferentes práticas de melhor desempenho para .NET:
Armazenamento em cache (cache de memória in-membro ou redis)
Otimização do banco de dados (otimizar consultas, indexação adequada, pool de conexões)
Programação assíncrona (descarregue todas as operações extensas da CPU ou de E/S para DB, sistemas de arquivos, Ext.
Use a estrutura da entidade com sabedoria (use carregamento ansioso, projeções e otimizações como consultas compiladas)
Gerenciamento de memória (use tipos de valor e seja cauteloso com grandes gráficos de objetos. Use o padrão de disposição para conexões ou fluxos de banco de dados.
Cache HTTP (use ETAGs, cabeçalhos de última hora)
Minimize as viagens de ida e volta (reduza o número de solicitações HTTP e viagens de volta ao banco de dados)
Redes de entrega de conteúdo (CDNs) (Offload estático (CSS, JavaScript, Imagens) para CDNs para entrega mais rápida aos usuários)
Compressão (Ativar compressão GZIP ou Brotli para respostas HTTP para reduzir o tamanho da transferência de dados)
Registro e rastreamento (evite o login excessivo de produção. Use rastreamento distribuído entre microsserviços.)
Paralelismo e concorrência (utilize o paralelismo e a multithreading para tarefas ligadas à CPU usando classe paralela ou Tarefa Parallel Library (TPL))
Otimização de recursos (otimize imagens e ativos para a Web reduzir os tempos de carregamento)
Http2 sobre SSL (agora toma decisões inteligentes sobre o conteúdo da página)
Meça e monitore o desempenho (use versus ferramentas de diagnóstico, insights de aplicativos ou benchmarkdotnet)
Span de usuário <> em vez de coleções (os vãos podem representar uma seção contígua da memória; isso significa que podemos usá -las para operar com matrizes)
A segurança desempenha um papel essencial no desenvolvimento de aplicativos. Os aspectos mais críticos da segurança no mundo .NET são:
Conceitos de autenticação e autorização :
Conceitos de criptografia e proteção de dados :
Se você acha que o roteiro pode ser melhorado, abra um PR com quaisquer atualizações e envie quaisquer problemas. Além disso, continuarei a melhorar isso, então você deve estrelar esse repositório também.
Dr. Milan Milanović - CTO na 3MD e Microsoft MVP para tecnologias de desenvolvedores.