¿Qué es Arquitectura Hexagonal?

La Arquitectura Hexagonal, es un estilo de Arquitectura de Software que fue propuesto por Alistair Cockburn en 2005, con su propósito principal el de aislar la lógica de negocio de la infraestructura.

La Arquitectura Hexagonal, es un estilo de Arquitectura de Software que fue propuesto por Alistair Cockburn en 2005, con su propósito principal el de aislar la lógica de negocio de la infraestructura.

El diseño propuesto inicial solo contemplaba 2 capas, siendo el núcleo el dominio (reglas de negocio), y la capa externa la infraestructura.

Aunque hoy en día es más común ver Arquitecturas Hexagonales con 3 capas, añadiendo una capa extra entre infraestructura y dominio llamada: Aplicación.

La propuesta de esta Arquitectura es simple, tener el dominio separado de la infraestructura, y la manera como se comunica la infraestructura y el dominio es por medio de Adaptadores y Puertos.

Un puerto no es más que una interface de programación, un contrato que define que métodos existirán en la implementación, los puertos son de 2 tipos:

  • Puertos de entrada (Puerto primario): son interfaces que definen las acciones de un caso de uso, por ejemplo: registrar usuario, login, crear venta.
  • Puertos de salida (Puerto secundario): son interfaces que definen que es lo que el sistema necesita, es decir, que es lo que tus reglas de negocio van a necesitar del mundo exterior, de la infraestructura, por ejemplo: guardar en base de datos, enviar correo, enviar notificación push.

Los puertos serán los que hagan la comunicación entre la infraestructura y el dominio, de esta manera, nuestro dominio puede ser codificado sin necesidad de conocer cosas como frameworks, bases de datos, servicios externos. El dominio solo se centra en las acciones que necesita.

Los Adaptadores son la otra entidad existente en esta Arquitectura, los Adaptadores son de 2 tipos:

  • Adaptador Primario: son clases que usan los Puertos de Entrada (Puertos Primarios), el Adaptador Primario sería, lo que ejecuta un usuario o actor de entrada, por ejemplo, un API, una aplicación de consola, un formulario. La implementación del Puerto primario se encuentra en la capa Dominio cuando se usan 2 capas, o en la capa Aplicación cuando se usan 3 capas.
  • Adaptador Secundario: son clases que se encuentran en la infraestructura, clases que se encargan de implementar los Puertos de Salida (Puertos Secundarios), por ejemplo, son clases que se encarguen de: mensajes por smtp a correo, queries u ORM a base de datos, solicitudes HTTP a servicios externos.

En resumen, los adaptadores primarios usan los puertos de entrada, y los adaptadores secundarios implementan los puertos de salida.

De esta manera, la Arquitectura Hexagonal propone separar el dominio, permitiendo aislarlo para poder utilizar las reglas de negocio en distintas aplicaciones, haciendo cambios en infraestructura sin que afecten el dominio, la esencia del sistema.

También te permite hacer pruebas de las reglas de negocio, sin necesidad de involucrarte con la infraestructura.

Y, por último, te permite escalar el sistema de una manera limpia, ya que la mayoría de los cambios ocurren en la infraestructura, estos se pueden hacer sin necesidad de afectar el dominio.

La Arquitectura Hexagonal, es un estilo de Arquitectura muy utilizado hoy en día, y si quieres aprender más sobre esto, puedes tomar mi curso de Arquitectura Hexagonal, el cual tiene ejemplos con código que incluyen ejemplos realistas: Ir al Curso de Arquitectura Hexagonal.

También te dejo un video donde explico la Arquitectura Hexagonal paso a paso:

Si quieres aprender más sobre Programación, puedes suscribirte a mi plataforma Metal Code, donde encontrarás cursos de programación a un precio siempre accesible: https://metalcode.io/

Curso de Clean Architecture

He lanzado un curso de Clean Architecture en Udemy.

En este curso me he enfocado en contemplar las debilidades que mucho programador tiene a la hora de querer aprender Arquitectura de Software, ya que estas debilidades hacen parecer la arquitectura un tema complejo.

Comienza el curso con una sección donde aprenderemos los conceptos fundamentales de los paradigmas más utilizados en programación: paradigma estructurad, orientado a objetos y funcional.

Posterior me he enfocado en conceptos fundamentales de Arquitectura de Software General, lo cual, separado a Clean Architecture, te servirán a la hora de aprender otra arquitectura.

Por ultimo, veremos una sección donde veremos los conceptos de Clean Architecture, bajo una explicación teórica y práctica con código en C# .NET.

Puedes adquirir mi curso en este enlace.

¿Por qué Debes Aprender Arquitectura de Software?

La Arquitectura de Software es fundamental para cualquier desarrollador que busque elevar la calidad de sus proyectos, haciéndolos más escalables, mantenibles y económicos en términos de modificaciones futuras.

La Arquitectura de Software es fundamental para cualquier desarrollador que busque elevar la calidad de sus proyectos, haciéndolos más escalables, mantenibles y económicos en términos de modificaciones futuras.

Tener una Arquitectura de Software en tus proyectos, te brindara ventajas, como mayor facilidad para trabajar en equipo, facilidad a la hora de tomar decisiones de cambios, testeabilidad, reusabilidad, en si, tener una Arquitectura te apoyara a crear proyectos más fáciles de comprender, tanto a nivel código como diseño.

En el siguiente video te muestro un ejemplo de los beneficios de la Arquitectura de Software, ejemplos con código:

¿Para que sirven las Interfaces en Programación Orientada a Objetos?

Las interfaces son una herramienta que nos permitirá pasar mensajes entre nuestras distintas clases en un software.

Las interfaces son una herramienta que nos permitirá pasar mensajes entre nuestras distintas clases en un software.

También sirven de contrato con el cual podemos obligar a cumplir métodos y propiedades a quien las implemente.

Con las interfaces podemos hacer software enorme mantenible y escalable.

En el siguiente video te explico a detalle para que sirven y como utilizarlas.

Patrones de Arquitectura vs Patrones de Diseño

En el siguiente video te explicare que es un patrón de arquitectura y que es un patrón de diseño, su diferencia, y como estos pueden convivir en la creación de un software.

En el siguiente video te explicare que es un patrón de arquitectura y que es un patrón de diseño, su diferencia, y como estos pueden convivir en la creación de un software.

Preguntas y respuestas de programación #12, ¿Cómo consumir un servicio soap?

Contestando preguntas y respuestas sobre programación.

  • ¿Diferencia entre backgroundworker y método asíncrono?
  • ¿Cuál es la curva de aprendizaje para ser un buen desarrollador?
  • ¿Cómo consumir un servicio soap?
  • ¿Cómo saber elegir la arquitectura correcta?
  • ¿Cómo estructurar un proyecto?

Curso de arquitectura software

En este curso te enseñare según mi experiencia como puedes irte adentrando a ser un arquitecto de software.

Te daré consejos de como dividir un sistema y organizarlo, así como problemática que puedes encontrar, experiencia con clientes, como hacer sistemas escalables y listos para enfrentar cambios.

El curso esta en proceso por lo cual te recomiendo te suscribas a mi canal dando clic aquí para que estés enterado al momento que publique nuevo video de esta serie.

1.- Diagrama de componentes, aun sirve UML

2.- Identificar la solución al problema, diagrama de secuencia

3.- Escalabilidad y rendimiento

4.- Seguridad en desarrollo de software parte 1 de 2

5.- Seguridad en desarrollo de software parte 2 de 2