Frameworks Modelo Vista Controlador (MVC)

lunes, 29 de marzo de 2010

El Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
  • Modelo: Esta es la representación específica de la información con la cual el sistema opera. Se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema también puede operar con más datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado.
  • Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
  • Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente, a la vista.


Framework Struts

Struts es un framework de aplicación web open source desarrollado por Apache. Struts está basado en el patrón MVC. Se utiliza para construir aplicaciones Web basadas en Servlets y JSP que pueden ejecutarse en cualquier contenedor de servlets incluyendo los servidores de aplicaciones J2EE. Mediante Struts se hace uso de patrones de diseño J2EE que son útiles en la construcción de aplicaciones J2EE. Y puesto que Struts sigue los patrones incluidos en el MVC, este framework es relativamente simple de usar y aprender

Struts proporciona al desarrollador un conjunto de etiquetas JSP personalizadas que facilitan la integración del framework con las páginas JSP.

Las principales características de Struts son las siguientes:
  • Modelo Correcto. Permite modelar las aplicaciones basadas en JSP y Servlets mediante el uso del patrón de diseño MVC
  • Objetos “listos para usar”. Struts incorpora el concepto de objetos “listos para usar” a través de ficheros de configuración en XML.
  • Patrones de Diseño pre-construidos. Struts incluye patrones de diseño internos en el framework. Por lo que no se ha de preocupar de crear los propios patrones de diseño.
  • Características Extras. Incorpora características extras como validación, internacionalización, etc. 
Ventajas de Struts
  • Transporte automático de los datos introducidos en el cliente (JSP) hasta el controlador (Action) mediante formularios (ActionForm). 
  • Transporte automático de los datos enviados por el controlador (Action) a la parte de presentación (JSP) mediante formularios (ActionForm).
  • Implementa la parte común a todas las aplicaciones en la parte de Controlador (ActionServlet); la parte particular de cada aplicación es fácilmente configurable (struts-config.xml).
  • La separación de los componentes en capas (MVC) simplifica notablemente el desarrollo y su mantenimiento. 
Desventajas de Struts

El hecho de no abarcar todas las capas de la aplicación web (deja fuera la capa de negocio y la capa de persistencia) hace que el interfaz entre Struts y estas capas no esté tan automatizado, convirtiendo los accesos a los datos (DAO) en monótonos de desarrollar.


Framework Spring

Spring es un framework open source que proporciona un marco de trabajo para el desarrollo de aplicaciones J2EE. El framework está basado en el uso de ficheros planos JavaBeans para la lógica de aplicación y archivos XML para la configuración.

Las principales características de Spring son las siguientes:
  • Soporta: JTA, hibernate, JDO, JDBC, ODBC.
  • Usa implementaciones ORM de terceros como Hibernate, Ibatis, JDO, OJB.
  • Provee servicios de aplicación en forma declarativa.
  • Permite usar archivos XML de configuración, programación mediante la API y mediante un estándar JSR.
  • Aporta integración con la solución de código abierto Acegi (soporta seguridad declarativa basada en el uso de IoC y AOP).
  • Permite el uso de cualquier servicio usando un archivo XML de configuración.
  • Todos los componentes pueden ser testeados fuera del contenedor. 
Ventajas
  • Spring recomienda el uso de Interfaces, si se decide no utilizar Spring, basta con reimplementar las interfaces.
  • Spring se puede ejecutar dentro de un contenedor Web o fuera de él en una aplicación Swing. 
Desventajas
  • La configuración de Spring es compleja ya que para cada servicio que se tenga se ha configurarlo en un XML de configuración. Aunque hay otras formas de configuración de Spring aparte del XML puro: programando por medio de la API, mediante un estándar JSR y con un mínimo XML y anotaciones.
  • No se puede evaluar si un objeto ha sido bien inyectado más que en tiempo de ejecución. 
  • El contenedor de Spring no es ligero (si se usan todos los módulos disponibles), no es recomendable su uso en aplicaciones de tiempo real o en aplicaciones para móviles.

Comparativa Struts-Spring

Separación de capas
Spring ofrece una división limpia entre Controllers, Models (JavaBeans) y Views. La capa Web de Spring es una pequeña parte en lo alto de la capa de negocio de Spring, lo cual parece una buena práctica. Struts deja a libre elección la implementación de los objetos de negocio, mientras que Spring ofrece un framework para todas las capas de la aplicación. No obstante con Struts es posible también hacer esta separación.

Flexibilidad
Spring es muy flexible, ya que implementa toda su estructura mediante interfaces no como Struts que obliga a heredar de clases concretas tanto en sus Actions como en sus Forms. Además, todas las partes del framework son configurables via pluggin en la interface, aunque Spring provee clases concretas como opción de implementación.

Spring MVC provee interceptores también como controllers que permiten factorizar el comportamiento común en el manejo de múltiples requests.

Presentación
Spring no obliga a utilizar JSP, permite utilizar XLST, Velocity o implementar un lenguaje propio lenguaje para integrarlo en la View de la aplicación.

Testeos
Los controllers de Spring se configuran mediante IoC como los demás objetos, lo cual los hace fácilmente testeables e integrables con otros objetos que estén en el contexto de Spring, y por tanto sean manejables por éste.

Las partes de Spring son más fácilmente testeables que las de Struts, debido a que evita la herencia de una clase de manera forzosa y una dependencia directa en el controller del servlet que despacha las peticiones.

Con Spring se tiene más cantidad de código testeable, las validaciones no dependen de la Api de servlets.


Conclusiones    

Una vez visto el análisis, el utilizar un framework u otro es decisión vuestra, dependiendo del proyecto a realizar. Cabe destacar que existen otros frameworks muy interesantes, pero en este análisis se han reflejado los que más conocemos en los proyectos que hemos llevado a cabo.

Artículos relacionados


Comments

No response to “ Frameworks Modelo Vista Controlador (MVC) ”
Post a Comment | Enviar comentarios ( Atom )

Publicar un comentario en la entrada

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.