¿Qué es la arquitectura N-Tier?

193

Recientemente he visto bastantes publicaciones de trabajos de desarrollador que incluyen una oración que dice más o menos así: "Debe tener experiencia con la arquitectura N-Tier" o "Debe poder desarrollar aplicaciones N-Tier".

Esto me lleva a preguntar, ¿qué es la arquitectura N-Tier? ¿Cómo se gana experiencia con él?

Joshua Carmody
fuente
2
Es interesante que esta otra publicación también pregunte qué es la arquitectura N-Tier, pero las respuestas son completamente diferentes. stackoverflow.com/questions/7271165/… . Parece que hay arquitectura N-Tier para software y arquitectura N-Tier para hardware.
Noremac

Respuestas:

247

Wikipedia :

En ingeniería de software, la arquitectura de varios niveles (a menudo denominada arquitectura de n niveles) es una arquitectura cliente-servidor en la que, la presentación, el procesamiento de la aplicación y la gestión de datos son procesos lógicamente separados. Por ejemplo, una aplicación que utiliza middleware para atender solicitudes de datos entre un usuario y una base de datos emplea una arquitectura de varios niveles. El uso más extendido de "arquitectura de varios niveles" se refiere a la arquitectura de tres niveles.

Es discutible lo que cuenta como "niveles", pero en mi opinión necesita al menos cruzar el límite del proceso. O bien se llama capas. Pero, no necesita estar en máquinas físicamente diferentes. Aunque no lo recomiendo, puede alojar el nivel lógico y la base de datos en el mismo cuadro.

texto alternativo

Editar : Una de las implicaciones es que el nivel de presentación y el nivel lógico (a veces denominado Capa de lógica de negocios) deben cruzar los límites de la máquina "a través del cable", a veces a través de una red poco confiable, lenta o insegura. Esto es muy diferente de la aplicación de escritorio simple donde los datos viven en la misma máquina que los archivos o la aplicación web donde puede acceder a la base de datos directamente.

Para la programación de n niveles, debe empaquetar los datos en algún tipo de forma transportable llamada "conjunto de datos" y volarlos por cable. La clase DataSet de .NET o el protocolo de servicios web como SOAP son algunos de esos intentos de volar objetos a través del cable.

Eugene Yokota
fuente
66
"3 niveles" y "N niveles" ¿hay alguna diferencia?
chakrit
77
Depende de cómo cuente los "niveles" (lógicos, físicos, etc.), pero puede tener fácilmente más de 3 procesos involucrados para escribir una aplicación. Interfaz de usuario, plataforma de interfaz de usuario (como Eclipse RCP), servicios web, BLL, DAL, base de datos, servicios de autenticación, servicios de informes, servicios analíticos ...
Eugene Yokota
66
@chakrit: En mi tiempo (soy viejo) más de 2 niveles (cliente-servidor) se referían automáticamente a n-tier.
Eduardo Molteni
@EugeneYokota: se dice que los niveles deben representar las secciones físicas de la arquitectura (que pueden o no tener más pautas, por ejemplo, en un clúster), y las capas se referirán a la agrupación lógica de los componentes de la aplicación.
Eliran Malka
Me han dicho algo que se ve muy similar pero con los niveles de nivel de presentación - nivel de servicio - nivel de integración / datos. ¿Sabes si estas son solo palabras diferentes para la misma cosa que la arquitectura que se muestra arriba o algo diferente? Hasta donde yo sé, parecen lo mismo, pero me gustaría asegurarme.
KayleighArianna
20

Se basa en cómo se separa la capa de presentación de la lógica empresarial central y el acceso a datos ( Wikipedia )

  • 3 niveles significa capa de presentación + capa de componentes + capa de acceso a datos.
  • N-tier es cuando se agregan capas adicionales más allá de éstas, generalmente para modularidad, configurabilidad o interoperabilidad adicionales con otros sistemas.
tsilb
fuente
12
en realidad, si uno de esos niveles está alojado por una parte remota, por ejemplo, un procesador de pagos, ese nivel puede no ser tan "innecesario"
Zak
1
Hmm Hay una gran diferencia entre 'capas' y 'servicios'. N-Tier generalmente se usa para indicar que para el nivel dado, todo lo que esté por encima debe pasar a través de él para acceder a los servicios de nivel inferior. Si están en paralelo, los llamaría servicios en lugar de niveles.
Dak
Al construir el MCV habitual (una arquitectura de 3 niveles), se puede decidir implementar el MCV con interfaces de dos pisos, de modo que se pueda reemplazar un nivel particular sin tener que modificar ni una sola línea de código. A menudo vemos los beneficios de esto, por ejemplo, en escenarios en los que desea poder usar más de una base de datos (en cuyo caso tiene una doble interfaz entre el control y las capas de datos). Cuando lo pones en la capa de Vista (presentación), entonces puedes (espera !!) reemplazar la interfaz de USUARIO con otra máquina, automatizando así la entrada REAL (!!!)
David Svarrer
15

Es una palabra de moda que se refiere a cosas como la arquitectura web normal con, por ejemplo, Javascript - ASP.Net - Middleware - Capa de base de datos. Cada una de estas cosas es un "nivel".

1800 INFORMACIÓN
fuente
4

Las aplicaciones de datos de N niveles son aplicaciones de datos que están separadas en múltiples niveles. También llamadas "aplicaciones distribuidas" y "aplicaciones multinivel", las aplicaciones de n niveles separan el procesamiento en niveles discretos que se distribuyen entre el cliente y el servidor. Cuando desarrolla aplicaciones que acceden a datos, debe tener una separación clara entre los distintos niveles que componen la aplicación.

Una aplicación típica de n niveles incluye un nivel de presentación, un nivel medio y un nivel de datos. La forma más fácil de separar los distintos niveles en una aplicación de n niveles es crear proyectos discretos para cada nivel que desee incluir en su aplicación. Por ejemplo, el nivel de presentación podría ser una aplicación de formularios Windows Forms, mientras que la lógica de acceso a datos podría ser una biblioteca de clase ubicada en el nivel medio. Además, la capa de presentación puede comunicarse con la lógica de acceso a datos en el nivel medio a través de un servicio como un servicio. La separación de los componentes de la aplicación en niveles separados aumenta la capacidad de mantenimiento y la escalabilidad de la aplicación. Lo hace permitiendo una adopción más fácil de nuevas tecnologías que se pueden aplicar a un solo nivel sin el requisito de rediseñar toda la solución. Adicionalmente,

Tomado del sitio web de Microsoft .

Robert Rocha
fuente
4

Si entiendo la pregunta, entonces me parece que el interlocutor realmente está preguntando "OK, entonces 3 niveles se entiende bien, pero parece que hay una mezcla de exageración, confusión e incertidumbre acerca de qué 4 niveles, o para generalizar, significan arquitecturas de N-tier. Entonces ... ¿cuál es una definición de N-tier que es ampliamente entendida y acordada?

En realidad es una pregunta bastante profunda, y para explicar por qué, necesito profundizar un poco más. Tengan paciencia conmigo.

La arquitectura clásica de 3 niveles: base de datos, "lógica de negocios" y presentación, es una buena manera de aclarar cómo honrar el principio de separación de preocupaciones. Es decir, si quiero cambiar la forma en que "la empresa" quiere atender a los clientes, no debería tener que mirar a través de todo el sistema para descubrir cómo hacer esto, y en particular, las decisiones que los problemas comerciales no deberían dispersarse. willy-nilly a través del código.

Ahora, este modelo funcionó bien durante décadas, y es el modelo clásico 'cliente-servidor'. Avance rápidamente a las ofertas en la nube, donde los navegadores web son la interfaz de usuario para un conjunto amplio y físicamente distribuido de usuarios, y uno generalmente termina agregando servicios de distribución de contenido, que no son parte de la arquitectura clásica de 3 niveles (y que deben gestionarse por derecho propio).

El concepto se generaliza cuando se trata de servicios, microservicios, cómo se distribuyen los datos y la computación, etc. Si algo es o no un 'nivel' se reduce en gran medida a si el nivel proporciona o no una interfaz y un modelo de implementación para los servicios que están detrás (o debajo) del nivel. Por lo tanto, una red de distribución de contenido sería un nivel, pero un servicio de autenticación no lo sería.

Ahora, lea y lea otras descripciones de ejemplos de arquitecturas de N niveles con este concepto en mente, y comenzará a comprender el problema. Otras perspectivas incluyen enfoques basados ​​en el proveedor (por ejemplo, NGINX), equilibradores de carga conscientes del contenido, aislamiento de datos y servicios de seguridad (por ejemplo, IBM Datapower), todos los cuales pueden agregar o no valor a una arquitectura, implementación y casos de uso dados.

Dak
fuente
3

Tengo entendido que N-Tier separa la lógica empresarial, el acceso del cliente y los datos entre sí mediante máquinas físicas separadas. La teoría es que uno de ellos puede actualizarse independientemente de los demás.

GregD
fuente
3

Las aplicaciones de datos de N niveles son aplicaciones de datos que están separadas en múltiples niveles. También llamadas "aplicaciones distribuidas" y "aplicaciones multinivel", las aplicaciones de n niveles separan el procesamiento en niveles discretos que se distribuyen entre el cliente y el servidor. Cuando desarrolla aplicaciones que acceden a datos, debe tener una separación clara entre los distintos niveles que componen la aplicación.

Y así sucesivamente en http://msdn.microsoft.com/en-us/library/bb384398.aspx

olyv
fuente
3

Al construir el MCV habitual (una arquitectura de 3 niveles), se puede decidir implementar el MCV con interfaces de dos pisos, de modo que se pueda reemplazar un nivel particular sin tener que modificar ni una sola línea de código.

A menudo vemos los beneficios de esto , por ejemplo, en escenarios en los que desea poder usar más de una base de datos (en cuyo caso tiene una doble interfaz entre el control y las capas de datos).

Cuando lo pones en la capa de Vista (presentación), puedes (¡espera!) Reemplazar la interfaz de USUARIO con otra máquina, automatizar así la entrada REAL (!!!) - y así puedes ejecutar tediosas pruebas de usabilidad de miles de veces sin que ningún usuario tenga que tocar y volver a tocar y volver a tocar las mismas cosas una y otra vez.

Algunos describen dicha arquitectura de 3 niveles con 1 o 2 interfaces dobles como arquitectura de 4 niveles o 5 niveles , lo que implica implícitamente las interfaces dobles.

Otros casos incluyen (pero no se limitan a) el hecho de que usted, en el caso de sistemas de bases de datos semi o totalmente replicados, prácticamente podría considerar una de las bases de datos como "maestra" y, por lo tanto, tendría un nivel formando parte del maestro y otro formando parte de la base de datos esclava.

Ejemplo móvil

Por lo tanto, el multinivel, o N-tier , de hecho tiene algunas interpretaciones, mientras que seguramente me apegaría a los niveles adicionales de 3 niveles + que comprenden discos de interfaz delgados encajados en el medio para habilitar dichos intercambios de niveles, y en términos de prueba (particularmente utilizada en dispositivos móviles), ahora puede ejecutar pruebas de usuario en el software real, simulando un toque de los usuarios de manera que la lógica de control no pueda distinguir de un toque real del usuario. Esto es casi primordial en la simulación de pruebas de usuarios reales , ya que puede registrar todas las entradas de la OTA de los usuarios y luego reutilizar la misma entrada al hacer pruebas de regresión.

David Svarrer
fuente
2

Cuando hablamos de niveles, generalmente hablamos de procesos físicos (que tienen un espacio de memoria diferente).

Por lo tanto, en caso de que las capas de una aplicación se implementen en diferentes procesos, esos diferentes procesos serán diferentes niveles.

Por ejemplo, en una aplicación de 3 niveles, el nivel comercial habla con Mainframes (proceso separado) y con Reporting Service (proceso separado), entonces esa aplicación sería de 5 niveles.

Por lo tanto, el nombre genérico es n-tier.

Sandeep Jindal
fuente
2

de https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

Una arquitectura de N niveles divide las llantas de una aplicación en llantas lógicas y niveles físicos principalmente y se dividen en sub partes. ingrese la descripción de la imagen aquí

Las capas son una forma de separar las responsabilidades y gestionar las dependencias. Cada capa tiene una responsabilidad específica. Una capa superior puede usar servicios en una capa inferior, pero no al revés.

Los niveles están físicamente separados, ejecutándose en máquinas separadas. Un nivel puede llamar a otro nivel directamente o usar mensajes asincrónicos (cola de mensajes). Aunque cada capa puede estar alojada en su propio nivel, eso no es obligatorio. Se pueden alojar varias capas en el mismo nivel. La separación física de los niveles mejora la escalabilidad y la resistencia, pero también agrega latencia a la comunicación de red adicional.

Una aplicación tradicional de tres niveles tiene un nivel de presentación, un nivel medio y un nivel de base de datos. El nivel medio es opcional. Las aplicaciones más complejas pueden tener más de tres niveles. El diagrama anterior muestra una aplicación con dos niveles intermedios, que encapsula diferentes áreas de funcionalidad.

Una aplicación de N niveles puede tener una arquitectura de capa cerrada o una arquitectura de capa abierta:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

Una arquitectura de capa cerrada limita las dependencias entre capas. Sin embargo, podría crear tráfico de red innecesario, si una capa simplemente pasa las solicitudes a la siguiente capa.

Manjitha teshara
fuente
1

Una aplicación de N niveles es una aplicación que tiene más de tres componentes involucrados. ¿Cuáles son esos componentes?

  • Cache
  • Colas de mensajes para comportamiento asincrónico
  • Equilibradores de carga
  • Buscar servidores para buscar a través de grandes cantidades de datos
  • Componentes involucrados en el procesamiento de grandes cantidades de datos.
  • Componentes que ejecutan tecnología heterogénea comúnmente conocida como servicios web, etc.

Todas las aplicaciones sociales como Instagram, Facebook, servicios de la industria a gran escala como Uber, Airbnb, juegos multijugador masivos en línea como Pokemon Go, las aplicaciones con características sofisticadas son aplicaciones de n niveles.

Sultán soleado
fuente
0

Martin Fowler demostrando claramente:

La estratificación es una de las técnicas más comunes que usan los diseñadores de software para separar un sistema de software complicado. Lo ves en arquitecturas de máquinas, donde las capas descienden de un lenguaje de programación con llamadas del sistema operativo a controladores de dispositivos y conjuntos de instrucciones de CPU, y a puertas lógicas dentro de chips. Las redes tienen FTP en capas sobre TCP, que está sobre IP, que está sobre Ethernet.

Al pensar en un sistema en términos de capas, imagina los subsistemas principales del software dispuestos en alguna forma de torta de capas, donde cada capa descansa en una capa inferior. En este esquema, la capa superior utiliza varios servicios definidos por la capa inferior, pero la capa inferior desconoce la capa superior. Además, cada capa generalmente oculta sus capas inferiores de las capas superiores, por lo que la capa 4 usa los servicios de la capa 3, que usa los servicios de la capa 2, pero la capa 4 desconoce la capa 2. (No todas las arquitecturas de capas son opacas como esta , pero la mayoría son, o mejor dicho, la mayoría son opacos).

Desglosar un sistema en capas tiene una serie de beneficios importantes.

• Puede comprender una sola capa como un todo coherente sin saber mucho sobre las otras capas. Puede comprender cómo crear un servicio FTP sobre TCP sin conocer los detalles de cómo funciona Ethernet.

• Puede sustituir capas con implementaciones alternativas de los mismos servicios básicos. Un servicio FTP puede ejecutarse sin cambios a través de Ethernet, PPP o lo que sea que use una compañía de cable.

• Minimiza las dependencias entre capas. Si la compañía de cable cambia su sistema de transmisión física, siempre que haga funcionar el IP, no tenemos que alterar nuestro servicio FTP.

• Las capas hacen buenos lugares para la estandarización. TCP e IP son estándares porque definen cómo deberían funcionar sus capas.

• Una vez que haya creado una capa, puede usarla para muchos servicios de nivel superior. Por lo tanto, TCP / IP es utilizado por FTP, telnet, SSH y HTTP. De lo contrario, todos estos protocolos de nivel superior tendrían que escribir sus propios protocolos de nivel inferior. De la biblioteca de Kyle Geoffrey Passarelli

La estratificación es una técnica importante, pero hay inconvenientes.

• Las capas encapsulan algunas, pero no todas, las cosas bien. Como resultado, a veces se producen cambios en cascada. El ejemplo clásico de esto en una aplicación empresarial en capas es agregar un campo que debe mostrarse en la interfaz de usuario, debe estar en la base de datos y, por lo tanto, debe agregarse a cada capa intermedia.

• Las capas adicionales pueden dañar el rendimiento. En cada capa, las cosas generalmente necesitan ser transformadas de una representación a otra. Sin embargo, la encapsulación de una función subyacente a menudo le brinda ganancias de eficiencia que más que compensan. Se puede optimizar una capa que controla las transacciones y luego hará que todo sea más rápido. Pero la parte más difícil de una arquitectura en capas es decidir qué capas tener y cuál debe ser la responsabilidad de cada capa.

Hamit YILDIRIM
fuente