Pregunta

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?

¿Fue útil?

Solución

Wikipedia :

  

En ingeniería de software, multinivel   arquitectura (a menudo denominada   arquitectura de n niveles) es un   arquitectura cliente-servidor en la cual,   la presentación, la aplicación   procesamiento y la gestión de datos son   procesos lógicamente separados. por   ejemplo, una aplicación que usa   middleware para atender solicitudes de datos   entre un usuario y una base de datos emplea   arquitectura de múltiples niveles. Lo mas   uso generalizado de " multi-nivel   arquitectura " se refiere a tres niveles   arquitectura.

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 implicación 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 y / 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 vuela sobre el cable. DataSet clase de .NET o protocolo de servicios web como SOAP son algunos de esos intentos de volar objetos sobre el cable.

Otros consejos

Se basa en cómo se separa la capa de presentación de la lógica comercial 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 innecesarias más allá de estas tres y está etiquetada con una palabra de moda, por lo que no parece que sus arquitectos sean un montón de monos crack. Digo esto basado en la arquitectura N-tier con la que tengo que trabajar.

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

  

Las aplicaciones de datos de N niveles son aplicaciones de datos que están separadas en   Múltiples niveles. También llamado "aplicaciones distribuidas" y `` multinivel   aplicaciones, " las aplicaciones de n niveles separan el procesamiento en discreto   niveles que se distribuyen entre el cliente y el servidor. Cuando tú   desarrollar aplicaciones que accedan a datos, debe tener un claro   separación 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   nivel 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 desea incluir en su aplicación. Por ejemplo, el   el nivel de presentación puede 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 los datos.   lógica de acceso 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   mantenibilidad y escalabilidad de la aplicación. Hace esto por   permitiendo una adopción más fácil de nuevas tecnologías que se pueden aplicar a un   nivel único sin el requisito de rediseñar toda la solución. En   Además, las aplicaciones de n niveles suelen almacenar información confidencial en   el nivel medio, que mantiene el aislamiento del nivel de presentación.

Tomado de Microsoft sitio web .

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 en torno a lo que 4- nivel, o para generalizar, significan arquitecturas de N niveles. 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. Ten 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 cómo " el negocio " quiere dar servicio a los clientes, no debería tener que mirar a través de todo el sistema para descubrir cómo hacerlo, y en particular, las decisiones de los problemas comerciales no deberían dispersarse de manera involuntaria 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, vaya 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 o no agregar valor a una arquitectura dada, implementación y casos de uso.

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.

Las aplicaciones de datos de N niveles son aplicaciones de datos que están separadas en múltiples niveles. También llamado "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

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 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 los datos) capas).

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 (!!!) - y de ese modo puede 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 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-totalmente replicados, prácticamente podría considerar una de las bases de datos como el "maestro" y, por lo tanto, usted tendría un nivel compuesto por el maestro y otro compuesto por la base de datos esclava.

Ejemplo móvil

Por lo tanto, los niveles múltiples (o N-tier ) tienen algunas interpretaciones, mientras que seguramente me apegaría a los niveles adicionales de 3 niveles + que comprenden discos de interfaz delgados encajados entre habilite dichos intercambios de niveles, y en términos de pruebas (particularmente utilizadas en dispositivos móviles), ahora puede ejecutar pruebas de usuario en el software real, simulando a los usuarios tocando de maneras que la lógica de control no puede distinguir de un usuario real tocando. Esto es casi primordial en simular pruebas de usuarios reales , ya que puede registrar todas las entradas de los usuarios OTA y luego reutilizar la misma entrada al hacer pruebas de regresión.

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.

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

Una arquitectura de N niveles divide una llantas de 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 asíncronos (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.

Martin Fowler demostrando claramente:

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

Al pensar en un sistema en términos de capas, te imaginas los principales subsistemas en el software dispuesto en alguna forma de pastel de capas, donde cada capa descansa sobre una capa inferior. En este esquema, la capa superior utiliza varios servicios definido 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 opacas).

Desglosar un sistema en capas tiene varios beneficios importantes.

• Puede entender una sola capa como un todo coherente sin saber mucho sobre las otras capas. Puedes entender cómo construir un servicio FTP encima de TCP sin conocer los detalles de cómo funciona ethernet.

• Puede sustituir capas con implementaciones alternativas de la misma servicios basicos. 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 hagan funcionar la IP, no tenemos que alterar nuestro servicio FTP.

• Las capas son 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 los 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 obtener cambios en cascada. El ejemplo clásico de esto en una empresa en capas la aplicación agrega un campo que debe mostrarse en la interfaz de usuario, debe ser 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 transformado 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 compensar Se puede optimizar una capa que controla las transacciones y entonces 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 debería ser la responsabilidad de cada capa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top