Existen numerosas arquitecturas para implementar proyectos, ya sea mvc o api rest, pero casi todas las arquitecturas existentes como la de capas presentan una posible desventaja
La principal desventaja de este planteamiento es que la última capa es la de acceso a
datos. Esto implica que todas las demás capas, incluyendo una posible de interfaz de usuario, acaba dependiendo de ella bien de forma directa, es decir que están fuertemente acopladas a esta. En muchos casos para algunos sistemas puede llegar a encajar o no ser una desventaja demasiado importante como para tenerla en cuenta, pero aún así es algo a en lo que hay que reflexionar. ¿Que sucede cuando nuestra aplicación empieza a crecer o a escalar? Normalmente se convierte en un problema y por eso han surgido otras arquitecturas que intentan solucionarlo, aunque no dejan de ser una versión ligeramente distinta y con un nombre llamativo de las arquitecturas multicapas ligeramente modificadas para implementar adecuadamente el principio de inversión de dependencia (SOLID). Según este principio debemos depender de las abstracciones en lugar de hacerlo de las clases concretas. En breve vemos cómo hacen esto y como al final todo sigue siendo una arquitectura multicapa bien diseñada. Pero al momento de querer hacer nuestra aplicación mas apta a mantenimiento y cambios de requerimiento e ahí donde esta el inconveniente. ¿Como solucionar este Detalle?
Para las empresas que quieren solucionar el detalle anterior necesitarían
implementar una arquitectura que permita todo lo anterior, para esto lo mas recomendable es utilizar la Arquitectura Onion o de cebolla, que fue bautizada así por Jeffrey Palermo
A grandes rasgos se trata de una arquitectura multicapa construida en torno a
un modelo de dominio independiente de todo lo demás. Las dependencias van hacia el centro, por lo que todo depende de ese modelo de dominio. A su alrededor se organizan varias capas, estando en las más cercanas las interfaces de repositorio, es decir, las que definen el comportamiento del almacenamiento de los datos pero no lo implementan. En las capas siguientes está la lógica de negocio que usa estas interfaces y que en tiempo de ejecución tendrá las implementaciones apropiadas. Alrededor del núcleo de modelo puede haber un número variable de capas, pero siempre debe cumplirse que las interfaces estén más cerca que las clases que las utilizan. Con esto ya tenemos creado el core lógico de nuestra aplicación, que no tiene absolutamente ningún detalle de infraestructura.
Por último, en la capa más exterior es donde estarán todos los detalles de
comunicación con el exterior (tanto de interfaz con el usuario como el almacenamiento) y los tests de integración. Las clases que se presentan aquí implementarán las interfaces que se definen en las capas inferiores, pudiendo cambiar por tanto las implementaciones dependientes de la tecnología sin que las capas inferiores se enteren. Lo que conseguimos de esta manera es una arquitectura que habla de cómo está montado el sistema y no de los terceros que se comunican con él.
Excel para principiantes: Aprenda a utilizar Excel 2016, incluyendo una introducción a fórmulas, funciones, gráficos, cuadros, macros, modelado, informes, estadísticas, Excel Power Query y más
Ciberseguridad: Una Simple Guía para Principiantes sobre Ciberseguridad, Redes Informáticas y Cómo Protegerse del Hacking en Forma de Phishing, Malware, Ransomware e Ingeniería Social
ChatGPT Ganar Dinero Desde Casa Nunca fue tan Fácil Las 7 mejores fuentes de ingresos pasivos con Inteligencia Artificial (IA): libros, redes sociales, marketing digital, programación...
Inteligencia artificial: Lo que usted necesita saber sobre el aprendizaje automático, robótica, aprendizaje profundo, Internet de las cosas, redes neuronales, y nuestro futuro