Skip to content

Instantly share code, notes, and snippets.

@salchichongallo
Created December 27, 2017 16:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save salchichongallo/3a531314f360de2fec7be2f7e96af7db to your computer and use it in GitHub Desktop.
Save salchichongallo/3a531314f360de2fec7be2f7e96af7db to your computer and use it in GitHub Desktop.
Arquitectura cebolla

Node.js y la arquitectura en capas de cebolla con InversifyJS

Este ejemplo demuestra cómo integrar InversifyJS con Express y como implementar aplicaciones que se adhieren a la arquitectura en capas de cebolla. Esta arquitectura de capas puede representarse en un diagrama como sigue:

onion

La principal diferencia entre una arquitectura de n-capas tradicional y la arquitectura cebolla es la dirección de las dependencias entre capas.

En la arquitectura cebolla aplicamos el principio de inversión de dependencias. Los detalles de la implementación (infraestructura) depende de las abstracciones (dominio):

n-tier-vs-onion

La siguiente lista describe el propósito de una de las capas nn la arquitectura cebolla:

  • Servicios de dominio - Servicios que existen para reforzar la integridad del dominio y facilitar la inserción, creación, eliminación y recuperación de datos. A menudo, son fachadas encima de repositorios, trabajando para esconder parte de la implementación de bajo nivel y para proporcionar una interfaz más en línea con el UL (lenguaje omnipresente).

  • Servicios de aplicacion - Servicios que son específicos a la implementación de un modelo del dominio o que no tienen dependencia en el modelo del dominio. Un ejemplo clásico de esto sería el envío y el correo electrónico basado en un cambio de estado o una acción en el dominio. Esto suele ser un requisito de la propia aplicación, y es probable que no esté especificado por el modelo de dominio.

  • Servicios de Infraestructura - Son servicios que hablan con recursos externos y no son parte del dominio principal del problema. Los ejemplos comunes que veo para esto son correo electrónico y registro.

Esta demostración implementa una API REST de una tienda en linea de películas como ejemplo. La estructura de las carpetas puede parecer un poco confusa de primeras por lo que es recomendable analizar el siguiente diagrama y compararlo con la estructura de directorios para entender la demostración con mayor facilidad:

onion-demo

En la arquitectura de cebolla:

  • Las capas del exterior contienen más detalles (implementaciones) que las capas del interior (abstracciones).
  • Las capas del exterior dependen de las capas del interior pero no al contrario.

Puedes obtener más información sobre la arquitectura cebolla aquí.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment