¿Cuál es la diferencia entre la arquitectura MVC y N-Tiered?

La arquitectura MVC y n-tier puede parecer similar a primera vista, pero puede crear confusión para muchos. Examinemos cómo son equivalentes y luego cuál es mejor para qué tipo de escenario.

MVC n-Tier

1. Capa de presentación 1. Ver

2. Capa de lógica de negocios 2. Controlador

3. Capa de acceso a datos 3. Modelo

Lo anterior es solo una comparación cruda, hay muchas diferencias entre ellos.

Usamos MVC para proyectos de pequeña a mediana escala que involucran pocos desarrolladores. La aplicación n-Tier es para proyectos a gran escala donde cientos de desarrolladores trabajan en el mismo proyecto en su parte diferente. MVC carece de la capa de servicios empresariales (servicio web) en concepto, que es posible integrar con aplicaciones basadas en ventanas, basadas en web, e inteligentes clientes enriquecidos.

En MVC, el modelo podría mezclarse con entidades, acceso a datos y parte de mapeo de datos, lo que hace que el proyecto sea difícil de administrar en la misma ubicación, donde, como en n-tier, tiene una parte de acceso a datos separada y la capa empresarial contiene entidades comerciales, lógicas, ORM, etc.

Entonces, MVC es solo una versión en miniatura de la aplicación n-tier. Sin embargo, n-tier es para aplicaciones de grandes empresas y para aplicaciones que requieren computación distribuida y para mejorar el rendimiento de la aplicación y escalar la capacidad del servidor en consecuencia.

Una buena aplicación de n niveles tiene la siguiente capa:

Capa de presentación: (IU web, IU de ventana, IU de cliente enriquecido)

Capa de servicios empresariales: (servicio web como JSON, XML, SOAP, REST)

Capa empresarial: (Entidades comerciales, marco ORM de entidad utilizando XML o anotaciones basadas, Capa lógica empresarial)

Capa de datos: (persistencia de datos para diferentes tecnologías de bases de datos).

Por lo tanto, es mejor elegir la tecnología n-tier para todo tipo de aplicaciones desde el principio.

los tres niveles pueden parecer similares al concepto de modelo-vista-controlador (MVC); sin embargo, topológicamente son diferentes. Una regla fundamental en una arquitectura de tres niveles es que el nivel del cliente nunca se comunica directamente con el nivel de datos; En un modelo de tres niveles, toda comunicación debe pasar por el nivel medio . Conceptualmente, la arquitectura de tres niveles es lineal . Sin embargo, la arquitectura MVC [model-view-controller] es triangular : la vista envía actualizaciones al controlador, el controlador actualiza el modelo y la vista se actualiza directamente desde el modelo.

Una arquitectura de 3 niveles o n niveles y MVC son archivos de software. MVC es más adecuado para problemas de interfaces de usuario. El patrón MVC se usa con fuerza en el nivel superior (interfaz) de un diseño de software de n niveles.

Debido a que las capas de 3 niveles a menudo se denominan capas de Interfaz, Controlador y Entidad o Datos, algunas personas intentan comprender Interfaz y Vista, Controlador y Controlador y Entidad / Datos y Modelo como equivalentes, pero no lo son.

Las tres capas del patrón MVC son abstracciones del flujo de interacción de la aplicación, porque es una solución para las interfaces de usuario, opuestas a las interfaces de computadora a computadora.

Las tres capas de una arquitectura de 3 niveles se refieren a la separación de un software en la capa de presentación (donde MVC puede ser un buen uso de todos modos), la capa de reglas de negocios y la capa de entidades de negocios, con reglas de negocios que intermedian toda la comunicación entre la presentación y la entidad.

La arquitectura escalonada 3 (o N) trata sobre cómo funciona la infraestructura, el cliente (navegadores, teléfonos, etc.), el servidor web (u otro middleware) y el servidor de base de datos. Todas las máquinas / dispositivos separados.

MVC trata sobre cómo está diseñado el código de la aplicación. Se enfoca en cómo separar las partes de la aplicación (modelos, controladores y vistas) para resolver el problema de construir la aplicación. Esto vive principalmente en el servidor web