Modelo de vista controlador

Objetivo

El objetivo del patrón MVC es desacoplar la presentación de la información (vista) de su representación (modelo), para así reducir la complejidad en el diseño arquitectónico (de IU) e incrementar la flexibilidad y mantenibilidad del código. Desde un punto de vista muy personal (DMI), el patrón MVC es lo que le trae orden al caos, estructura al espagueti, arquitectura a la anarquía en los aspectos relacionados a la implementación de interfaz de usuario

El patrón MVC (Modelo, Vista, Controlador), es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz que ve el usuario de la logica del negocio en tres componentes distintos. Es más frecuente en aplicaciones Web que en aplicaciones de escritorio, sin embargo es aplicable tambien a este, sin ningun problema, Java ya contaba hace rato con Observer y Observable, herramientas que nos ayudan a la interacción entre la interfaz y el modelo, sin embargo, el ejemplo que dejamos a continuación no hace uso de estas herramientas.

La descripción del patrón MVC es: Vista (View): Representa la interfaz de usuario y todas las herramientas con las cuales el usario hace uso del programa. Controlador (Controller): Este componente es el que responde a la interacción (eventos) que hace el usuario en la interfaz y realiza las peticiones al modelo para pasar estos a la vista. Aún no está del todo claro. . pero con el siguiente ejemplo. la representación de todo el sistema incluido la interacción con una base de datos. lo comprenderemos mejor. si es que el programa asi lo requiere. Modelo (Model): Es donde esta toda la lógica del negocio.

La Vista se encarga de transformar los datos en información visualmente entendible para el usuario. le regresa al Controlador la información resultante de sus operaciones. Entonces el Controlador decide a quién debe delegar la tarea y es aquí donde el Modelo empieza su trabajo.Ciclo de vida de MVC El ciclo de vida de MVC es normalmente representado por las 3 capas presentadas anteriormente y el cliente (también conocido como usuario). el cual a su vez redirige a laVista. Finalmente. El siguiente diagrama representa el ciclo de vida de manera sencilla: El primer paso en el ciclo de vida empieza cuando el usuario hace una solicitud al controlador con información sobre lo que el usuario desea realizar. la representación gráfica es transmitida de regreso al Controlador y éste se encarga de transmitírsela al usuario. el Modelo se encarga de realizar operaciones sobre la información que maneja para cumplir con lo que le solicita el Controlador. En esta etapa. Una vez que termina su labor. . El ciclo entero puede empezar nuevamente si el usuario así lo requiere.

 La curva de aprendizaje del patrón de diseño es más alta que usando otros modelos más sencillos.Ventajas y Desventajas de MVC Las principales ventajas de hacer uso del patrón MVC son:        La separación del Modelo de la Vista. Crea independencia de funcionamiento. así que se decidió seguir el esquema que plantea MVC sin hacer uso de frameworks externos. separar los datos de la representación visual de los mismos. Facilita el mantenimiento en caso de errores. MVC en uso Actualmente existen muchos frameworks disponibles para el desarrollo de aplicaciones MVC. Las desventajas de seguir el planteamiento de MVC son: La separación de conceptos en capas agrega complejidad al sistema.   . sin embargo su uso requiere de una comprensión completa de su funcionamiento haciéndolas merecedoras de temas de tesis completas. Ofrece maneras más sencillas para probar el correcto funcionamiento del sistema. sin embargo se tomó ladecisión usando principalmente los puntos mencionados anteriormente ya que en términos generales la balanza se inclina a favor del MVC en vez de en su contra. Como anteriormente fue mencionado. Es mucho más sencillo agregar múltiples representaciones de los mismos datos o información. En este caso se deseaba obtener resultados rápidos sin involucrar más complejidad que la que el tema propio requiere. Permite el escalamiento de la aplicación en caso de ser requerido. es decir. Cabe mencionar que la comparación de ventajas y desventajas de MVC puede ser un tema muy subjetivo y se puede prestar como tema de debate. el “Sistema Asistente para la Generación de Horarios de Cursos” es una aplicación Web y la plataforma de desarrollo elegida fue Java (de Sun Microsystems) ya que es un lenguaje de programación sumamente maduro y robusto. Facilita agregar nuevos tipos de datos según sea requerido por la aplicación ya que son independientes del funcionamiento de las otras capas. no solo para aplicaciones de escritorio. La cantidad de archivos a mantener y desarrollar se incrementa considerablemente. sino para aplicaciones que corren sobre Internet usando estándares mundiales.

etc. etc. . etc. reglas del ajedrez.Para desarrollar aplicaciones Java para Internet es necesario hacer uso de la tecnología Java Server Pages. oyentes de eventos. También puede contener algoritmos Juego ajedrez: control de eventos. las cuales permiten incrustar código que generen páginas con contenido dinámico cuando cualquier cliente Web solicite información del servidor. Los JSPs pueden ser entendidos como una abstracción de alto nivel de un Servlet ya que para poder ser entendidas por el servidor Web es necesario que sean compiladas en forma En MVC cada elemento tiene tres partes: • Un modelo que contiene los datos y la funcionalidad de la aplicación Juego ajedrez: estado del tablero. • Un controlador que determina que modificaciones hay que hacer en el modelo cuando se interacciona con la vista. algoritmo para pensar las jugadas. • Una vista que gestiona como se muestran esos datos Juego ajedrez: ventana que dibuja el tablero.

controles u otro tipo de tecnología que permita procesar y dar formato a los datos de los usuarios. . una aplicación comercial. un sitio Web permite al cliente ver productos y realizar pedidos.NET. Las interfaces de usuario se implementan utilizando formularios de Windows Forms. así como adquirir y validar los datos entrantes procedentes de éstos. y una aplicación basada en Windows® permite a los vendedores escribir los datos de los pedidos de los clientes. La mayor parte de las soluciones necesitan ofrecer al usuario un modo de interactuar con la aplicación. páginas ASP. Por ejemplo.Componentes de un Modelo Vista Controlador Componentes de interfaz de usuario.

el flujo del proceso y la lógica de administración de estado no se incluye en el código de los componentes de interfaz de usuario. cuando el usuario realiza una compra. en una aplicación comercial. por lo que varias interfaces (Web. validar la información de la tarjeta de crédito. éstos se pueden utilizar para ejecutar un proceso de negocios.) podrán utilizar el mismo “motor” de interacción básica. etc. los que se deben organizar y ejecutar en un determinado orden. el pago y el envío a la aplicación comercial. De este modo. la interacción sigue un proceso predecible de recolección de datos por parte del usuario. Los flujos de trabajo de negocio definen y coordinan los procesos de negocio de varios pasos de ejecución larga y se pueden implementar utilizando herramientas de administración de procesos de negocios. Para facilitar la sincronización y organización de las interacciones con el usuario. Windows. se podría implementar un procedimiento que permita ver los datos del producto. la interacción del usuario con el sistema se realiza de acuerdo a un proceso predecible. . Una vez que el proceso de interfaz ha recopilado los datos necesarios. Móvil. Componentes de negocio. el usuario puede seleccionar de una lista de categorías de productos disponibles y. puede comenzar el proceso de cobro del pago y preparación del envío. por último. Gran parte de los procesos de negocio implican la realización de varios pasos. por el cual éste proporciona los detalles de los productos que desea adquirir. la información para el envío. Por ejemplo. Por ejemplo. luego de enviar los detalles del producto. De este modo. procesar el pago de la misma y preparar el envío del producto.Componentes de proceso de interfaz. Por ejemplo. el sistema empresarial necesita calcular el valor total del pedido. resulta útil utilizar componentes de proceso de interfaz de usuario individuales. Del mismo modo. a continuación. a continuación los detalles de pago y. Flujos de negocio. elegir uno de los productos de la categoría seleccionada para ver los detalles correspondientes. como BizTalk Business Process Management u otras herramientas se encargan de automatizar flujos y procesos de negocio. En muchos casos.

formatos. Interfaces de servicios. el servicio de autorización de tarjetas de crédito debe exponer una interfaz de servicios que describa la funcionalidad que ofrece el servicio. así como insertar dicha información en la base de datos cuando un usuario realiza un pedido.Independientemente de si el proceso de negocios consta de un único paso o de un flujo de trabajo organizado. la aplicación requerirá probablemente el uso de componentes que implementen reglas de negocio y realicen tareas de negocio. Agentes de servicios. protocolos. los componentes de negocio de la aplicación comercial descrita anteriormente podría utilizar un agente de servicios para administrar la comunicación con el servicio de autorización de tarjetas de crédito y utilizar un segundo agente de servicios para controlar las conversaciones con el servicio de mensajería. entre otros) que requieren los clientes. Por ejemplo: la aplicación empresarial necesita recuperar los datos de los productos de una base de datos para mostrar al usuario los detalles de los mismos. Cuando un componente de negocio requiere el uso de la funcionalidad proporcionada por un servicio externo. Para exponer lógica de negocios como un servicio. Los agentes de servicios permiten aislar las particularidades de las llamadas a varios servicios desde la aplicación y pueden proporcionar servicios adicionales. Los componentes de negocio implementan la lógica de negocio de la aplicación. seguridad y excepciones. es necesario crear interfaces de servicios que soporten los contratos de comunicación (comunicación basada en mensajes. tal vez sea necesario hacer uso de componentes que administren la semántica de la comunicación con dicho servicio. así como la semántica de comunicación requerida para llamar al mismo. Por lo tanto. es razonable abstraer la lógica necesaria para obtener acceso a los datos (y la estructura como están estos almacenados) en una capa independiente de . Las interfaces de servicios también se denominan fachadas de negocios. como el mapeo del formato de los datos que expone el servicio al formato que requiere la aplicación. Por ejemplo. Componentes de acceso a datos. La mayoría de las aplicaciones y servicios necesitan obtener acceso al repositorio de datos en un momento determinado del proceso de negocios. Por ejemplo.

pedidos. La aplicación probablemente utilice también componentes para realizar la administración de excepciones. aunque también se pueden implementar utilizando clases personalizadas (patrón Data Transfer Object – DTO. Los datos se utilizan para representar entidades de negocio del mundo real. Las entidades de negocio que se utilizan de forma interna en la aplicación suelen ser estructuras de datos. Por ejemplo. como productos o pedidos. como DataSets de ADO. ya que de este modo se centraliza la funcionalidad de acceso a datos y se facilita la configuración y el mantenimiento de la misma. La mayoría de las aplicaciones requieren el paso de datos entre distintos componentes. o clientes. administración operacional y comunicaciones.componentes de acceso a datos. como productos. Entidades de negocio.NET. autorizar a los usuarios a que realicen tareas determinadas y comunicarse con otros servicios y aplicaciones. Verticales de seguridad. DataReader o secuencias XML. que representan entidades del mundo real necesarias para la aplicación. en la aplicación comercial es necesario pasar una lista de productos de los componentes de acceso a datos a los componentes de interfaz de usuario para que éste pueda visualizar dicha lista. .