Es casi instantáneo cada vez que hablo con los desarrolladores sobre Model View Controller ( MVC ), me dicen que hace una solicitud a una url, el servidor construye una entidad (MODELO) y le proporciona una representación visual de ese modelo.
Entonces, ¿esto significa que MVC es solo para la web o he estado conociendo personas que son solo desarrolladores que emplean MVC para escribir aplicaciones web?
¿Hay usos para MVC en aplicaciones de estilo de escritorio?
Por mi parte, soy nuevo en el paradigma y me gustaría saber de cualquier superconjunto de MVC
web-development
design-patterns
mvc
Deeptechtons
fuente
fuente
Respuestas:
MVC es un patrón. Los patrones se aplican a toda la programación. MVC simplemente funciona muy bien en un contexto web.
Como señala gnat, solo eche un vistazo a la etiqueta mvc y verá múltiples ejemplos de cómo se implementa.
fuente
Teniendo en cuenta que MVC es de 1977, y la web solo se inventó en 1991, debería ser bastante obvio que MVC no es solo para la web.
fuente
No, el desarrollo para OS X e iOS utiliza el patrón Model View Controller.
fuente
Haga la pregunta en un entorno de Microsoft y mucha gente asumirá que se refiere a Asp.Net MVC, 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 la suposición de "solo web".
fuente
Al menos hasta donde sé, 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 bastante similar de todos modos) había estado en Smalltalk durante algunos años para entonces.
La mayoría de los marcos OO GUI han incluido al menos alguna variante de MVC. Sin embargo, no estoy seguro de qué significa exactamente "superconjunto" en este caso. Es un poco difícil decir si alguna variante dada es un superconjunto, subconjunto o par de MVC, pero tendería a considerar a la mayoría de ellos como pares.
En cualquier caso, muchos (¿la mayoría?) De estos se han utilizado para el desarrollo de escritorio, no para el desarrollo web. Gracias a algunas patentes antiguas de AT&T, la mayoría de los sistemas de ventanas requieren programas para poder volver a generar vistas a pedido. Esto (casi) fuerza al menos un 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 todavía deja mucho espacio 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.
fuente
No, se aplica incluso para aplicaciones independientes. Ejemplo Java Swing sigue MVC.
fuente
Por lo tanto, hay muchos patrones de diseño diferentes en esta área.
y así. 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 lado del servidor. Como ejemplo en la implementación original de smalltalk, el Modelo observaría la vista de los cambios, que ya no es el caso, ya que el lado del 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 que dependen 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, 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 jerárquica de mvc.
Nota. Solo he hablado sobre frameworks web, otras implementaciones de MVC como java swing y Flex tienen otras diferencias de implementación.
fuente
Una cosa que debe saber es que hay tantos sabores 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 gestiona los eventos de entrada de usuario, mouse y teclado. 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 en 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 conoces no se usa en aplicaciones independientes.
fuente