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?
architecture
n-tier-architecture
multi-tier
Joshua Carmody
fuente
fuente
Respuestas:
Wikipedia :
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.
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.
fuente
Se basa en cómo se separa la capa de presentación de la lógica empresarial central y el acceso a datos ( Wikipedia )
fuente
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".
fuente
Tomado del sitio web de Microsoft .
fuente
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.
fuente
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.
fuente
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
fuente
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.
fuente
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 lo tanto, el nombre genérico es n-tier.
fuente
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.
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:
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.
fuente
Una aplicación de N niveles es una aplicación que tiene más de tres componentes involucrados. ¿Cuáles son esos componentes?
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.
fuente
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.
fuente