Conoce los fundamentos del desarrollo de aplicaciones .NET siguiendo el enfoque de Clean Architecture inspirado en los principios de Robert C. Martin.
Este curso está diseñado para desarrolladores y entusiastas del software que desean aprender a aplicar principios, patrones y buenas prácticas para construir aplicaciones robustas, escalables y de alta calidad con una Arquitectura Limpia.
A lo largo del entrenamiento, exploraremos cómo implementar Clean Architecture para desarrollar tanto aplicaciones monolíticas como distribuidas a través de microservicios, utilizando .NET 9 y C# 13.
¡Transforma tu forma de construir aplicaciones y lleva tus habilidades al siguiente nivel!
Formato del curso
Las sesiones se llevarán a cabo en vivo a través de Microsoft Teams, brindando una experiencia interactiva y enriquecedora.
Durante las sesiones en vivo, los participantes tendrán la oportunidad de interactuar directamente con el instructor y con otros asistentes para resolver dudas y profundizar en los temas abordados.
Además, todas las sesiones serán grabadas y los videos estarán disponibles para su descarga. Esto permitirá a los participantes repasar los contenidos a su propio ritmo o ponerse al día en caso de no poder asistir a alguna sesión.
Material para el participante
Cada participante recibirá un manual de estudiante en formato PDF con los temas del curso.
Diploma
Al finalizar el entrenamiento los participantes recibirán un certificado digital de participación.
Fecha de inicio
Martes 14 de enero de 2025
Horario
Martes y Jueves (2 sesiones por semana).
18:30 a 21:30 horas UTC-06. Tiempo del centro de México.
Duración
48 horas
Costo
199 USD o 3,980.00 pesos mexicanos.
Costo de apoyo para participantes del curso anterior de Clean Architecture
59 USD o 1,180.00 pesos mexicanos.
Registro
Realiza el pago a través de PayPal o mediante transferencia o depósito bancario y envía tu comprobante a logistica@ticapacitacion.com para confirmar tu participación.
NOTA: Para la emisión de facturas en la republica mexicana, el pago deberá ser realizado mediante transferencia o depósito bancario.
Enlace para pago mediante PayPal
Datos para Transferencia o depósito bancario
Enlace para pago de participantes del curso anterior de Clean Architecture
Escribe al correo logistica@ticapacitacion.com para solicitar el enlace de pago.
Si necesitas más información, escribe a logistica@ticapacitacion.com.
El cupo es limitado.
El crecimiento acelerado de las tecnologías y frameworks web, así como las demandas actuales de los usuarios, han cambiado el enfoque para la creación de aplicaciones empresariales. Existen muchos desafíos, tan solo empezar por elegir una arquitectura de software apropiada para resolver necesidades específicas puede ser algo abrumador.
Clean Architecture (Arquitectura Limpia) es un concepto popularizado por Robert Cecil Martin conocido como "Uncle Bob". Clean Architecture, se compone de un conjunto de patrones, prácticas y principios para crear una arquitectura de software que sea simple, comprensible, flexible, comprobable y mantenible.
El propósito principal de la arquitectura es respaldar el ciclo de vida del sistema. Una buena arquitectura hace que el sistema sea fácil de entender, fácil de desarrollar, fácil de mantener y fácil de implementar. El objetivo final es minimizar el costo de vida útil del sistema y maximizar la productividad del programador.
En este entrenamiento presentaremos una guía práctica con recomendaciones para implementar patrones, buenas prácticas, principios y frameworks que nos permitan construir aplicaciones .NET implementando una Arquitectura Limpia tomando como referencia el diagrama Clean Architecture de Robert Cecil Martin.
Para ejemplificar cada uno de los elementos descritos en el diagrama de Clean Architecture, desarrollaremos una aplicación que permitirá crear y consultar órdenes de compra para la empresa ficticia NorthWind. La aplicación incluirá código backend que expondremos a través de una API Web e incluirá código frontend que implementaremos a través de una aplicación Blazor WebAssembly.
Al finalizar este entrenamiento los participantes serán capaces de:
Este curso está dirigido a todas las personas que se encuentren interesadas en conocer los principios, patrones y buenas prácticas para empezar a desarrollar aplicaciones implementando una Arquitectura de software limpia (Clean Architecture).
Para poder aprovechar al máximo este entrenamiento, se recomienda que los participantes tengan conocimientos básicos del lenguaje de programación C#, ASP.NET Core y algunos principios y patrones como SOLID, Inyección de Dependencias, CQRS, Mediator, Specification, Repository y Unit Of Work.
El contenido de este entrenamiento está basado en .NET 9 y C# 13 utilizando Visual Studio 2022.
Para poder practicar los conceptos y realizar los ejercicios del curso, se recomienda trabajar con un equipo de desarrollo con Windows 10 o posterior y Visual Studio 2022 que puede ser la versión gratuita Visual Studio Community.
Lección 1
IntroducciónEn esta lección se presenta una introducción a Clean Architecture y la propuesta de Robert C. Martin.
Objetivos
Al finalizar esta lección, los participantes podrán:
Lección 2
Definición del caso de usoEn esta lección describiremos el caso de uso que tomaremos como base para desarrollar una aplicación .NET implementando Clean Architecture.
Después de definir el caso de uso, crearemos la estructura inicial de la solución utilizando Visual Studio.
Objetivos
En esta lección los participantes:
Lección 3
Implementando la capa de Reglas de negocio EmpresarialesLas entidades encapsulan las reglas de negocio de toda la empresa. Una entidad puede ser un objeto con métodos o puede ser un conjunto de estructuras de datos y funciones. No importa lo que sea siempre que las entidades puedan ser utilizadas por otras aplicaciones diferentes en la empresa.
Las entidades encapsulan las reglas más generales y de alto nivel. Son las menos propensas a cambiar cuando algo externo cambia. Por ejemplo, las entidades no se tienen que ver afectadas por un cambio en la navegación de la página o la seguridad. Ningún cambio operativo en una aplicación en particular debería afectar la capa de Entidades.
En esta capa podemos definir Interfaces, entidades POCO, Excepciones personalizadas, Objetos de Valor (Value Object), Eventos, Especificaciones, DTOs, etc.
En esta lección definiremos las reglas de negocio empresariales que serán requeridas para resolver el caso de uso Crear Orden de compra.
Objetivos
En esta lección los participantes:
Lección 4
Implementando la capa de Reglas de negocio de la aplicaciónEl software de esta capa contiene reglas de negocio específicas de la aplicación. Encapsula e implementa todos los casos de uso del sistema. Los casos de uso orquestan el flujo de datos hacia y desde las entidades para que estas apliquen sus reglas de negocio empresariales y permitan lograr los objetivos del caso de uso.
Los cambios en esta capa no deben afectar a las entidades. Esta capa tampoco debe ser afectada por cambios externos como la base de datos, la interfaz de usuario o cualquiera de los framework utilizados.
Si hay algún cambio en el funcionamiento de la aplicación, esto podría afectar a los casos de uso y, por lo tanto, al software en esta capa. Si los detalles de un caso de uso cambian, es seguro que algún código de esta capa se verá afectado.
Los elementos exclusivos de esta capa son los Use Case Interactors, Use Case Input Ports y Use Case Output Ports.
Algunos otros elementos que pueden encontrarse en esta capa son similares a los que se pueden definir en la capa de Reglas de Negocio Empresariales, pero con enfoque en las necesidades de la aplicación que se esté desarrollando.
En esta lección definiremos las reglas de negocio de la aplicación que serán requeridas para resolver el caso de uso Crear Orden de compra.
Objetivos
En esta lección los participantes:
Lección 5
Implementando la capa de Adaptadores de InterfazEl software en esta capa está formado por un conjunto de adaptadores que convierten los datos del formato más conveniente para los casos de uso y entidades, al formato más conveniente para algún agente externo como la Base de Datos o la Web.
En esta capa también puede existir cualquier otro adaptador necesario para convertir datos de algún formato externo, tal como el de un servicio externo, al formato interno utilizado por los casos de uso y las entidades.
Es esta capa implementaremos las abstracciones definidas en las capas de Reglas de Negocio Empresariales y Reglas de Negocio de la Aplicación.
Objetivos
En esta lección los participantes:
Lección 6
Implementando la capa Frameworks And DriversLa capa más externa generalmente se compone de frameworks y herramientas como la base de datos, el framework web, etc. Generalmente, no se escribe mucho código en esta capa que no sea el código necesario para comunicarse con el siguiente círculo hacia adentro.
Esta capa es donde van todos los detalles. La Web es considerada como un detalle, esto es, un dispositivo de entrada y salida de información, así como cualquier otra Interfaz de Usuario como la consola. La base de datos también es considerada como un detalle. Guardamos estas cosas en el exterior, donde pueden hacer poco daño.
Objetivos
En esta lección los participantes:
Lección 7
Implementando validaciónLa validación de los datos de entrada es algo común que debemos implementar en la mayoría de las aplicaciones. En esta lección modificaremos el caso de uso para agregar criterios de validación de los datos de entrada y mostraremos la forma de implementar esa validación en una aplicación implementando Clean Architecture.
Para implementar la validación en la aplicación, implementaremos un framework de validación que podrá ser consumido por diversas aplicaciones. Utilizaremos la biblioteca de validación para .NET FluentValidation como una herramienta de validación y demostraremos la forma de utilizar bibliotecas o frameworks de terceros como simples herramientas que pueden ser remplazadas fácilmente por alguna otra herramienta sin afectar a otros componentes de la aplicación.
Objetivos
En esta lección los participantes:
Lección 8
Manejo de excepcionesCuando ejecutamos algún tipo de lógica de negocios y deseamos reportar alguna condición significativa, por ejemplo, para notificar al usuario que una determinada acción no pudo ser realizada, es común hacerlo lanzado algún tipo de excepción personalizada.
En esta lección mostraremos una forma de manejar excepciones de forma centralizada para devolver a los clientes respuestas apropiadas implementando Clean Architecture.
Objetivos
En esta lección los participantes:
Lección 9
Eventos de dominioUtilizamos Eventos de dominio para implementar explícitamente los efectos secundarios de los cambios que suceden dentro del dominio. En otras palabras y utilizando la terminología DDD, utilizamos Eventos de dominio para implementar explícitamente los efectos secundarios de los cambios en los Agregados.
En esta lección presentaremos una introducción a los Eventos de dominio implementando una arquitectura limpia.
Objetivos
Al finalizar esta lección los participantes contarán con las habilidades y conocimientos para:
Lección 10
Registro de sucesos (Logging)En la mayoría de los casos es necesario llevar un registro de sucesos (Logging) que se producen durante la ejecución de una aplicación. Podemos diferenciar 2 tipos de registros:
En esta lección ejemplificaremos estos 2 tipos de registros agregando nuevos requerimientos al caso de uso Crear orden de compra.
Objetivos
Al finalizar esta lección los participantes contarán con las habilidades y conocimientos para:
Lección 11
Manejo de transaccionesCuando implementamos el patrón Repository junto con el patrón Unit Of Work, hacemos que nuestras operaciones de persistencia de datos sean realizadas de forma transaccional. En algunos casos, cuando realizamos operaciones de persistencia de datos utilizando múltiples repositorios, podría ser necesario implementar un manejo de transacciones a nivel de caso de uso envolviendo múltiples repositorios.
En esta lección implementaremos un escenario de manejo de transacciones a nivel de caso de uso.
Objetivos
Al finalizar esta lección los participantes contarán con las habilidades y conocimientos para:
Lección 12
El patrón SpecificationOtro de los patrones comúnmente utilizados en arquitecturas orientadas al dominio, es el patrón de diseño Specification.
En esta lección exploraremos el patrón de diseño Specification y la forma en que podemos utilizarlo al implementar una arquitectura limpia.
Objetivos
Al finalizar esta lección los participantes contarán con las habilidades y conocimientos para:
Lección 13
Implementar requerimientos de Autenticación y autorizaciónPara ejemplificar la implementación de autenticación y autorización en aplicaciones .NET con Clean Architecture, en esta lección agregaremos nuevos requerimientos al sistema que estamos desarrollando para especificar que solo usuarios autenticados estarán autorizados para poder crear órdenes de compra.
Objetivos
Al finalizar esta lección los participantes:
Lección 14
Implementar el registro de usuariosPara que un usuario pueda crear órdenes de compra será necesario permitir la creación de cuentas de usuarios para que estos puedan posteriormente autenticarse y ser autorizados.
Para ofrecer la funcionalidad de administración de usuarios, implementaremos un framework de membresía. Este framework de membresía básico nos permitirá registrar y autenticar usuarios utilizando como herramienta la funcionalidad que ofrece ASP.NET Core Identity pero, con la opción de utilizar alguna otra herramienta propia o de terceros.
El sistema de membresía ofrecerá componentes de backend y componentes de frontend para aplicaciones Blazor.
En esta lección implementaremos los componentes de backend y los componentes de frontend para resolver el nuevo caso de uso de registro de usuarios.
Objetivos
Al finalizar esta lección los participantes:
Lección 15
Implementar el inicio de sesiónPara que un usuario pueda crear órdenes de compra, primero deberá iniciar sesión proporcionando sus credenciales para poder ser autenticado y autorizado.
En esta lección implementaremos un nuevo caso de uso para implementar el inicio de sesión de usuarios.
Objetivos
Al finalizar esta lección los participantes:
Lección 16
Configurar los servicios de autenticación y autorizaciónPara que un usuario pueda acceder a recursos protegidos en la API Web, este deberá enviar el token de acceso durante la petición del recurso.
En esta lección configuraremos los servicios de autenticación y autorización de ASP.NET Core para que el usuario pueda acceder a los recursos protegidos de la aplicación. El esquema de autenticación que utilizaremos será JWT Bearer.
Objetivos
Al finalizar esta lección los participantes: