model-view-controller - software - tier model
MVC Vs n-tier architecture (12)
@Cherry Middle ware funciona más como un manejador de solicitudes o un redirector en MVC Pattern.
Me gustaría explicar un poco acerca de MVC. Según mi opinión, el controlador de vista de modelo funciona así.
- El cliente inicia la sesión solicitando cualquier servicio.
- Esta solicitud es recibida y manejada por el controlador (controlador de solicitud, redirector, etc.)
- El controlador procesa una información básica sobre la solicitud y la redirige al modelo relevante que puede completar la solicitud de datos.
- El modelo completa la solicitud de acuerdo con los parámetros aprobados por el controlador y devuelve los resultados al controlador. (Nota: Aquí me gusta aclarar que los datos no se devuelven directamente al cliente en la verdadera arquitectura MVC, sino que se llena y se devuelve al controlador.)
- Controlador que envía esos datos a Ver (Cliente).
- El cliente tiene el servicio solicitado frente a él.
Eso es todo acerca de MVC que yo sé.
Me preguntaba cuál es exactamente la diferencia entre MVC (que es un patrón arquitectónico) y una arquitectura de n niveles para una aplicación. Lo busqué pero no pude encontrar una explicación simple. Puede ser que soy un poco ingenuo en los conceptos de MVC, así que si alguien puede explicar la diferencia, sería genial.
aclamaciones
Además de ser lineal, otra diferencia importante que no se enfatizó lo suficiente aquí es que en el modelo de N-niveles, ¡N no es necesariamente de 3 niveles! En la mayoría de los casos se implementa como tres niveles (presentación, aplicación, datos) con la capa intermedia que tiene dos sub-niveles (lógica de negocios y acceso a datos). Además, el modelo en MVC puede contener datos y lógica comercial para la manipulación de datos, mientras que estos se encontrarían en niveles separados en n niveles.
Conclusión: N-tier es una arquitectura, MVC un patrón de diseño. Son la misma metaphore aplicada en dos campos diferentes.
Date un respiro Y no se limite a ciertos patrones cuando resuelva problemas del mundo real. Solo recuerda algunos principios generales, uno de los cuales es la SEPARACIÓN DE PREOCUPACIONES .
En un modelo de tres niveles, todas las comunicaciones deben pasar por el nivel medio. Conceptualmente, la arquitectura de tres niveles es lineal. Sin embargo, la arquitectura MVC [modelo-vista-controlador] es triangular: la vista envía actualizaciones al controlador, el controlador actualiza el modelo y la vista se actualiza directamente desde el modelo.
Esto es lo que decir sobre la arquitectura n-tier
A primera vista, los tres niveles pueden parecer similares al concepto MVC (controlador de vista de modelo); 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, todas las comunicaciones deben pasar por el nivel de middleware. Conceptualmente, la arquitectura de tres niveles es lineal. Sin embargo, la arquitectura MVC es triangular: la Vista envía actualizaciones al Controlador, el Controlador actualiza el Modelo y la Vista se actualiza directamente desde el Modelo.
Jerry: Aquí hay un ejemplo simple de cómo los dos están relacionados:
Nivel 1 : Consiste en Modelos que se comunican con el Nivel 2 a través de algún tipo de servicio de red o similar, controladores para manejar validación de entrada, cálculos y otras cosas relevantes para las vistas. Y contiene los puntos de vista, por supuesto, que pueden ser la GUI en una aplicación de escritorio o la interfaz web en una aplicación web.
Nivel 2 : contiene algún tipo de servicio u otra forma de recibir mensajes del Nivel 1. No sabe / no debe saber sobre el Nivel 1, por lo que solo puede responder a llamadas desde arriba; nunca pregunte por sí mismo. También contiene toda la lógica de negocios.
Nivel 3 : contiene el modelo de dominio, la representación de objetos de la base de datos y toda la lógica para comunicar y actualizar las entradas de la base de datos.
La única similitud es que los dos patrones tienen tres recuadros en sus diagramas. Fundamentalmente son completamente diferentes en sus usos. De hecho, generalmente no es una elección entre qué patrón usar, pero ambos patrones se pueden usar juntos de manera harmónica. Aquí hay una buena comparación de los dos: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
La arquitectura de N-nivel generalmente tiene cada capa separada por la red. IE la capa de presentación está en algunos servidores web, luego habla con servidores de aplicaciones de fondo en la red para la lógica de negocios, luego habla con un servidor de base de datos, de nuevo a través de la red, y tal vez el servidor de aplicaciones también llama a algunos servicios remotos ( diga Authorize.net para el procesamiento de pagos).
MVC es un patrón de diseño de programación donde diferentes porciones de código son responsables de representar el Modelo, la Vista y el controlador en alguna aplicación. Estas dos cosas están relacionadas porque, por ejemplo, la capa del Modelo puede tener una implementación interna que llama a una base de datos para almacenar y recuperar datos. El controlador puede residir en el servidor web y llamar de forma remota a los servidores de aplicaciones para recuperar datos. MVC abstrae los detalles de cómo se implementa la arquitectura de una aplicación.
N-tier solo se refiere a la estructura física de una implementación. Estos dos a veces se confunden porque a menudo se implementa un diseño de MVC usando una arquitectura de N niveles.
Si un diseño de 3 niveles fuera así:
Client <-> Middle <-> Data
el patrón MVC sería:
Middle
^ |
| v
Client <- Data
Significa que:
- en el equivalente de 3 niveles, la comunicación entre capas es bidireccional y siempre pasa a través del nivel intermedio
- en el equivalente de MVC, la comunicación es unidireccional ; podríamos decir que cada "capa" se actualiza por la de la izquierda y, a su vez, actualiza la que está a la derecha, donde "izquierda" y "derecha" son meramente ilustrativas
PS Client sería la vista y el medio el controlador
Una arquitectura N-Tier se define mejor usando un diagrama de despliegue.
Una arquitectura MVC se define mejor usando un Diagrama de Secuencia.
Los 2 no son lo mismo y no están relacionados y puede combinar las dos arquitecturas juntas. Muchas empresas han tomado las medidas necesarias para crear una arquitectura N Tier, no solo para el despliegue y la escalabilidad, sino también para la reutilización de códigos.
Por ejemplo, los objetos de su Entidad comercial pueden necesitar ser consumidos por una aplicación de escritorio, un servicio web expuesto para un cliente, una aplicación web o una aplicación móvil. Simplemente usar un enfoque MVC no lo ayudará a reutilizar nada en absoluto.
Una regla fundamental en la 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, todas las comunicaciones deben pasar por el nivel de middleware.
Es una arquitectura de línea. Esto aborda la cuestión de cómo pasar información entre un usuario y una base de datos. Donde MVC es una arquitectura triangular: la Vista envía actualizaciones al Controlador, el Controlador actualiza el Modelo y la Vista se actualiza directamente desde el Modelo. Esto responde a preguntas sobre cómo una interfaz de usuario administra los componentes en la pantalla.