Pregunta

Documentación de lectura Kohana, descubrí que la diferencia principal en la versión 3.0 es que sigue el patrón MVC HMVC en lugar de como la versión 2.x hace. La página acerca de esto en documentos de Kohana y el de Wikipedia en realidad no me dan una idea clara.

Así que la pregunta: ¿cuál es el patrón HMVC y cómo se diferencia de MVC

?
¿Fue útil?

Solución

Sam de Freyssinet (uno de los desarrolladores Kohana) escribió una vez artículo en profundidad sobre HMVC , lo que es, y cómo se puede utilizar.

Enlace está muerto: New Link - https://web.archive.org/web/20160214073806/http://techportal.inviqa.com/2010/02/22/scaling-web- aplicaciones-con-HMVC /

Otros consejos

Actualmente estoy en el proceso de desarrollar mi propio PHP 5.3 HMVC marco llamado aleación . Desde que estoy en una inversión muy elevada y se vende en HMVC, pensé que podría ofrecer un punto de vista diferente, y tal vez una mejor explicación de por qué se debe utilizar HMVC y los beneficios que aporta.

El mayor beneficio práctico de la utilización de una arquitectura HMVC es el "widgetization" de las estructuras de contenido. Un ejemplo podría ser comentarios, valoraciones, Twitter o pantallas de canal de blog RSS, o la visualización de los contenidos cesta de la compra para un sitio web de comercio electrónico. Es esencialmente una pieza de contenido que debe ser visualizado a través de múltiples páginas, y, posiblemente, incluso en diferentes lugares, dependiendo del contexto de la solicitud HTTP principal.

marcos tradicionales MVC generalmente no proporcionan una respuesta directa para estos tipos de estructuras de contenido, por lo que las personas generalmente terminan duplicar y cambiar los diseños, el uso de ayudantes personalizados, crear sus propias estructuras de widgets o archivos de la biblioteca, o tirando de datos no relacionados de el controlador principal solicitado a empujar a través de la vista y el render en un parcial. Ninguno de estos son especialmente buenas opciones, ya que la responsabilidad de hacer una pieza particular de contenido o datos de carga requerida termina fugas en múltiples áreas y conseguir duplicado en los lugares que se utiliza.

HMVC, o específicamente la capacidad de enviar sub-peticiones a un controlador para manejar estas responsabilidades es la solución obvia. Si se piensa en lo que estás haciendo, se ajusta a la estructura del controlador exactamente. Es necesario para cargar algunos datos acerca de los comentarios, y mostrarlos en formato HTML. Por lo que envía una solicitud de comentarios al controlador con algunos parametros, que interactúa con el modelo, recoge una vista, y la vista muestra el contenido. La única diferencia es que desea que los comentarios que aparecen en línea, a continuación el artículo del blog el usuario está viendo en lugar de una página completamente separada comentarios completo (aunque con un enfoque HMVC, en realidad se puede servir tanto a las solicitudes internas y externas con el mismo controlador y "matar dos pájaros de un tiro", como se suele decir). En este sentido, HMVC es en realidad un subproducto natural de la lucha por la modularidad aumento de código, reutilización, y mantener una mejor separación de las preocupaciones. Este es el punto de venta de HMVC.

Sam de artículo TechPortal de Freyssinet en la ampliación a cabo con HMVC es interesante pensar, no es que el 90% + de las personas que utilizan los marcos HMVC se van a poner, prácticos y beneficios reales del día a día de la misma.

HMVC está estrechamente relacionado con el enfoque de "componente basado" para despachar. Básicamente, en lugar de tener un único despachador, que delega a un controlador, cada controlador puede actuar como un en sí despachador. Esto le da una jerarquía de controladores. El diseño es más flexible y produce una mejor encapsulación de código, pero a un precio más alto de abstracción. Konstrukt está diseñado en torno a este patrón.

Vea también esta respuesta: https://stackoverflow.com/questions/115629/ simple-php-enrutamiento de marco / 120411 # 120411

En Kohana, al menos, una solicitud HMVC es una solicitud HTTP que es atendida "internamente": en lugar de ser emitida por la red, se encamina, despachado y manejado por el propio marco. La similitud de los nombres "HMVC" y "MVC" es confuso ya que sugiere una conexión subyacente entre los términos que no existe en realidad: no se trata de una variante o modificación de la otra menor, que son cosas completamente diferentes. (HMVC también se describe como Ajax y sin la petición HTTP del lado del cliente.) El énfasis de Kohana en adelante, y el apoyo a "HMVC" significa que el marco tiene un fuerte apoyo para una arquitectura orientada al servicio basado en HTTP.

La ventaja de este patrón de arquitectura es que, dado que el mismo "convención de llamada" se utiliza para peticiones internas y externas, es trivial para convertir las solicitudes de servicio "internos" a las solicitudes "externos" o viceversa, según sea necesario.

Si bien este es un patrón de arquitectura sensata, dándole su propio nombre parece innecesario (Symfony2 describe el mismo concepto " sub-solicitudes "), y, de hecho, el nombre parece ser un término equivocado: no hay requisito particular o la necesidad de que las peticiones forman una jerarquía (que no sea el gráfico de llamadas básico de un imperativo programa); las solicitudes podrían fácilmente ser recursivo, por ejemplo.

[ Actualizar abr 2011, Mar 2012:. Ampliado de respuesta en respuesta a los comentarios]

HMVC es jerárquica Modelo Vista Controller.In en MVC normal de cada objeto tiene su interfaz gráfica de usuario MVC.But no hay ninguna relación entre el objeto y el objeto GUI padres GUI Niño diferencia HMVC. En HMVC cada objeto de interfaz gráfica de usuario tiene acceso a sus objetos secundarios y cada uno de objeto hijo puede tener acceso a su objeto padre.

Así que en todas las vistas hay un padre view.Through la que se puede acceder a ella vista padre. Para en cada controlador hay un controlador de matriz a través del cual puede pasar el evento al controlador padre (Si el evento no es en su alcance.)

Para más detalles por favor haga clic aquí

Nuevo enlace es esta dirección

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top