¿Se aplica MVC solo a la web?

14

Es casi instantáneo cuando hablo con los desarrolladores acerca de Model View Controller ( MVC ) que dicen que usted hace una solicitud a una URL. El servidor crea una entidad (MODEL) y le brinda representación visual. de ese modelo.

  • ¿Significa esto que MVC es solo para la web o me he reunido con personas que son solo desarrolladores que emplean MVC para escribir aplicaciones web?

  • ¿Existen usos para MVC en aplicaciones de estilo de escritorio?

  • Por mi parte, soy nuevo en paradigma y me gustaría saber de cualquier super conjunto de MVC

pregunta Deeptechtons 21.03.2012 - 09:53
fuente

8 respuestas

22

MVC es un patrón. Los patrones se aplican en toda la programación. Resulta que MVC funciona muy bien en un contexto web.

Como gnat señala hacia fuera solo eche un vistazo la etiqueta mvc y verá múltiples ejemplos de su implementación.

    
respondido por el Tom Squires 21.03.2012 - 10:09
fuente
45

Teniendo en cuenta que MVC es de 1977 y que la web solo se inventó en 1991, debería ser bastante obvio que MVC no es no solo para la web.

    
respondido por el Jörg W Mittag 21.03.2012 - 10:13
fuente
9

No, el desarrollo para OS X e iOS usa el patrón de Model View Controller.

    
respondido por el Holli 21.03.2012 - 10:04
fuente
8

Haga la pregunta en un entorno de Microsoft y mucha gente asumirá que se refiere a MVC de Asp.Net que es una implementación de MVC específicamente para la web.

Desafortunadamente, hay muchas personas que no se dan cuenta de que esta es una implementación del patrón MVC y piensan que son términos intercambiables, lo que lleva a una suposición de "solo web".

    
respondido por el ozz 21.03.2012 - 11:30
fuente
2

Por lo menos que yo sepa, la primera implementación de MVC fue en Smalltalk. Definitivamente estuvo presente en Smalltalk-80. Aunque no tengo ninguna documentación a mano para probarlo, creo que (o algo muy similar de todos modos) había estado en Smalltalk durante algunos años para entonces.

La mayoría de los marcos de la GUI de OO han incluido al menos alguna variante de MVC. Sin embargo, no estoy seguro de qué significaría exactamente "superconjunto" en este caso. Es un poco difícil decir si alguna variante dada es un superconjunto, un subconjunto o un par de MVC, pero tiendo a considerar a la mayoría de ellos.

En cualquier caso, muchos (¿la mayoría?) de estos se han utilizado para desarrollo de escritorio, no para desarrollo web. Gracias a algunas antiguas patentes de AT & T, la mayoría de los sistemas de ventanas requieren que los programas puedan volver a generar vistas bajo demanda. Esto (casi) obliga al menos a cierto grado de separación entre el código que mantiene el estado actual (el modelo) y el código que muestra ese estado (la vista). Eso aún deja mucho margen para la variación en 1) el grado en que la funcionalidad del controlador está aislada y 2) los detalles exactos de dónde dibujar las líneas entre cada una de las piezas principales.

    
respondido por el Jerry Coffin 21.03.2012 - 20:26
fuente
1

No, se aplica incluso para aplicaciones independientes. Ejemplo de Java Swing sigue a MVC.

    
respondido por el Seshagiri T.V. 21.03.2012 - 15:17
fuente
1

Así que hay muchos patrones de diseño diferentes en esta área.

  • Model View Presenter (mvp)
  • Presentador de vistas de modelo (mvvp)
  • Controlador de vista de modelo
  • Modelo 2

y así sucesivamente. A lo largo de los años, estos se han entrelazado, combinado, cambiado y aplicado en una amplia variedad de contextos. Lo importante aquí es que el patrón de diseño MVC de 1977 ha cambiado bastante y ya no es el patrón de diseño utilizado por los marcos web del servidor. Como ejemplo en la implementación original de smalltalk, el Modelo observaría los cambios, lo que ya no es el caso, ya que el servidor simplemente no puede observar los elementos HTML en el navegador de los usuarios. En cambio, si la vista cambia, la vista enviará una solicitud al controlador que luego actualizará la vista. Nuevamente, no se sigue la implementación original de MVC, ya que una actualización del modelo implicaría que todas las vistas dependientes del modelo se actualizarían.

Los marcos web modernos siguen una arquitectura simple de tres niveles, también conocida como arquitectura Modelo 2.

Por supuesto, hay ejemplos de arquitecturas MVC reales en la web, pero a menudo son solo del lado del cliente, están conectadas a un servidor que sigue la arquitectura del Modelo 2, ya que las vistas son xml y json, y no se observan cambios. Ejemplos de arquitecturas mvc puras del lado del cliente son Sencha Touch y Sproutcore.

Si tiene MVC en el navegador, mvc como en el servidor y mvc como la capa de datos, tiene una implementación de mvc jerárquica.

Nota. Solo he hablado de marcos web, otras implementaciones de MVC como Java Swift y Flex tiene otras diferencias de implementación.

    
respondido por el Kjaer 22.03.2012 - 12:20
fuente
1

Una cosa que debes saber es que existen tantos tipos de MVC como marcos que afirman implementar MVC.

La mayoría está de acuerdo en el hecho de que el Modelo tiene algún estado y la Vista lo representa. Pero el Controlador tiene roles muy diferentes.

En Smalltalk, donde se describió por primera vez, el Modelo es el núcleo de su aplicación, datos y métodos comerciales. La Vista es una representación gráfica del estado de la aplicación (también conocido como Modelo), y el Controlador administra los eventos de entrada, el mouse y el teclado del usuario. El Controlador, por ejemplo, enruta los eventos del teclado al elemento de vista que tiene el foco.

En las páginas .jsp, el Modelo es principalmente datos, la Vista representa ese Modelo a HTML y el Controlador realiza el enrutamiento del Modelo a la Vista adecuada para representarlo.

Entonces, para responder a su pregunta, mientras que MVC se usa tanto en aplicaciones independientes (Java, .Net, Flex) como en la web (páginas jsp), es algo muy diferente. Eso significa que el MVC que usted conoce no se usa en aplicaciones independientes.

    
respondido por el Florian F 08.11.2014 - 18:35
fuente

Lea otras preguntas en las etiquetas