Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

C# — Avanzado

10h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • C#

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Dirigido a desarrolladores con dominio sólido de C# que buscan dar el salto hacia la ingeniería de software de alto nivel, este curso aborda los fundamentos que separan a un programador competente de un arquitecto técnico capaz de tomar decisiones de diseño con criterio y evidencia. A lo largo de diez horas, el participante trabajará con patrones arquitectónicos modernos como Clean Architecture y arquitectura hexagonal, profundizará en el sistema de tipos genérico avanzado, explorará las implicaciones de los distintos enfoques de gestión de memoria y concurrencia, y aprenderá a anticipar y prevenir problemas estructurales mediante análisis estático y automatización de calidad. Al finalizar, el participante será capaz de diseñar y justificar la arquitectura de una solución .NET, optimizar su rendimiento de manera medible y establecer salvaguardas automatizadas que mantengan la integridad del código a lo largo del ciclo de vida del proyecto.

Al completar el curso, el participante será capaz de:

  1. Explicar los principios que fundamentan Clean Architecture, la arquitectura hexagonal y el patrón CQRS, distinguiendo cuándo cada enfoque aporta valor frente a sus costes de complejidad y mantenimiento.
  2. Describir el funcionamiento interno de las estrategias avanzadas de gestión de memoria en .NET (Span<T>, Memory<T>, ArrayPool<T>) y los mecanismos de concurrencia de alto rendimiento (Channel<T>, PLINQ), identificando los trade-offs asociados a cada opción.
  3. Diseñar un sistema de tipos genérico avanzado con constraints, covarianza y contravarianza que garantice type-safety en tiempo de compilación, y aplicar inyección de dependencias analizando el grafo de lifetimes para eliminar conflictos de captive dependency antes de ejecutar la aplicación.
  4. Optimizar pipelines de concurrencia y consultas sobre EF Core avanzado, respaldando las mejoras con benchmarks reproducibles y análisis de planes de ejecución SQL.
  5. Arquitecturar una solución .NET documentada mediante ADR y reforzada con un pipeline de CI que integre Roslyn Analyzers y reglas de ArchUnit para bloquear automáticamente cualquier violación arquitectónica o de estilo.
  6. Evaluar críticamente decisiones de arquitectura —incluyendo el uso de CQRS con MediatR frente a servicios directos— argumentando la elección con métricas objetivas de complejidad ciclomática, acoplamiento y coste de mantenimiento.

Arquitecturas limpias y decisiones de diseño documentadas. El bloque de apertura sitúa al participante ante las decisiones de mayor impacto en una solución .NET: la separación de capas en Clean Architecture y la arquitectura hexagonal, la gestión explícita de dependencias entre proyectos y la elaboración de Architecture Decision Records (ADR) como artefacto de comunicación técnica. A continuación se introduce el patrón CQRS mediado por MediatR y su contraparte de servicios directa, analizando con métricas reales de complejidad ciclomática y acoplamiento cuándo el mediador aporta valor y cuándo lo añade innecesariamente.

Sistema de tipos avanzado e inyección de dependencias segura. Este bloque profundiza en las capacidades del compilador como primera línea de defensa. Se trabaja el diseño de interfaces y clases genéricas con constraints múltiples, covarianza e contravarianza, eliminando castings inseguros en el código consumidor. Paralelamente, se estudia el ciclo de vida de los servicios registrados en el contenedor DI, con énfasis en la detección temprana de conflictos de captive dependency a partir del análisis estático del grafo de dependencias, antes de que la aplicación arranque.

Gestión de memoria y concurrencia de alto rendimiento. Con base en benchmarks reproducibles construidos con BenchmarkDotNet, el participante compara el coste de allocations y throughput entre el acceso convencional a datos y las alternativas basadas en Span<T>, Memory<T> y ArrayPool<T>. El estudio de concurrencia aplica Channel<T>, Parallel.ForEachAsync y PLINQ para transformar pipelines secuenciales en soluciones paralelizadas, midiendo la reducción de latencia de forma cuantitativa. Se complementa con la optimización de consultas EF Core mediante compiled queries, split queries, proyecciones con AsNoTracking y lectura crítica del plan de ejecución SQL generado.

Automatización de calidad y generación de código en tiempo de compilación. El bloque de cierre convierte las decisiones arquitectónicas anteriores en restricciones ejecutables. Se configura un pipeline de CI que integra Roslyn Analyzers y reglas de ArchUnit para bloquear merges ante violaciones de estilo o estructura. Como colofón, se aborda la creación de Source Generators con Roslyn: desde el análisis del árbol sintáctico hasta la generación de boilerplate predecible y testeable, garantizando que el output no introduce errores en el proyecto consumidor.

  • SDK: .NET 8 o superior (se recomienda la última versión estable disponible).
  • IDE: Visual Studio 2022 (v17.8+) o JetBrains Rider 2024.1+; Visual Studio Code con la extensión C# Dev Kit es aceptable con funcionalidad reducida.
  • Paquetes NuGet: BenchmarkDotNet, MediatR, NetArchTest.Rules (o ArchUnitNET), Microsoft.CodeAnalysis (Roslyn SDK).
  • Herramientas de CI: acceso a GitHub Actions, GitLab CI o Azure Pipelines para la práctica del bloque de automatización.
  • Base de datos: SQL Server Express, PostgreSQL o SQLite para los ejercicios de EF Core avanzado.
  • Control de versiones: Git 2.40+ instalado localmente.
  • Hardware mínimo: 16 GB de RAM recomendados para ejecutar los benchmarks de memoria con resultados representativos.

El participante debe llegar al curso con dominio de los contenidos cubiertos en CS02 (C# — Intermedio), incluyendo manejo fluido de LINQ, programación asíncrona con async/await, principios SOLID, inyección de dependencias básica y escritura de pruebas unitarias con xUnit o NUnit. Se asume experiencia práctica con Entity Framework Core a nivel básico-intermedio y familiaridad con el flujo de trabajo en un repositorio Git con ramas y pull requests. Sin estos fundamentos, los bloques de optimización y arquitectura resultarán inaccesibles.