tier software multilayer architecture n-tier

architecture - software - ¿Qué es la arquitectura N-Tier?



tier server (9)

Las aplicaciones de datos de N-niveles son aplicaciones de datos que están separadas en varios niveles. También llamadas "aplicaciones distribuidas" y "aplicaciones de varios niveles", 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 manera 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 Windows Forms, mientras que la lógica de acceso a datos podría ser una biblioteca de clases 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. Separar los componentes de la aplicación en niveles separados aumenta la capacidad de mantenimiento y la escalabilidad de la aplicación. Hace esto al permitir una adopción más sencilla de nuevas tecnologías que se pueden aplicar a un solo nivel sin el requisito de rediseñar la solución completa. Además, las aplicaciones de n niveles generalmente almacenan información confidencial en el nivel medio, que mantiene el aislamiento del nivel de presentación.

Tomado del website Microsoft.

Recientemente, he visto bastantes ofertas de trabajos de desarrolladores que incluyen una frase que dice más o menos así: "Debe tener experiencia con la arquitectura N-Tier" o "Debe ser capaz de desarrollar aplicaciones N-Tier".

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


Cuando hablamos de Niveles, generalmente hablamos de Procesos Físicos (teniendo diferente espacio de memoria).

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

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

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


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".


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

Wikipedia significa capa de presentación + capa de componentes + capa de acceso a datos. N-tier es cuando se agregan capas innecesarias más allá de estos tres y está etiquetada con una palabra de moda, por lo que no parece que sus arquitectos sean un grupo de monos crack. Lo digo en base a la arquitectura N-tier con la que tengo que trabajar.


Si entiendo la pregunta, me parece que el interlocutor realmente está preguntando "De acuerdo, entonces se entiende bien el nivel 3, pero parece que hay una mezcla de exageración, confusión e incertidumbre en torno a qué nivel 4 o generalizar, significa arquitecturas N-tier. Entonces ... ¿cuál es la definición de nivel N que se entiende y se acepta ampliamente? "

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

La clásica arquitectura de 3 niveles: base de datos, "lógica de negocios" y presentación, es una buena manera de aclarar cómo respetar el principio de separación de preocupaciones. Es decir, si quiero cambiar la forma en que "la empresa" quiere dar servicio a los clientes, no debería tener que revisar todo el sistema para descubrir cómo hacerlo, y en particular, las decisiones sobre los asuntos comerciales no deberían estar dispersos. quiera o no a través del código.

Ahora, este modelo funcionó bien durante décadas, y es el modelo clásico de "cliente-servidor". Avance rápido 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 teniendo que agregar servicios de distribución de contenido, que no son parte de la clásica arquitectura de 3 niveles (y que necesitan ser administrados por derecho propio).

El concepto se generaliza cuando se trata de servicios, micro servicios, cómo se distribuyen los datos y el cómputo, etc. Si algo es o no un ''nivel'' se reduce a si el nivel proporciona o no una interfaz y modelo de implementación a los servicios que están detrás (o debajo) del nivel. Entonces, 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 proveedores (por ejemplo, NGINX), equilibradores de carga con contenido consciente, aislamiento de datos y servicios de seguridad (por ejemplo, IBM Datapower), todos los cuales pueden o no agregar valor a una arquitectura determinada, implementación y casos de uso.


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


Wikipedia :

En la ingeniería de software, la arquitectura de varios niveles (a menudo denominada arquitectura n-tier) es una arquitectura cliente-servidor en la que la presentación, el procesamiento de la aplicación y la administració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 se considera "niveles", pero en mi opinión, al menos debe cruzar el límite del proceso. O bien se llama capas. Pero no es necesario que esté 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 implicación es que el nivel de presentación y el nivel lógico (a veces llamado Capa 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 no confiable, lenta y / o insegura. Esto es muy diferente de la simple aplicación de escritorio donde los datos viven en la misma máquina que los archivos o la aplicación web donde puede acceder directamente a la base de datos.

Para la programación de n niveles, debe empaquetar los datos en algún tipo de forma transportable llamada "conjunto de datos" y enviarlos por el cable. La clase DataSet de .NET o el protocolo de servicios web como SOAP son algunos de estos intentos de enviar objetos por el cable.


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

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

Cuando lo pones en la View-layer (presentación), entonces puedes (¡espera!) Reemplazar la interfaz USER con otra máquina, así automatizar la entrada REAL (!!!) - y así puedes ejecutar tediosas pruebas de usabilidad 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 o 5 niveles , implicando implícitamente las interfaces dobles.

Otros casos incluyen (pero no están limitados a) el hecho de que usted, en el caso de sistemas de bases de datos semiprocesados ​​o completamente replicados, podría prácticamente considerar una de las bases de datos como el "maestro", y por lo tanto tendría un nivel que comprende el maestro y otro que comprende la base de datos esclava.

Ejemplo móvil

Por lo tanto, multi-tier - o N-tier - de hecho tiene algunas interpretaciones, mientras que seguramente me quedaré con los niveles extra de 3 niveles + que comprenden discos de interfaz delgados intercalados para permitir dichos intercambios de niveles, y en términos de pruebas (particularmente usadas en dispositivos móviles), ahora puede ejecutar pruebas de usuario en el software real, simulando un toque de usuarios de maneras que la lógica de control no puede distinguir de un toque de usuario real. Esto es casi primordial al simular pruebas reales de usuario , ya que puede registrar todas las entradas de los usuarios OTA, y luego reutilizar la misma entrada al hacer pruebas de regresión.


Las aplicaciones de datos de N-niveles son aplicaciones de datos que están separadas en varios niveles. También llamadas "aplicaciones distribuidas" y "aplicaciones de varios niveles", 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