sábado, 4 de enero de 2014

Patrones de diseño HMVC y PAC

En esta entrada hablaré de dos patrones de diseños, el primero es HMVC el cuál es el patrón de diseño que uso actualmente para el desarrollo web y segundo es PAC, un patrón de diseño similar a HMVC que de hecho surgió mucho antes que HMVC y que vale la pena ver que características tiene para no confundir a HMVC con PAC pues no son lo mismo.

MVC (Model View Controller)

El patrón MVC fue concebido originalmente en 1978-79 por Trygve Reenskaug y tenía el objetivo principal de proporcionar una interfaz para los usuarios, manipular múltiples vistas de datos como se trabaja con entidades del mundo real.

  • Modelo: El modelo puede visualizarse como una capa que conecta la aplicación con los datos o como clases que contienen aquellas funciones encargadas de interactuar con la estrategia de negocio de la aplicación. Se encarga de realizar todo el tratamiento sobre los datos que la aplicación manejara.
  • Vista: Es la capa encargada de mostrar los datos al usuario o de requerir datos. Es la parte visible de la aplicación con la que el usuario interactúa y ejecuta las acciones disponibles.
  • Controlador: El controlador es la capa crucial de la aplicación. En esta capa se aplica la lógica de la aplicación misma. El controlador se encarga de recibir peticiones del usuario, procesar, invocar métodos necesarios definidos en el modelo y retornar los datos al usuario por medio de la vista.

HMVC (Hierarchical Model View Controller)


Resultado de una solución presentada en el JavaWorld web site en julio de 2000 por Jason Cai, Ranjit Kapila y Gaurav Pal, dado problemas con aplicaciones que usaban MVC.
El HMVC (Herarchical Model View Controller) es una mejora
del MVC. Su mas grande beneficio de usar este estilo es la “widgetizacion” de la estructura del contenido de una aplicación. Dividir la aplicación en sub-aplicaciones las
cuales contiene una propia terna MVC.
Actualmente es el patrón de diseño mas usado para aplicaciones web e incluido en varios frameworks de desarrollo web.

HMVC Pattern

Ventajas de HMVC

Principales ventajas de implementar HMVC en el ciclo de desarrollo:
  1. Modularización: Reduce las dependencias entre las distintas partes de la aplicación.
  2. Organización: Tener una carpeta para cada una de las ternas relevantes hace una carga de trabajo más ligera.
  3. Reusabilidad: Por la naturaleza del diseño es fácil de reutilizar casi cada pieza de código.
  4. Extensibilidad: Hace la aplicación mas extensible al añadir o remover módulos sin sacrificar la facilidad de mantenimiento.

Comparación

Abajo se tienen dos imagenes de dos proyectos web. El primero es usando un esquema MVC y el segundo usando el esquema HMVC.

MVC example
Esquema MVC
HMVC example
Esquema HMVC

PAC (Presentation Abstraction Control)

En contraste con MVC, este patrón de diseño define una estructura para sistemas software interactivos en forma de agentes jerárquicos y cooperativos.
Cada agente es responsable de una funcionalidad especifica de la aplicación y consiste de 3 componentes: la presentación, la abstracción y el control.
Esta subdivisión separa los aspectos de interacción humano – computadora de los agentes en su núcleo 
funcional y su comunicación con otros agentes.

PAC Pattern
PAC Pattern

En conclusion

  1. HMVC y PAC ciertamente describen un patrón muy similar.
  2. HMVC es un sub patrón de MVC y PAC.
  3. HMVC es un patrón mas especifico que se centra en la interfaz de usuario.
  4. En HMVC se retiene un acoplamiento entre el modelo y la vista. Lo cual permite comunicación sin necesidad de pasar al controlador.
  5. HMVC sugiere que todos lo modelos de cualquier nivel tengan acceso a los datos.
  6. HMVC provee alto mantenimiento y reusabilidad al concentrarse en el aislamiento 
  7. de las responsabilidades. Esto algo en que los desarrolladores deben basarse.
  8. PAC es un patrón mas general que se ocupa de todo el software interactivo.
  9. PAC también se ocupa de variaciones que no implican alguna abstracción o presentación.
  10. PAC mantiene la vista y el modelo debidamente acoplados.
  11. PAC describe que el agente de nivel superior realiza todo el acceso a datos.

Frameworks como Codeigniter usando un plugin y ZanPHP nativamente, utilizan el patron de diseño HMVC.
En lo personal, es un patron de diseño muy facil y sencillo de utilizar que te permite modular y desarrollar libremente una aplicacion web. Les invito a probarlo.

No hay comentarios. :

Publicar un comentario