PRE-REQUISITOS
-
a Conocimientos intermedios de NET.
-
Conocimientos sólidos en Desarrollo con NET y ASP.
-
NET Core, incluyendo C#.
-
Uso de Entity Framework Core y consultas SQL.
-
Manejo de Dapper y conceptos avanzados de acceso a datos.
CONTENIDO DEL CURSO
-
Principios Arquitectónicos Fundamentales: Dependency Inversion, Separation of Concerns, Single Responsibility, DRY.Arquitecturas Tradicionales vs. Arquitectura Limpia (Clean Architecture).
-
Introducción a Clean Architecture: Estructura Circular: Core, Infrastructure, User Interface. Reglas de dependencia y el papel de la Inversión de Dependencias.
-
Diseño del Dominio (The Domain Project): Modelamiento práctico de DDD. Uso de Entities, Value Objects y Aggregates en .NET 8.
-
Ejercicio Práctico: Configuración de la solución de Visual Studio y creación de los proyectos Domain y Application Core.
-
Diseño del Application Core: Lograr el acoplamiento débil (loose coupling) mediante contratos e interfaces. El Patrón Repository y Unit of Work.
-
Implementación de CQRS (Simple CQRS): Separación de Commands (escritura) y Queries (lectura). Ventajas y desventajas de CQRS.
-
Uso de MediatR: Introducción al Mediador como herramienta para evitar referencias duras entre objetos. Creación de IRequest y IRequestHandler para comandos y consultas.
-
Manejo de Datos y Validaciones: Mapping de objetos (Entity a View Model/DTO) usando AutoMapper. Validación de datos de entrada en el Core usando Fluent Validation.
-
Ejercicio Práctico: Implementación de un flujo completo de CQRS con MediatR (Query para listar y Command para crear) con validación integrada.
-
Objetivo de la Infraestructura: Implementar servicios externos (Base de Datos, Logging, Clientes de API).
-
Persistencia con Entity Framework Core: Adición de EF Core: Paquetes NuGet, Registros y DbContext. Implementaciones del patrón Repository: Repositorio base genérico y repositorios específicos.
-
Implementación de Otros Servicios: Creación de interfaces de servicios en el Core (e.g., IEmailService). Implementación de servicios de infraestructura (e.g., servicio de correo usando SendGrid).
-
Ejercicio Práctico: Configuración de EF Core y la base de datos, implementación de la lógica de repositorio y registro de servicios de infraestructura en el contenedor DI.
-
El Proyecto API (User Interface): Configuración del programa y referencias a otros proyectos (principalmente por DI). Controladores ligeros interactuando mediante MediatR. Decisión sobre qué objetos retornar: View Models o DTOs, y uso de un tipo de respuesta unificado (BaseResponse).
-
Exposición y Documentación de la API: Añadir Swagger/OpenAPI para la descripción y especificación de la API. Configuración y uso de Swashbuckle.
-
Mejora del Comportamiento (Cross-Cutting Concerns): Manejo de errores en la API: Creación de Middleware para convertir las excepciones personalizadas del Core a respuestas HTTP adecuadas. Capacidades de Logging: Configuración del logging incorporado y uso de Serilog para logging estructurado. Autenticación: Introducción a los Identity API Endpoints en .NET 8.
-
Ejercicio Práctico: Configuración de la capa API, implementación del Middleware de manejo de excepciones y adición de Swagger.
-
Tipos de Pruebas en Clean Architecture: La importancia de un código base testeable. Unit Tests, Integration Tests y Functional Tests.
-
Creación de Unit Tests: Configuración de proyectos de prueba (xUnit). Uso de Mocking (Moq) para probar el código del Application Core (e.g., Request Handlers).
-
Ejercicio Práctico: Desarrollo de pruebas unitarias para un Query Handler y configuración de un entorno de prueba de integración para un servicio de infraestructura