Describiremos arquitectura en capas: qué es y cuándo usarla, lo cual podría ser muy útil para los desarrolladores y su labor diaria de creación.
¿Qué es una arquitectura en capas?
Es una forma para desarrollar software en la que disgregan las partes que componen un sistema software o también una arquitectura cliente-servidor: lógica de negocios, capa de presentación y capa de datos.
La idea principal del patrón de arquitectura en capas es agrupar y aislar los aspectos pendientes del sistema mientras se define una dirección de comunicación entre ellas.
Cada grupo de módulos aislado se llama capa, las cuales están encapsuladas y dependen unas de otras a través de la abstracción y las interfaces bien definidas.
Las capas en este patrón de arquitectura se apilan. La dirección de la solicitud es de las capas superiores a inferiores.
En casos esporádicos, se permite que una capa superior solicite una capa de dos niveles o más niveles por debajo, pero en general se considera una mala práctica.
La arquitectura en capas es muy amplia. Podemos encontrarlo en el patrón cliente-> servidor o modelo de red OSI, muchas aplicaciones empresariales implementan ese patrón.
Diferencia entre la arquitectura en capas y la arquitectura de niveles N
No hay ninguna diferencia significativa. Por nivel, consideramos una capa física (como el servidor SQL, por ejemplo). N describe la cantidad de capas.
Ejemplo de aplicación empresarial
La mayoría de las implementaciones de arquitectura en capas constan de tres capas y un nivel.
Son:
- De presentación
- Empresarial
- Capa de acceso a datos
- Neumático de almacenamiento de datos
Capa de presentación
En la capa de presentación, se puede encontrar componentes de la interfaz de usuario.
En una aplicación ASP.NET Core estándar, la capa de presentación no se limita a ninguna tecnología. Puede integrar cualquier cosa con la que un usuario pueda interactuar. CLI, SPA, etc.
La capa de presentación no debe contener lógica empresarial y no debe acceder directamente a los datos de la base de datos.
Su única tarea es visualizar datos y enviar la entrada del usuario. Es por eso que la capa de presentación solicita datos y envía comandos desde la capa empresarial.
Empresarial
En ésta reside la lógica empresarial central, se pueden encontrar módulos y servicios (clases) específicos para las operaciones del dominio empresarial. Operaciones como calcular descuentos, reorganizar horarios, etc.
Si se necesitan datos, la capa empresarial los solicita a la capa de acceso a los datos. Al devolver un resultado a la capa de presentación, la empresarial no debe aplicar ningún formato de datos.
De acceso a datos
Tiene como objetivo comunicarse (consultar y persistir datos) desde el almacenamiento de datos (SQL DB, NoSQL, archivos planos, etc.).
La capa de acceso a datos más común traduce las solicitudes a consultas SQL y las envía a SQL Server a través de objetos de acceso a datos (DAO). En la mayoría de los casos, estos DAO implementan un patrón de repositorio.
También implementa la capacidad de transacción (a menudo a través de un patrón de Unidad de trabajo).
Almacenamiento de datos
Su almacenamiento podría ser cualquier cosa, incluso archivos CSV. No debe poner ninguna lógica en este nivel. Idealmente, debería usarlo solo para almacenamiento.
Estructura de la arquitectura en capas
En una aplicación en capas, la estructura es simple como se muestra en el siguiente ejemplo:
En una máquina separada (nivel 1) con IIS, tenemos una aplicación ASP.NET Core estándar. Esta es la capa de presentación.
Un nivel por debajo (nivel 2), encontramos un IIS en un servidor separado. En él, se implementa una aplicación API web.
En la aplicación Web API, se puede ver una capa muy delgada de API REST (implementadas a través de controladores Web API), la capa empresarial y la capa de acceso a datos.
La responsabilidad principal de los controladores de API es enrutar una solicitud a la capa empresarial, por lo que no se considera lo suficientemente importante como para clasificarlos como una capa separada; los controladores, la capa empresarial y las capas de acceso a datos están aislados. Están en diferentes proyectos y se referencian entre sí solo a través de interfaces. Se usa la inyección de dependencia para crear instancias de servicios.
En la parte inferior (nivel 3), tenemos una máquina con una base de datos operativa administrada por MS SQL Server.
Los beneficios de escalabilidad horizontal son limitados debido a la naturaleza monolítica de la arquitectura.
Flujo de arquitectura en capas
¿Qué sucede cuando, por ejemplo, un usuario busca un producto (si consideramos que nuestra aplicación es un sitio web de comercio electrónico)?
La interfaz de usuario de la aplicación ASP.NET Core solicita la API REST específica de la API web.
El controlador de API crea una instancia de un objeto de servicio de la capa empresarial y solicita la búsqueda a través de un método específico.
En su nombre, la capa empresarial crea una instancia de un objeto de acceso a datos (o varios) de la capa de acceso a datos y llama a un método o métodos específicos.
El objeto de acceso a datos traduce la solicitud a una consulta SQL y la envía a SQL Server.
SQL Server devuelve el resultado. El objeto de acceso a datos devuelve el resultado en forma de objeto / s de transferencia de datos al servicio comercial.
Supongamos que se necesita cualquier transformación o lógica (como el descuento de cálculo, como dijimos anteriormente). En ese caso, el servicio empresarial transforma los datos en función de la lógica empresarial y los devuelve al controlador de API web.
El controlador de API web devuelve una respuesta HTTP a la aplicación ASP.NET Core y la aplicación ASP.NET Core recibe los datos, los formatea y se los muestra al usuario.
Leíste: Arquitectura en capas: qué es y cuándo usarla, te recomendamos: APM: qué es, cómo funciona y aplicaciones
Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode