48 votos

La arquitectura más adecuada para las aplicaciones web de MVC?

He estado aprendiendo Zend y su aplicación MVC estructura de mi nuevo trabajo, y encontró que el trabajo con ella sólo me molestó por razones que no podía poner mi dedo en. Luego, durante el transcurso de mis estudios, me llegó a través de artículos, tales como MVC: No hay Bala de Plata y este podcast sobre el tema de MVC y aplicaciones web. El hombre en el podcast hizo un muy buen caso en contra de MVC como una arquitectura de aplicaciones web y clavado en un montón de lo que estaba molestando en la cabeza.

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

104voto

tereško Puntos 32847

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

Cualquier marco de las reclamaciones que se puede es mentir a usted. La realidad es que los marcos de ellos ni siquiera pueden implementar MVC-su código. Pero eso no es un buen marketing de tono, supongo.

Para implementar un clásico MVC se requeriría para usted que la persistencia de los Modelos, para empezar. Además, el Modelo debe informar de Vista acerca de los cambios (patrón observer), que también es imposible en su vainilla página PHP (se puede hacer algo parecido a la clásica MVC, si el uso de sockets, pero eso es poco práctico para el sitio web real).

En el desarrollo web, en realidad tiene 4 otros MVC-inspirado soluciones:

  • Model2 MVC: Vista está solicitando el Modelo de datos y, a continuación, decidir cómo hacerla y que las plantillas a utilizar. El controlador se encarga de cambiar el estado de la Vista y el Modelo.

  • MVVM: el Controlador se intercambia por un ViewModel, que es la responsable de la traducción entre la Vista de las expectativas y Modelos de la lógica. La vista de las solicitudes de datos del controlador, que se traduce en la solicitud a fin de que el Modelo puede entender.

    Más a menudo se puede usar esta cuando usted no tiene ningún control sobre cualquiera de los puntos de vista o la capa del modelo.

  • MVP (lo de frameworks de php llamada "MVC"): Presentador de solicitudes de información del Modelo, la recoge, lo modifica, y la pasa a la Vista pasiva.

    Para explorar este patrón, yo te recomendaría empezar con esta publicación. Se explicará en detalle.

  • HMVC (PAC): difiere de Model2 con la capacidad de un controlador para ejecutar sub-controladores. Cada uno con su propio tríada de la M, V y C. aumento de la modularidad y la facilidad de mantenimiento, pero pagar con algún éxito en el rendimiento.

De todos modos. La línea de fondo es: realmente no has utilizado MVC.

Pero si usted está enfermo de todo el MVC-como las estructuras, usted puede mirar en:

  • evento impulsado arquitecturas
  • arquitectura n-Tier

Y entonces, siempre existe la DCI paradigma, pero tiene algunos problemas cuando se aplica a PHP (no se puede convertir a una clase en PHP .. no sin fea hacks).

4voto

pcalcao Puntos 10302

Desde mi experiencia, los beneficios que obtiene de una arquitectura MVC es mucho mayor que sus costos y aparente sobrecarga cuando el desarrollo para la web.

Para alguien que empieza con un complejo marco de MVC, puede ser un poco intimidante para hacer el esfuerzo extra de la separación de las tres capas, y conseguir una buena sensación en cuanto a lo que pertenece, donde (algunas cosas son obvias, otros pueden ser bastante borde de la línea y tienden a ser buenos temas de discusión). Creo que este costo se paga por sí mismo en el largo plazo, especialmente si usted está esperando a su aplicación a crecer o mantenerse durante un período de tiempo razonable.

He tenido situaciones donde el costo de la creación de una nueva API para permitir a otros clientes para conectarse a una aplicación web existente era extremadamente baja, debido a una buena separación de las capas: la lógica de negocio no estaba conectado a la presentación, por lo que fue la torta.

En el actual marco de MVC eco-sistema creo que su kilometraje puede variar considerablemente, ya que los principios son comunes, pero hay un montón de diferencias entre, por ejemplo, Zend, Django, RoR y SpringMVC.

Si verdaderamente existen otras buenas alternativas a este paradigma por ahí... estoy muy interesado en las respuestas!

Lo siento por el ligero de la pared de texto!

0voto

jprofitt Puntos 8254

Creo que dependerá de lo que estamos tratando de hacer, personalmente. Magenta utiliza MVC bastante éxito, y eso hace que sea bastante fácil añadir nuevas funcionalidades o modificar las existentes.

Por supuesto, si usted está tratando de hacer algo bastante simple, va con una arquitectura MVC podría ser una exageración.

0voto

vou xiong Puntos 1

Es toda preferencia. He trabajado con las viejas estructuras como XTemplates y Smarty y ahora se han movido en Codeigniter y Kohona. Me gustan mucho y que funcionan muy bien para todo lo que hago en la web. Para aplicaciones de teléfono puedo configurar los controladores para las funciones que se necesitan para hacer que los datos de tira así. De trabajo tanto en el mundo de Linux y Windows Mundo, para la construcción de ASP.NET los Sitios Web no veo otra manera de construir sitios web de lado el uso de MVC. Web de Proyectos de Aplicaciones en Visual Studio se utiliza todavía, pero prefiero no más. MVC Proyectos a través de Visual Studio es muy fácil de usar y configurar. Usted puede hacer clic derecho en el controlador de métodos y crear vistas de forma automática. En cada una de las estructuras que hay una buena y una mala, pero es para el desarrollador utilizar todo lo que satisfaga sus necesidades.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X