2008-11-23 15 views
166

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".¿Qué es la arquitectura N-Tier?

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

+2

Es interesante que esta otra publicación también pregunte qué es la arquitectura N-Tier, pero las respuestas son completamente diferentes. http://stackoverflow.com/questions/7271165/what-does-n-tier-architecture-mean-nowadays. Parece que hay arquitectura N-Tier para software y arquitectura N-Tier para hardware. – Noremac

Respuesta

228

Wikipedia:

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

Es discutible lo que se considera como "niveles", pero en mi opinión, tiene que al menos 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 puede host nivel lógico y base de datos en el mismo cuadro.

alt text

Editar: Una implicación es que la capa de presentación y la capa de lógica (a veces llamada lógica de negocios Layer) tiene que cruzar los límites de la máquina "a través del cable" a veces más fiable, lento, y/o inseguros red. 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 esos intentos de enviar objetos por el cable.

+5

"3-tiers" y "N-tiers" ¿hay alguna diferencia? – chakrit

+5

Depende de cómo cuente los "niveles" (lógico, físico, etc.), pero puede fácilmente tener más de 3 procesos involucrados para escribir una aplicación. UI, plataforma UI (como Eclipse RCP), servicios web, BLL, DAL, base de datos, servicios de autenticación, servicios de informes, servicios analíticos ... –

+6

@chakrit: en mi tiempo (soy mayor) más de 2 niveles (cliente -server) se refería automáticamente a n-tier. –

2

Tengo entendido que N-Tier separa la lógica comercial, el acceso de los clientes 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.

+3

no tiene que ser máquinas separadas ... – alchemical

15

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

19

Se basa en cómo se separa la capa de presentación y la lógica de núcleo y los datos de acceso (Wikipedia)

3-tier medios de capa componente de presentación capa + + capa de acceso de 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.

+10

en realidad, si uno de esos niveles está alojado por una ubicación remota, por ejemplo, un procesador de pagos, ese nivel puede no ser tan "innecesario" – Zak

+0

Hmm. Hay una gran diferencia entre 'capas' y 'servicios'. N-Tier generalmente se utiliza para indicar que para el nivel dado, cualquier elemento superior debe pasar por él para acceder a los servicios de nivel inferior. Si están en paralelo, los llamaría servicios en lugar de niveles. – Dak

+0

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 usar 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 capa de visualización (presentación), entonces puedes (¡espera!) Reemplazar la interfaz de usuario con otra máquina, así automatizar la entrada REAL (!!!) –

1

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, los diferentes procesos serán diferentes niveles.

E.g, 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.

3

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 las aplicaciones de datos http://msdn.microsoft.com/en-us/library/bb384398.aspx

3

N-nivel están aplicaciones de datos que están separados en múltiples niveles. También denominadas "aplicaciones distribuidas" y "aplicaciones de varios niveles ", las aplicaciones de n capas separan el procesamiento en niveles discretos que se distribuyen entre el cliente y el servidor. Cuando desarrolle 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 intermedio 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 podría comunicarse con la lógica de acceso a los 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 por lo que permite una adopción más sencilla de las nuevas tecnologías que se pueden aplicar a un solo nivel sin el requisito de rediseñar la solución completa. En el 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 de Microsoft website.

4

Si entiendo la pregunta, entonces me parece que la persona que pregunta está realmente preguntando "OK, así que la 3-tier es bien comprendida, pero parece que hay una mezcla de exageración, confusión e incertidumbre alrededor de lo que 4- nivel, o para generalizar, significa arquitecturas N-tier. Entonces ... ¿cuál es la definición de nivel N que es ampliamente comprendida y acordada?

En realidad, es una pregunta bastante profunda, y para explicar por qué, tengo que ir un poco más profundo. 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 sirvió 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 el valor a una arquitectura determinada, implementación y casos de uso .

2

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

A menudo vemos los beneficios de este, 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 ejecuta 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 tales arquitectura de 3 capas con 1 o 2 dobles interfaces como 4-tier o 5-tier arquitectura, implícitamente implica los dobles interfaces.

Otros casos incluyen (pero no están limitados a) el hecho de que usted, en el caso de sistemas de bases de datos semi o completamente replicados, sería prácticamente capaz de 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, de varios niveles - o N-capas - de hecho, tiene algunas interpretaciones, mientras que yo sin duda se adhieren a los niveles de 3 niveles + extra que comprenden de interfaz delgada -discos intercalados para habilitar dichos intercambios de niveles, y en términos de pruebas (particularmente usados ​​en dispositivos móviles), ahora puede ejecutar pruebas de usuario en el software real, por simulando que los usuarios toquen de manera que la lógica de control no pueda distinguir de un toque de usuario real.Esto es casi primordial en simulando las pruebas de usuario reales, en el que puede registrar todas las entradas de los usuarios OTA, y luego reutilizar la misma entrada al hacer las pruebas de regresión.

Cuestiones relacionadas