Posts Tagged ‘MVC

02
Oct
13

MVC – Model View Controller (Patrón de diseño)

MVC es un patrón de diseño, que se ubica en la categoría de patrones arquitectónicos; este patrón se especifica bajo la proposición de dividir la aplicación en tres tipos de elementos, el modelo, las vistas (GUIs) y controladores. Estos elementos están separados por límites abstractos lo que convierte a MVC más paradigma que patrón, ya que la comunicación entre sí a través de esos límites no se especifica más. La manera en que los elementos dentro de MVC se comunican difieren y no sólo lo diferencia el tipo de aplicación que se está describiendo (Desktop, WEB),  sino también por la parte de la aplicación que actualmente está mirando (frontend, backend).

MVC

MVC

Sin embargo, en el centro de cada arquitectura MVC se encuentran presentaciones separadas lo que declara una división especifica entre los objetos de dominio que modelan nuestra percepción del mundo real (modelo de objetos), y la presentación de dichos objetos que son los elementos de la GUI que vemos en la pantalla (objetos de vista).

MVC define la separación de estos tres tipos de elementos:

  1. Modelo: elementos (objetos) que contienen los datos y definen la lógica para manipular dichos datos. A menudo los objetos tienen una naturaleza reutilizable, distribuida, persistente y portátil para una variedad de plataformas.
  2. Vista: hace referencia a los elementos que representan algo visible en la interfaz de usuario, por ejemplo, un panel o botones. Con el fin de mostrar datos de los objetos de modelo es posible que desee crear sus propios objetos personalizados, como un gráfico, por ejemplo.
  3. Controlador: actúa como un mediador entre los objetos del modelo y la vista . Un objeto Controller comunica datos de ida y vuelta entre los objetos del modelo y de la vista. Un controlador también realiza todas las tareas específicas de la aplicación, tales como la entrada del usuario o la carga de procesamiento de datos de configuración. Por lo general un se puede ver un controlador por aplicación o ventana, en muchas aplicaciones, el controlador está estrechamente acoplado a la vista. Dado que los controladores son específicos de aplicaciones por lo general es muy difícil encontrar reutilización en otras aplicaciones.

Diseño de una aplicación estrictamente de acuerdo con MVC no es siempre recomendable. Si está diseñando un programa intensivo de gráficos, probablemente tendremos muy pocas vistas y clases de modelo mucho más de lo que sugiere MVC. y al programar una aplicación muy simple es común combinar el controlador con las clases de vista. por otro lado el paradigma MVC no es necesariamente específico para lenguajes de programación orientados a objetos. Por ejemplo, una aplicación escrita en PHP no siendo orientada a objetos, también puede seguir los principios del patrón Modelo Vista Controlador utilizando sistemas de plantillas o marcos MVC diseñado para PHP.

El campo de aplicación de este patrón es bastante amplio casi se puede utilizar en cada aplicación. por supuesto dependiendo de la aplicación puede que algunas clases deben acoplarse a otras más que en otras aplicaciones, sin embargo, en general, siempre es una buena idea estructurar la aplicación en orden a MVC.

El patrón MVC en su implementación embebe diferentes patrones dependiendo de la  naturaleza de la aplicación que se está diseñando. Es común encontrar cosas como Intercepting Filters, View Helpers, Composite Views, Front Controllers, Value Objects, Session facades, Business Delegates y Data Access Objects que son utilizados por el patrón de arquitectura MVC, dentro de las cuales podemos resaltar:

Observer: este patrón es usado entre el Modelo y la Vista. Cuando los datos que están almacenados en los objetos del modelo sufren cambios, los objetos de la vista tienen que ser notificados y/o actualizados con respecto a la información con los cambios más reciente. Con el fin de mantener el acoplamiento entre los componentes Modelo/Vista y también debido al hecho de no tener varias instancias de objetos Vistas, el patrón Observer es el candidato ideal para lograr esto.

Estrategy: frecuente mente se implementa a nivel de modelo. El patrón DAO (Data Acces Object) es una forma del patrón de Estrategy que es utilizado  sobre todo por el modelo para acceder a diferentes formas de fuentes de datos. Por ejemplo, una base de datos MySQL/PostgreSQL, o archivos XML  almacenados en el disco.

Composite: utilizado por la Vista. No puede existir diferentes tipos de vistas dentro de un sistema diseñado de acuerdo con MVC, y alineandose a la finalidad de que todas las implementaciones sean compuestas y cambiadas a petición en tiempo de ejecución, se utiliza el patrón de Composite.

EJEMPLO DEL PATRÓN MVC EN JSP 

Ejemplo MVC en JSP

Ejemplo MVC en JSP

Referencias

Applications Programming in Smalltalk-80(TM)

Modelo Vista Controlador[Wikipedia]

The Ohio State University Software Development in Java Course 2009[Lecture 23]

Seminar Software Entwurf – Leif Singer

Designing Enterprise Applications with the J2EE Platform

Pattern Concepts – Oracle

16
Sep
13

Patrones Arquitectónicos

Los patrones arquitectónicos se utilizan para expresar una estructura de organización base o esquema para un  software. Proporcionando un conjunto de sub-sistemas predefinidos, especificando sus responsabilidades, reglas, directrices que determinan la organización, comunicación, interacción y relaciones entre ellos.

Los patrones arquitectónicos heredan mucha de la terminología y conceptos de patrones de diseño, pero se centran en proporcionar modelos y métodos re-utilizables específicamente  para la arquitectura general de los sistemas de información. En otras palabras quiere decir que a diferencia de los patrones de diseño estas son plantillas incompletas y no se pueden aplicar directamente al código con modificaciones meramente contextuales. Los patrones arquitectónicos a su vez se salen del código puro de la aplicación y suben e incluyen software, hardware, redes, inclusos las personas.

Dentro de los patrones arquitectónicos podemos encontrar:

  • Modelo Vista Controlador: es uno de los modelos más antiguos (Smalltalk-80)  y por lo tanto se convirtió en uno de los patrones fundamentales para el desarrollo de software. MVC a grandes trazos, separa las preocupaciones con respecto a los datos (modelo) y la interfaz de usuario (vista/GUI), permitiendo modificaciones independientes en cada una  las partes sin afectar la otra, o sea, para que los cambios realizados en la interfaz de usuario (GUI) no afectan el manejo de datos, y los datos pueden ser reorganizados sin cambiar la interfaz de usuario.
  • Inyección de Dependencias: es un patrón que a pesar de ser relativamente nuevo es muy complejo. La utilización de inyección de dependencia en un proyecto es tan incidente, que puede modificar en grandes proporciones la arquitectura, de modo que se hace prudente una planificación a futuro sobre la utilización de este patrón. Este patrón puede dar la impresión de ir un poco “al revés”, porque el mismo, se trata de una aplicación de la “Inversión de Control – IoC”, concepto que hace exactamente eso, se invierte el flujo de control. El nombre de “la inyección de dependencia” en realidad se presta a confusión, ya que el modelo permite que se inyecte no dependencias en sí, sino en su lugar, la información para satisfacerlas la relación a las dependencias.
  • Arquitectura dirigida por eventos (Event-driven architecture o EDA): es un patrón de arquitectura software que para orquestar su comportamiento se centra en torno a la producción, detección, consumo y respuestas ante “eventos”. Teniendo en cuenta que un evento es: cualquier ocurrencia identificable que tiene un significado para el hardware o el software del sistema, en otras palabras, cualquier cambio de estado significante para el sistema. Y a su vez este cambio de estado puede ser conocido por otras aplicaciones en la arquitectura, o sea, que cada evento se propaga de manera inmediata a otras partes del sistema en la medida que sea necesario.
  • Arquitectura orientada a servicios: La ‘Arquitectura Orientada a Servicios de cliente’ (Service Oriented Architecture), es un concepto de arquitectura de software donde el software consta de una composición de servicios, prestaciones y reglas, y son los requisitos del negocio los que dictaminan la manera en la que estas se ínter-relaciona. Esta diseñado para que el sistema sea altamente escalable y flexible a nuevos requerimientos.

Referencias

http://www.omg.org/soa/Uploaded%20Docs/EDA/bda2-2-06cc.pdf

http://searchsoa.techtarget.com/definition/event-driven-architecture

http://download.boulder.ibm.com/ibmdl/pub/software/dw/webservices/ws-soa-whitepaper.pdf

http://download.microsoft.com/download/e/9/d/e9d163db-5c96-46bc-9263-aac62fc38831/Service%20Oriented%20Architecture.pdf




I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 348 seguidores

Redes Sociales y Archivos

Entradas

agosto 2017
L M X J V S D
« Abr    
 123456
78910111213
14151617181920
21222324252627
28293031  

IngenioDS en twiter


A %d blogueros les gusta esto: