No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
15H
40M
9S

Arquitectura Cebolla

7/24
Recursos

Aportes 7

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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.

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 鈥渕odelo de objetos鈥, 鈥渃apa de dominio鈥 o 鈥渆ntidades 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 鈥渟ervicio de objetos鈥 o 鈥渃apa 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 鈥渃apa 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.

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.

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?

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.