Introducción al curso

1

Arquitectura Limpia: Enfoque y Aplicación en Java y C#

Conceptos detrás de las Arquitecturas Limpias

2

Arquitectura de Software: Tres Capas y MVC

3

Características y Beneficios de la Arquitectura Limpia

4

Cuándo aplicar o ignorar arquitecturas limpias en desarrollo software

5

Principios SOLID: Aplicación Práctica en Arquitecturas Limpias

Arquitecturas de referencia

6

Arquitectura Hexagonal: Puertos y Adaptadores en Desarrollo de Software

7

Arquitectura Onion: Diseño y Aplicación en Desarrollo de Software

8

Desglose de Capas en Clean Architecture

9

Implementación de Arquitectura Limpia en Empresas Reales

10

Conclusiones sobre Arquitectura de Software Adaptativa

Dominio de una arquitectura

11

Errores Comunes al Manejar la Lógica de Dominio en Sistemas de Información

12

Script de Transacción en Arquitectura de Software

13

Inyección de Dependencias e Inversión de Control en Java

14

Modelos de Dominio en Programación Orientada a Objetos

15

Capa de Servicios y Fachada en la Arquitectura de Software

16

Casos de Uso en Clean Architecture con C#

17

Implementación de CQRS en Arquitecturas Limpias con C#

Capa externa

18

Acceso a Datos en Arquitectura Limpia: Fuentes y Pruebas Efectivas

19

Implementación del Patrón Repository en Arquitectura de Software

20

Implementación de APIs y Web con Spring Boot en Arquitectura Limpia

21

Implementación de Integraciones con el Patrón Adapter en Arquitectura Limpia

22

Pruebas Unitarias en Arquitecturas Limpias con Java y Spring Boot

23

Pruebas de Integración con Dobles de Prueba en Aplicaciones

Cierre

24

Desafíos y Recomendaciones en Arquitectura Limpia

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Arquitectura Onion: Diseño y Aplicación en Desarrollo de Software

7/24
Recursos

¿Qué es la arquitectura cebolla y por qué es importante?

La arquitectura cebolla, también conocida como Onion Architecture, es un patrón de diseño de software propuesto en 2008 por Jeffrey Palermo. Este modelo arquitectónico es esencial porque promueve la independencia del lenguaje de programación y de las herramientas de implementación. Se centra en la separación de preocupaciones, asegurando que el núcleo de negocio no se vea afectado por cambios en otras capas como la infraestructura o la interfaz de usuario.

¿Cómo está estructurada la arquitectura cebolla?

La arquitectura cebolla se organiza en capas concéntricas, donde cada capa tiene una función específica y depende únicamente de las capas más internas. A continuación, se detalla la estructura:

  1. Modelo de dominio: Es el corazón de la cebolla. Aquí se definen las entidades que modelan el problema que se está abordando. Por ejemplo, si se tratara de un sistema para hoteles, las entidades podrían ser "hotel", "reserva" y "habitación". Es crucial que el modelo de dominio no dependa de ninguna otra capa.

  2. Servicios de dominio: Rodeando al modelo de dominio, esta capa contiene la lógica y las reglas de negocio. Además, aquí se definen interfaces para acceder a los datos, conocidos como repositorios, los cuales no se implementan en esta capa.

  3. Servicios de aplicación: Esta capa envuelve a los servicios de dominio y contiene operaciones más específicas ligadas a la aplicación. Es en esta capa donde se comienza a implementar la funcionalidad de la aplicación de manera más concreta.

  4. Capa externa: Incluye elementos que son considerados externos al núcleo pero esenciales, como las pruebas unitarias y de integración, la infraestructura, y la interfaz gráfica. Estos elementos no deben influir en el núcleo del sistema.

¿Cuáles son las ventajas del uso de la arquitectura cebolla?

Implementar la arquitectura cebolla ofrece varios beneficios significativos:

  • Aislamiento del dominio: La lógica del negocio se mantiene independiente de cuestiones tecnológicas como bases de datos o interfaces de usuario.
  • Flexibilidad y mantenimiento: Al tener las dependencias en las capas internas, facilita el mantenimiento y la adaptación a cambios.
  • Facilita las pruebas: Permite realizar pruebas exhaustivas de unidades e integración sin que el dominio se vea afectado.

La arquitectura cebolla ha ganado popularidad en el ecosistema .NET, pero su uso es aplicable en cualquier lenguaje de programación, confirmando su versatilidad y eficacia en la producción de software robusto y mantenible. ¡No dudes en explorar este fascinante enfoque arquitectónico y comprobar su impacto positivo en tus proyectos!

Aportes 8

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Importante: el modelo de dominio solo depende de sí mismo, en ningún momento tiene dependencia hacia las capas.

  • Servicios de dominio: una capa más arriba. Aquí encontramos las interfaces de esos repositorios (base de datos) para acceder a los datos. Están definidas pero no implementadas.

  • Servicios de aplicación: una capa más arriba, donde se encuentran las operaciones específicas. Aquí no hay interfaces.

  • La capa externa: incluye las diferentes pruebas que queremos usar en nuestra aplicación, así como la interfaz gráfica y la infraestructura.

Se utiliza principalmente en el ecosistema .NET.

En Python, la arquitectura de software cebolla se puede implementar siguiendo estos elementos clave:

  1. Núcleo (Core): Es el centro de la aplicación y contiene las reglas de negocio y la lógica principal. En el núcleo, se definen las entidades, modelos de datos y la lógica que representa el comportamiento central de la aplicación. Esta capa no debe depender de ninguna otra capa y, por lo tanto, puede ser reutilizable e independiente.

  2. Capa de Aplicación (Application Layer): Esta capa actúa como intermediaria entre el núcleo y las capas externas, como la interfaz de usuario o servicios externos. Contiene los casos de uso de la aplicación y coordina las interacciones entre el núcleo y las capas externas. Aquí se implementan los servicios que serán expuestos a través de API o interfaz de línea de comandos.

  3. Capa de Infraestructura (Infrastructure Layer): Es la capa más externa y se encarga de interactuar con elementos externos, como bases de datos, servicios web, sistemas de archivos, etc. La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en las capas internas. Además, maneja detalles técnicos como el almacenamiento de datos y la comunicación con recursos externos.

En una implementación típica de Onion Architecture en Python, la estructura del proyecto se organizaría en directorios, donde cada capa tiene su propio espacio y las dependencias fluyen hacia adentro, siguiendo la lógica de la cebolla:

- app/
  - core/
    - entities/
    - use_cases/
  - application/
    - services/
  - infrastructure/
    - repositories/
    - external_services/
  - interfaces/
    - web/
    - cli/

Aquí, una breve descripción de cada directorio:

  • core: Contiene las entidades y los casos de uso principales de la aplicación.
  • application: Implementa los servicios de aplicación que orquestan la lógica de negocio.
  • infrastructure: Proporciona implementaciones concretas para interactuar con bases de datos, servicios externos, etc.
  • interfaces: Aquí se encuentran las interfaces de usuario o cualquier otra interfaz para interactuar con la aplicación. Puede haber subdirectorios específicos para las interfaces web o de línea de comandos, entre otros.

Es importante destacar que la estructura exacta puede variar según los requisitos y el tamaño del proyecto. La clave está en mantener una separación clara de responsabilidades y dependencias, permitiendo así una mayor flexibilidad y mantenibilidad del software.

Onion Architecture 🧅 Fuente: dev.to

Arquitectura Cebolla

Se compone de:

  1. Modelo de dominio: Es la capa que se encuentra más al interior de la cebolla. Se tienen las entidades que modela el problema y éstas no están relacionadas con la persistencia. Sólo tiene dependencia de sí mismo, nunca de las capas que lo están rodeando. Se denomina “modelo de objetos”, “capa de dominio” o “entidades de dominio”.
  2. Servicios de dominio: Contiene reglas del negocio, pero un elemento fundamental es que habrán interfaces que van a representar repositorios para acceder a los datos. Se van a definir las interfaces pero no se van a implementar. Se denomina “servicio de objetos” o “capa de repositorio”.
  3. Servicios de aplicación: Lógica de la aplicación puede estar repartida entre los servicios de aplicación y servicios de dominio. Se denomina “capa de servicios”.

Esto se denomina el núcleo del sistema.

  1. Capa externa: Rodea al núcleo del sistema y esa pueden estar:
  2. Pruebas: Unitarias, de integración y ayudar a testear que todo esté funcionando correctamente.
  3. Interfaz gráfica: Es algo que puede cambiar con el tiempo.
  4. Infraestructura: Se tienen elementos como acceder a un sistema de archivos, aplicaciones de terceros e integraciones varias.

Esta capa externa rodea al dominio.

Datos adicionales:

  • Propuesta por Jeffrey Palermo en 2008.
  • Arquitectura conocida principalmente en el ecosistema .NET.

Termino de ver este vídeo y estoy en shock.

Me estoy dando cuenta que luego de haber combinado varias patrones de arquitectura, creyendo que aplicaba una arquitectura principalmente hexagonal, puede que haya terminado implementado la arquitectura de Cebolla sin saber que esta existía.

Hola, no entendí nada :/
Cuando se habla de servicios de dominio en esta arq., se trata de lógica con código ejecutable o son interfaces, abstractos y tipos unicamente?