Esta es una guía paso a paso para convertirse en ingeniero de .NET, con enlaces a recursos de aprendizaje relevantes.
Si desea obtener más información sobre .NET Technologies, asegúrese de suscribirse a mi boletín .
Si encuentra útil este repositorio, considere apoyarme en Patreon:

Esta hoja de ruta tiene como objetivo darle una idea sobre el paisaje. La hoja de ruta lo guiará si necesita aclaraciones sobre qué aprender a continuación en lugar de alentarlo a elegir lo que es exagerado y de moda. Ayudaría si creciera un poco de comprensión de por qué una herramienta sería más adecuada para algunos casos que el otro y recuerda que la exageración y la moda solo a veces significan el más adecuado para el trabajo.
Si desea o está utilizando este proyecto para aprender o iniciar su solución, dale una estrella. ¡Gracias!
Tenga en cuenta que por nivel de antigüedad, significa:
? Junior : conceptos básicos
? Medior : conceptos avanzados
? Senior : conceptos de expertos

Descargue la versión PDF.
A continuación, puede encontrar una versión mínima mínima que cada desarrollador junior de .NET necesita saber, con materiales de aprendizaje incluidos y hacer clic en la versión PDF.

Descargue la versión PDF.
Antes de entrar en detalles, debe tener una comprensión sólida del ecosistema .NET . Aquí hay algunos que debes entender:
En esta sección, veremos los principales tiempos de ejecución de .NET. Consideramos el tiempo de ejecución de .NET como cualquier cosa que implementa el estándar ECMA-335 para .NET .
.NET Framework es un marco de desarrollo de software para construir y ejecutar aplicaciones en Windows. .NET Framework consta de tiempo de ejecución de idiomas comunes (CLR), Biblioteca de clases de marco .NET y cargas de trabajo de aplicaciones (WPF, formularios de Windows y ASP.NET). CLR es parte de una infraestructura compartida que ejecuta código, JIT, hace recolección de basura (C#, VB.NET, F#), etc. El código que CLR administra se llama código administrado. El código se compila en un lenguaje intermedio común (CIL) y se almacena en ensamblajes (con extensión .exe o .dll). Cuando se ejecuta una aplicación, CLR toma un ensamblaje y usa un compilador de justo a tiempo (JIT) para transpicar el código de la máquina al código que puede ejecutarse en una arquitectura de computadora específica.
Puede usarlo para el desarrollo de escritorio y web, pero está limitado al desarrollo de Windows, y se realiza previamente en Windows.
.NET Core es uno de los tiempos de ejecución en el ecosistema .NET. Fue lanzado en 2016. Y es de código abierto. No representa una nueva versión del marco .NET y no la reemplazará. Es una versión completamente independiente, construida para permitir la capacidad multiplataforma para el desarrollo de aplicaciones. .NET Core consta de un host de aplicación (dotnet.exe) que ejecuta CLR y biblioteca. Tiene un tiempo de ejecución del idioma común (CORECLR) y .NET Core Class Biblioteca. Admite diferentes cargas de trabajo de aplicaciones, como ASP.NET Core (MVC y API), aplicaciones de consola y UWP (actualmente).
.NET Core puede ejecutarse en diferentes plataformas: Windows Client, Server, IoT, Linux, Ubuntu, FreeBSD, Tizen y Mac OSX, y se puede instalar de lado a lado de diferentes versiones por máquina o usuario.
.NET 5 se lanzó en noviembre de 2020 con el objetivo de unificar el desarrollo para las aplicaciones de escritorio, web, nubes, móviles, juegos, IoT y AI. El objetivo de configuración anterior era producir un solo tiempo de ejecución y marco de .NET, multiplataforma, integrando las mejores características de .NET Core, .NET Framework, Xamarin y Mono. Sin embargo, debido a la pandemia de salud global, la unificación se pospuso a .NET 6. .NET 5 es una base de código compartida para las implementaciones de .NET Core, Mono, Xamarin y Future .NET. Además, se actualizan los nombres del marco de destino (TFMS), que expresan qué versión de .NET Dargeting, por lo que ahora tenemos Net5.0. Esto es para el código que se ejecuta en todas partes. Combina y reemplaza los nombres NetCorePP y Netstandard y Net5.0-Windows que representan sabores específicos del sistema operativo de .NET 5 que incluyen Net5.0 más enlaces específicos del sistema operativo.
.NET 9 es el último tiempo de ejecución en el ecosistema .NET. Se lanza en noviembre de 2024. Y unifica el desarrollo de aplicaciones de escritorio, web, nubes, móviles, juegos, IoT y AI. .NET 9 consta de un host de aplicación (dotnet.exe) que ejecuta CLR y biblioteca. Tiene un tiempo de ejecución de idiomas comunes (coreClr) y biblioteca de clases .NET 8. También incluye ASP.NET Core 9. .NET 9 tiene un soporte de plataforma casi idéntico como .NET Core 3.1 para Windows, MacOS y Linux.
.NET 9 es una versión de soporte de término estándar , admitido durante seis meses después de una versión posterior de STS o LTS.
.NET 8 fue un soporte a largo plazo (LTS) . Esos lanzamientos son compatibles durante tres años después del lanzamiento inicial.
Diferentes tiempos de ejecución utilizan diferentes bibliotecas de clase, por ejemplo, .NET Framework utiliza la biblioteca de clases .NET Framework, mientras que .NET Core contiene su biblioteca de clases, así como Xamarin con su biblioteca de clases. De esta manera, es difícil compartir código entre diferentes tiempos de ejecución, ya que usan API diferentes. La solución de Microsoft es la Biblioteca Standard .NET , lanzada en 2016. Representa un conjunto de especificaciones (formales) que dicen qué API puede usar y todos los tiempos de ejecución implementados. Es la evolución de las bibliotecas de clase portátiles (PCL). Los tiempos de ejecución específicos implementan versiones específicas de .NET Standard (implementando API específicas). Por ejemplo, .NET Framework 4.8.1 implementa .NET Standard 2.0, y .NET 7 implementa .NET Standard 2.1 (enlace).
Para obtener más información sobre el ecosistema .NET, consulte esta publicación de blog.
Calendario de lanzamiento de .NET por Microsoft:

C# es un lenguaje de programación desarrollado por Microsoft. Es un idioma para construir cualquier cosa, desde aplicaciones y juegos de escritorio (usando Unity) hasta soluciones y servicios web basados en la nube. Con un fuerte soporte para la programación orientada a objetos y una biblioteca rica, está diseñada para ser fácil y eficiente.
La última versión es C# 13 , lanzada en noviembre de 2024.
Consulte la línea de tiempo C# completa:

Debe comprender diferentes características del idioma C# , como:

Pero también bibliotecas y API .NET para:
Recursos :
Dominar los patrones de diseño, el código limpio y el control de versiones como GIT le permite escribir un código eficiente y mantenible que funcione y prospera en un entorno de equipo. Es la diferencia entre ser un codificador y un ingeniero de software experto .
Aquí, necesita conocer diferentes principios, como:
Principios sólidos :
Pero también:
Recursos :
Es un marco multiplataforma y de alto rendimiento desarrollado por Microsoft para crear aplicaciones web, API y microservicios . También puede ejecutar sus aplicaciones en Windows, Linux o MacOS. Está diseñado para flexibilidad y escalabilidad con características como inyección de dependencia incorporada y un sistema de configuración robusto.
Aquí, también necesita conocer los fundamentos del desarrollo web , como:
Recursos :
Si desea construir UI en .NET, necesitará estos marcos. Razor es un motor de plantilla para crear HTML dinámico, mientras que Blazor lo lleva a una muesca, lo que le permite crear UI de web interactivas usando C# en lugar de JavaScript. Maui es un sucesor de Xamarin hecho para construir aplicaciones móviles multiplataforma. Windows Presentation Foundation (WPF) es un marco de la interfaz de usuario que crea aplicaciones de clientes de escritorio. UNO Platform es una interfaz gráfica de usuario de código multiplataforma de código abierto que permite que Winui y Universal Windows Platform (UWP) se ejecute en iOS, MacOS, Linux, Android y WebAssembly.
Recursos :
El buen diseño de base de datos garantiza un almacenamiento de datos eficiente y una recuperación rápida, lo que hace que su aplicación se ejecute más suave y escala más fácil. SQL , el idioma de referencia para la interacción de la base de datos, le brinda el poder de consultar, actualizar y administrar los datos que ha diseñado cuidadosamente para almacenar.
Aquí, necesitas saber:
Recursos :
El mapeo relacional de objetos (ORM) es como un traductor entre su código C# orientado a objetos y la base de datos relacional, eliminando la tediosa tarea de escribir consultas SQL para las operaciones básicas de CRUD. Usando marcos ORM como Entity Framework, puede manipular los datos como objetos en su código, haciéndolo más legible y mantenible . Esto acelera el desarrollo, minimiza los errores y le permite centrarse en la lógica de negocios compleja en lugar de la lucha con la sintaxis de la base de datos.
Para el marco de la entidad , debe saber lo siguiente:
Recursos :
El almacenamiento en caché es como la memoria personal a corto plazo de su aplicación, que almacena datos a acceso frecuentes para que se pueda recuperar rápidamente sin acceder a su base de datos . Al reducir la carga de la base de datos y acelerar el acceso a los datos, el almacenamiento en caché le da a su aplicación la ventaja competitiva que necesita para satisfacer las demandas de los usuarios de capacidad de respuesta y disponibilidad.
Recursos :
El registro captura información de tiempo de ejecución, errores y otros datos cruciales que pueden ayudarlo a identificar y solucionar rápidamente problemas, lo que hace que su aplicación sea más confiable y segura. Los marcos de registro como NLOG o SERILOG se integran a la perfección en .NET, lo que le brinda una herramienta de diagnóstico en tiempo real indispensable para monitorear la salud de la aplicación, los problemas de solución de problemas e incluso recopilar información para el desarrollo futuro.
Recursos :
En .NET tenemos tres tipos de comunicación: comunicación en tiempo real, comunicación sincrónica y asincrónica. Las tecnologías de comunicación en tiempo real , como SignalR en el ecosistema .NET, permiten estas funcionalidades manteniendo una conexión constante entre el servidor y el cliente. La comunicación sincrónica se realiza principalmente utilizando el cliente HTTP, mientras que la comunicación asíncrona se realiza a través de diferentes marcos y bibliotecas basados en mensajes y eventos. Los sistemas de mensajería actúan como un intermediario entre diferentes partes de su sistema, lo que les permite comunicarse sin estar directamente conectados. Los manejadores de eventos , en el otro lado, se utilizan para manejar eventos dentro de una sola aplicación. Facilitan un modelo de editor-subscriber donde una parte de la aplicación puede plantear un evento al que pueden reaccionar otras partes.
Recursos :
Estos servicios ejecutan tareas en segundo plano, liberando su aplicación para centrarse en las interacciones del usuario. Ya sea procesamiento de datos, correos electrónicos automatizados o limpiezas periódicas , los servicios de fondo aseguran que estas tareas no disminuyan ni interrumpan la experiencia del usuario.
Recursos :
Las pruebas unitarias se centran en las piezas aisladas de su código, las pruebas de integración aseguran que las diferentes piezas jueguen bien y las pruebas de extremo a extremo validen todo el viaje del usuario dentro de su aplicación. Juntos, forman una red de seguridad, capturan errores temprano, simplifican la depuración y hacen que su base de código sea robusta y mantenible.
Aquí necesitas saber:
Recursos :
Estas herramientas proporcionan información en tiempo real sobre el rendimiento, el comportamiento del usuario y las tasas de error de su aplicación , lo que le permite abordar los problemas antes de que se conviertan en problemas completos de manera proactiva.
El monitoreo se centra en la salud y la disponibilidad de servicios y sistemas, a menudo desencadenando alertas para condiciones predefinidas.
La telemetría recopila, procesa y transmite datos de los sistemas, lo que permite el análisis de patrones, tendencias y anomalías.
Recursos :
Las soluciones de contenedores encapsulan su aplicación .NET, bibliotecas y tiempo de ejecución en contenedores aislados. Esto permite la consistencia en múltiples entornos de desarrollo y producción , resolviendo problemas de dependencia. Con características como sistemas de archivos en capas, puede administrar fácilmente las imágenes de contenedores para ASP.NET, .NET Core u otros servicios .NET, optimizando los tiempos de compilación y la utilización de recursos.
Recursos :
Los proveedores de la nube proporcionan una capa de API a la infraestructura abstracta y la aprovisionan en función de los límites de seguridad y facturación. La nube se ejecuta en servidores en centros de datos , pero las abstracciones hábilmente dan la apariencia de interactuar con una sola "plataforma" o una gran aplicación. La capacidad de aprovisionar rápidamente, configurar y asegurar recursos con proveedores de la nube ha sido clave para el tremendo éxito y complejidad de las devops modernas.
Los proveedores de nubes más populares en el mercado son AWS y Azure , así como Google Cloud .
Aquí, debe saber cómo administrar usuarios y administración, redes, servidores virtuales, etc.
Recursos :
CI/CD automatiza las etapas de edificio, prueba e implementación en una tubería simplificada y resistente a los errores. Esto significa lanzamientos más rápidos, correcciones de errores y más tiempo para centrarse en el desarrollo de características .
Aquí necesitas saber cómo:
Recursos :
Algunas bibliotecas útiles .NET. Tenga en cuenta que no todas las bibliotecas serán utilizadas por todos, depende principalmente de un proyecto en el que trabaje.
Además de esto, también necesita saber lo siguiente:
Las actuaciones juegan un papel esencial en las aplicaciones .NET. Aquí necesitas saber:
Estas herramientas pueden ayudarlo a identificar y depurar diferentes cuellos de botella de rendimiento que tiene en su código. Para esto, puede usar otras herramientas, como:
Junto con las herramientas, debe tener en cuenta las diferentes mejores prácticas de rendimiento para .NET:
Almacenamiento en caché (caché de memoria en memoria o redis)
Optimización de la base de datos (optimizar consultas, indexación adecuada, agrupación de conexión)
Programación Async (descarga todas las operaciones extensas de CPU o de E/S a DB, sistemas de archivos, sistemas ext.)
Use el marco de la entidad sabiamente (use carga ansiosa, proyecciones y optimizaciones como consultas compiladas)
Gestión de la memoria (use tipos de valor y sea cauteloso con gráficos de objetos grandes. Use el patrón de eliminación de las conexiones o transmisiones de DB. Evite el boxeo/Unboxing. Use StringBuilder en lugar de una cadena para una gran cantidad de concatenaciones).
HTTP almacenado en caché (use ETAG, listas de encabezados modificados)
Minimizar los viajes de ida y vuelta (reduzca el número de solicitudes HTTP y la base de datos de la redaboración)
Content Delivery Networks (CDNS) (ACTIVOS ESTÁTICOS DE DESCARGA (CSS, JavaScript, Imágenes) a CDN para una entrega más rápida a los usuarios)
Compresión (habilite la compresión GZIP o brotli para las respuestas HTTP para reducir el tamaño de la transferencia de datos)
Registro y rastreo (evite el registro excesivo en la producción. Use el rastreo distribuido a través de los microservicios).
Paralelismo y concurrencia (utilice el paralelismo y la lectura múltiple para las tareas unidas a CPU utilizando la clase paralela o la biblioteca paralela de tareas (TPL)))
Optimización de recursos (optimizar imágenes y activos para la web para reducir los tiempos de carga)
Http2 sobre SSL (ahora tomar decisiones inteligentes sobre el contenido de la página)
Medir y monitorear el rendimiento (use herramientas de diagnóstico vs, información de aplicaciones o BenchmarkDotnet)
Span de usuario <> en lugar de colecciones (los tramos pueden representar una sección contigua de la memoria; esto significa que podemos usarlas para operar sobre matrices)
La seguridad juega un papel esencial en el desarrollo de aplicaciones. Los aspectos más críticos de la seguridad en el mundo .net son:
Conceptos de autenticación y autorización :
Conceptos de criptografía y protección de datos :
Si cree que la hoja de ruta se puede mejorar, abra un PR con cualquier actualización y envíe cualquier problema. Además, continuaré mejorando esto, por lo que también debe protagonizar este repositorio.
Dr. Milan Milanović - CTO en 3MD y Microsoft MVP para tecnologías de desarrolladores.