TI Capacitación
Introducción a Clean Architecture en aplicaciones .NET
TI Capacitación
Sesiones en vivo a través de Microsoft Teams
Inicia 14 de enero de 2025
2 sesiones por semana
Martes y Jueves de 18:30 a 21:30 Hrs UTC-6

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.

Instructor
MVP Miguel Muñoz Serafí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

Pago de curso completo (199 USD): https://paypal.me/ticapacitacion/199usd

Datos para Transferencia o depósito bancario

Nombre: TI Capacitación Investigación y Desarrollo SA de CV
Número de cuenta: 0192095378
CLABE: 012650001920953784
Banco: BBVA-Bancomer-México

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.

  • Contenido
  • Módulo 1: Primeros pasos
  • Módulo 2: Implementando validación
  • Módulo 3: Manejo de Excepciones
  • Módulo 4: Eventos, Logs, Transacciones y Especificaciones
  • Módulo 5: Autenticación y Autorización
Acerca del entrenamiento

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.

Objetivos

Al finalizar este entrenamiento los participantes serán capaces de:

  • Describir los elementos principales del diagrama Clean Architecture de Robert C. Martin.
  • Iniciar el desarrollo de aplicaciones .NET implementando Clean Architecture.
  • Crear APIs Web utilizando ASP.NET Core implementando Clean Architecture.
  • Desarrollar aplicaciones Blazor WebAssembly implementando Clean Architecture.

Audiencia

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.

Requisitos

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ón

En 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:

  • Describir qué es Clean Architecture.
  • Describir las ventajas de implementar Clean Architecture para el desarrollo de aplicaciones.
  • Describir los elementos principales del diagrama Clean Architecture de Robert C. Martin.

Lección 2

Definición del caso de uso

En 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:

  • Conocerán el caso de uso a implementar.
  • Crearán la estructura inicial de la solución con Visual Studio.

Lección 3

Implementando la capa de Reglas de negocio Empresariales

Las 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:

  • Definirán las reglas de negocio empresariales de la empresa NorthWind.

Lección 4

Implementando la capa de Reglas de negocio de la aplicación

El 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:

  • Definirán los objetos de negocio de la aplicación incluyendo enumeraciones, entidades POCO, Value Objects, Agregados, DTOs, abstracciones de Puertos, Presentadores, Controladores y Repositorios.
  • Implementarán el caso de uso Crear orden de compra.

Lección 5

Implementando la capa de Adaptadores de Interfaz

El 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:

  • Implementarán el Repositorio.
  • Implementarán el Presenter.
  • Implementarán el Controller.
  • Agregarán un proyecto para centralizar el registro de dependencias.

Lección 6

Implementando la capa Frameworks And Drivers

La 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:

  • Implementarán la interfaz de usuario Swagger de una aplicación Web API.
  • Implementarán la interfaz de usuario de un cliente Blazor WebAssembly.

Lección 7

Implementando validación

La 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:

  • Implementarán validación de los datos de entrada.
  • Realizarán validación buscando valores existentes en la base de datos.

Lección 8

Manejo de excepciones

Cuando 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:

  • Crearán tipos de excepciones personalizadas para notificar condiciones de error.
  • Implementarán el manejo de excepciones de forma centralizada en ASP.NET Core.

Lección 9

Eventos de dominio

Utilizamos 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:

  • Describir qué es un Evento de dominio.
  • Implementar Eventos de dominio en aplicaciones con Clean Architecture.

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:

  • Registros del estado de la aplicación. Estos registros almacenan información del estado de una aplicación en el momento de una falla técnica. Esta información nos ayuda a diagnosticar y dar solución a errores en el funcionamiento de la aplicación.
  • Registros del dominio. Estos registros nos permiten llevar un seguimiento de las distintas acciones que suceden en el dominio, por ejemplo, la creación de una orden, la eliminación de un cliente, etc.

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:

  • Implementar registro (Logging) para dar seguimiento a las actividades realizadas en una aplicación.
  • Implementar registro (Logging) para dar seguimiento al estado de una aplicación.

Lección 11

Manejo de transacciones

Cuando 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:

  • Implementar manejo de transacciones a nivel de caso de uso envolviendo uno o más repositorios.

Lección 12

El patrón Specification

Otro 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:

  • Describir el patrón Specification.
  • Implementar el patrón Specification en aplicaciones .NET con Clean Architecture.

Lección 13

Implementar requerimientos de Autenticación y autorización

Para 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:

  • Habrán implementado lógica de negocio para que únicamente usuarios autorizados puedan crear órdenes de compra.

Lección 14

Implementar el registro de usuarios

Para 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:

  • Agregarán funcionalidad para crear cuentas de usuario utilizando como herramienta ASP.NET Core Identity.
  • Implementarán el enfoque Result para la devolución de errores de validación de datos.

Lección 15

Implementar el inicio de sesión

Para 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:

  • Agregarán funcionalidad para implementar el inicio de sesión de usuarios utilizando el sistema de membresía ASP.NET Core Identity.

Lección 16

Configurar los servicios de autenticación y autorización

Para 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:

  • Configurarán los servicios de autenticación y autorización de ASP.NET Core en la API Web.
  • Configurarán el servicio Swagger para poder acceder a recursos protegidos de la API Web utilizando el token de acceso.
  • Configurarán los servicios de autenticación y autorización de ASP.NET Core en la aplicación Blazor WebAssembly.