vista ventajas patron mvc modelo mediante ejemplo desventajas desarrollo controlador aplicaciones php model-view-controller web-applications architecture

ventajas - mvc php



¿Arquitectura más adecuada para aplicaciones web que MVC? (4)

He estado aprendiendo sobre Zend y su estructura de aplicaciones MVC para mi nuevo trabajo, y descubrí que trabajar con él solo me molestaba por razones que no podía entender. Luego, durante el curso de mis estudios, encontré artículos como MVC: No Silver Bullet y este podcast sobre el tema de MVC y aplicaciones web. El tipo en el podcast hizo una muy buena defensa contra MVC como una arquitectura de aplicaciones web y captó mucho de lo que me molestaba en la cabeza.

Sin embargo, la pregunta sigue siendo, si MVC no es realmente una buena opción para aplicaciones web, ¿qué es?


Creo que dependería de lo que intentas hacer, personalmente. Magenta usa MVC con bastante éxito, y hace que sea bastante fácil agregar nuevas funcionalidades o modificar las existentes.

Por supuesto, si estás tratando de hacer algo bastante simple, ir con una arquitectura MVC podría ser excesivo.


Desde mi experiencia, los beneficios que obtienes de una arquitectura MVC superan con creces sus costos y aparente sobrecarga cuando se desarrollan para la web.

Para alguien que comienza con un framework complejo de MVC, puede ser un poco desalentador hacer el esfuerzo adicional de separar las tres capas, y tener una buena idea de qué es lo que le corresponde (algunas cosas son obvias, otras pueden ser bastante limítrofes). y tienden a ser buenos temas de discusión). Creo que este costo se paga a largo plazo, especialmente si espera que su aplicación crezca o que se mantenga durante un período de tiempo razonable.

Tuve situaciones en las que el costo de crear una nueva API para permitir que otros clientes se conectaran a una aplicación web existente era extremadamente bajo, debido a la buena separación de las capas: la lógica de negocios no estaba conectada en absoluto a la presentación, por lo que fue un pastel

En el ecosistema de marco MVC actual, creo que su kilometraje puede variar mucho, ya que los principios son comunes, pero hay muchas diferencias entre, por ejemplo, Zend, Django, RoR y SpringMVC.

Si hay realmente otras buenas alternativas a este paradigma ... ¡Estoy bastante interesado en las respuestas!

Perdón por el ligero muro de texto!


Es todo preferencia. He trabajado con estructuras antiguas como XTemplates y Smarty y ahora he pasado a Codeigniter y Kohona. Me gustan mucho y funcionan muy bien para todo lo que hago en la web. Para aplicaciones telefónicas, puedo configurar controladores para las funciones que se necesitan para hacer sus extracciones de datos también. Trabajando tanto en el mundo Linux como en Windows World, para construir sitios web ASP.NET no veo otra forma de crear sitios web además de usar MVC. Los proyectos de aplicaciones web en Visual Studio todavía se usan, pero prefiero no hacerlo más. MVC Projects a través de Visual Studio es tan fácil de usar y configurar. Puede hacer clic derecho en los métodos de su controlador y crear vistas automáticamente. En cada estructura hay un bien y un mal, pero depende del desarrollador usar lo que sea que satisfaga sus necesidades.


Todo depende de tu estilo de codificación. Aquí está el secreto: es imposible escribir MVC clásico en PHP.

Cualquier marco que afirme que puede te está mintiendo. La realidad es que los frameworks en sí mismos ni siquiera pueden implementar MVC; tu código sí puede. Pero ese no es un buen discurso de marketing, supongo.

Para implementar un MVC clásico, para empezar, se requieren modelos persistentes. Además, Model debe informar a View acerca de los cambios (patrón de observador), lo cual también es imposible en su página PHP vainilla (puede hacer algo parecido al MVC clásico, si usa sockets, pero eso no es práctico para un sitio web real).

En el desarrollo web, en realidad tienes otras 4 soluciones inspiradas en MVC:

  • Model2 MVC : View solicita datos del Modelo y luego decide cómo presentarlos y qué plantillas usar. El controlador es responsable de cambiar el estado de la vista y el modelo.

  • MVVM : el controlador se intercambia por un ViewModel, que es responsable de la traducción entre las expectativas de View y la lógica de Models. Ver datos de solicitudes desde el controlador, que traduce la solicitud para que el Modelo pueda entenderla.

    Lo más frecuente es que lo use cuando no tiene control sobre las vistas o la capa del modelo.

  • MVP (lo que los marcos de php llaman "MVC"): el presentador solicita información de Model, la recoge, la modifica y la pasa a la vista pasiva.

    Para explorar este patrón, lo recomendaría para comenzar con esta publicación . Lo explicará en detalle.

  • HMVC (o PAC): difiere del Modelo 2 con la capacidad de un controlador para ejecutar subcontroladores. Cada uno con una tríada propia de M, V y C. Obtiene modularidad y facilidad de mantenimiento, pero paga con un poco de rendimiento.

De todas formas. La conclusión es: realmente no has usado MVC.

Pero si estás cansado de todas las estructuras similares a MVC, puedes investigar:

  • arquitecturas impulsadas por eventos
  • arquitectura n-Tier

Y luego siempre está el paradigma de DCI , pero tiene algunos problemas cuando se aplica a PHP (no se puede convertir a una clase en PHP ... no sin feos hacks).