vista una software sistemas presentador patrones patron mvc modelo diseño diagrama controlador clases biblioteca actividades model-view-controller three-tier

model view controller - una - ¿Arquitectura MVC vs. 3 niveles?



patron de diseño mvc (13)

¿Cuál es la diferencia básica entre MVC y la arquitectura de 3 niveles?


¿Qué es una arquitectura de 3 niveles?

Three-tier (layer) es una arquitectura cliente-servidor en la que la interfaz de usuario, el proceso de negocio (reglas de negocio) y el almacenamiento de datos y el acceso a los datos se desarrollan y mantienen como módulos independientes o, con mayor frecuencia, en plataformas separadas. Básicamente, hay 3 capas, nivel 1 (nivel de presentación, nivel de GUI), nivel 2 (objetos comerciales, nivel de lógica de negocios) y nivel 3 (nivel de acceso a datos). Estos niveles se pueden desarrollar y probar por separado.

DAL - Capa de acceso a datos (tiene Connectionstring y proceso de lectura y ejecución de datos)

BOL - Capa de objeto de negocio (tiene consultas)

UI - Interfaz de usuario (formularios y código detrás)

Más detalles: Archtecture de 3 niveles


Cada aplicación tiene una más de siguientes capas 1) Capa de presentación o Capa de interfaz de usuario 2) Capa de negocios o Capa de lógica de negocios 3) Capa de acceso a datos o capa de datos

La arquitectura de 3 niveles normalmente 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, otra vez a través de la red, y tal vez el servidor de la aplicación también llama a algún remoto servicios (digamos Authorize.net para procesamiento de pagos).

algunas veces necesitamos más capas del tipo anterior y más mechines, entonces se llama como nivel N

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. Modelo en qué modelo queríamos construir Vista significa UI de la aplicación Contol Significa la lógica que controla la aplicación

3 niveles solo se refiere a la estructura física de una implementación. Estos dos a veces se confunden porque un diseño de MVC a menudo se implementa utilizando una arquitectura de 3 niveles.


En MVC: 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

En Tres niveles: una arquitectura de tres niveles es 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 medio

Ingeniero de Software Vikas Joshi


En aplicaciones más grandes, MVC es el nivel de presentación solo de una arquitectura de N niveles. Las vistas y los controladores de los modelos solo se ocupan de la presentación y utilizan un nivel medio para rellenar los modelos con datos del nivel de datos.

MVC también se puede utilizar como toda la arquitectura de 3 niveles donde las Vistas son su presentación, los Controladores son su lógica de negocios y los Modelos son su capa de datos (generalmente generada por un DAL como Entity Framework).

Lo ideal es que quieras que tus controladores sean delgados y tontos, transfiriendo la lógica a un "componente comercial", que esencialmente se convertiría en tu nivel medio.


En la arquitectura de 3 niveles, la comunicación entre niveles es bidireccional. En el 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.

La arquitectura de 3 niveles generalmente se implementa como 3 procesos separados en 3 nodos de red separados. Pero MVC está diseñado para implementarse como un proceso único en un solo nodo de red. (como una aplicación de escritorio)

El nivel empresarial en 3 niveles generalmente contiene capas diferentes que implementan patrones famosos como delegados comerciales, fachada comercial, objeto comercial, localizador de servicios, objeto de transferencia de datos, etc. Pero MVC es un patrón de diseño que se usa en el nivel de presentación.

El objetivo de 3 niveles es la separación de la lógica empresarial del cliente y la base de datos, por lo que se proporcionan múltiples protocolos de cliente, alta escalabilidad, acceso a datos heterogéneos, etc. Pero el objetivo principal de MVC es que los cambios de implementación en una parte no requieran cambios en otra .


IMO no existe una comparación directa entre la arquitectura de 3 niveles y MVC. Ambos se usan en conjunción y, por lo tanto, tendemos a verlos a través del mismo lente. Conceptualmente no necesitan ser usados ​​juntos. Podría tener una arquitectura de 3 niveles que no use lo que MVC tiene para ofrecer.

No estoy elaborando la parte de definiciones, sino en pocas palabras:

3-Tier es un enfoque de arquitectura de software, en el que la interfaz de usuario, el proceso comercial son lógicos, el nivel de datos se desarrolla de forma independiente, con mayor frecuencia en plataformas separadas.

MVC ha evolucionado desde un patrón de software a un patrón arquitectónico durante un período de tiempo y se lo ve en todos los marcos principales hoy en día.


Mi experiencia es que MVC es simplemente otro término de "moda" para los 3 niveles mal redactados, donde parte de la comunicación salta alrededor de las capas de negocios y, por lo tanto, el cliente y / o la capa de datos también tiene reglas de negocios mezcladas.

Odio el código escrito así: el término MVC debe haber sido diseñado para confundir a los reclutadores de RR.HH. con el pensamiento de que los programadores más antiguos (que lo conocen como "nivel 3") no coinciden para el trabajo.


No creo que MVC cambie nada ni te ayude a construir un sistema mejor o más robusto. La arquitectura de 3 niveles es un sistema exitoso y suficiente. Yo / usted puede construir un sistema muy completo y robusto en él. Todos sabemos que un sitio web complejo o de vida real requiere mucha interacción entre todas las capas. Personalmente, creo que php por esa razón tiene ventaja sobre .net. Si le pides a un programador arrogante y asqueroso que cree un sistema de foro simple en .net, se rascará la cabeza sobre qué control usar para renderizarlo. Luego combinará la cuadrícula de datos con algún repetidor ... Pero más tarde, si simplemente pides agregar una sección o imagen de comentario, ¿será como cómo diablos lo hago? Por otro lado, en php ... U puede mezclarse en html con código de servidor para lograr fácilmente cualquier capa de presentación ... Así que no presumas de la arquitectura ya que tienen los mismos ventajas y desventajas. Pero pregunta qué has construido?


No hay relación entre los dos. MVC es un patrón de capa de presentación. Todo el Model-View-Controller existe en la capa de presentación.

  • El modelo es un objeto que contiene datos (generalmente solo VO) que están representados por Ver o que están llenos desde la Vista.

  • El controlador es el que recibe la solicitud (y puede completar el modelo) y llama a la capa de servicio. Luego obtiene otro (o el mismo) modelo y lo envía de regreso a Ver.

  • Ver es lo que muestra el modelo y proporciona componentes para capturar la entrada del usuario. (Por lo general, es un motor de plantillas en aplicaciones web o componentes de interfaz de usuario en una aplicación de escritorio).

Cuando hablamos de aplicación de 3 niveles (o n niveles) estamos hablando de la arquitectura de toda la aplicación, que consiste en Presentation Layer (todo el MVC), Service Layer (Business classes) y Data Access Layer.

La capa de servicio (y todo lo demás) está oculta detrás de los controladores de MVC.


Tomo un enfoque diferente en comparación con lo que dijo Michael en su respuesta.

Los controladores nunca deben ser su lógica comercial. Para mí, la lógica de negocios pertenece a la capa de modelo. Y, sin embargo, las vistas (y hasta cierto punto los controladores) y parte de la capa de presentación, el modelo nunca forma parte de él en una aplicación MVC. El modelo debe ser el corazón y el alma de una aplicación MVC y de eso se trata el Diseño Dirigido por Dominio, que se puede implementar fácilmente en una aplicación MVC.

Recuerde que no tiene que tener el modelo dentro del mismo proyecto (hablando de ASP.NET MVC). Podría residir en un proyecto completamente diferente y todavía puede actuar como modelo de la aplicación

Una aplicación de MVC que actúa como capa de presentación solo puede funcionar en un gran proyecto con muchos niveles, pero nunca puede actuar como una capa de solo presentación en una arquitectura de 3 niveles, que es lo que preguntó el interrogador.

Entonces podemos decir que MVC hace dos (el tercero puede ser la capa de datos que no es realmente parte de la arquitectura MVC per se) de tres capas de una arquitectura de 3 niveles.

Gracias.


Una arquitectura de 3 niveles es lineal donde el nivel del cliente nunca se comunica realmente con el nivel de datos: todas las comunicaciones pasan por el nivel intermedio. MVC por otro lado es más triangular donde la vista envía actualizaciones al controlador y recibe actualizaciones del modelo y el controlador actualiza el modelo.

(Consulte "Comparación con la arquitectura MVC" en http://en.wikipedia.org/wiki/3-tier_architecture )


3 niveles es un estilo de arquitectura y MVC es un patrón de diseño .

entonces es diferente en eso.

pero podríamos usar el patrón mvc en el estilo de arquitectura de 3 niveles.

asi que:

Nivel de presentación : "Controladores y vistas" de MVC Pattern.

Nivel empresarial : "Modelo (Datos)" de MVC Pattern.

Nivel de acceso a datos : Nivel de acceso a datos original.


  • 3-Tier es una arquitectura lineal. (Nivel de presentación -> Nivel lógico -> Nivel de datos luego Nivel de datos -> Nivel lógico -> Nivel de presentación) Pero MVC es una arquitectura triangular. (Ver y modelo de actualización de control. Vista de actualización del modelo).
  • MVC puede incluir en el nivel de presentación (aplicaciones móviles, Angular como js frameworks, etc ...) y nivel lógico (J2EE, Laravel, etc.) en la arquitectura de 3 niveles.
  • Las capas en 3 niveles pueden implementarse en diferentes nodos de red. Pero típicamente los elementos en MVC se implementan en los mismos nodos de red.