Está en la página 1de 5

Qu es MVC

Te explicamos de manera general MVC, Model - View Controller o Modelo - Vista - Controlador un paradigma de la programacin que propone separar el cdigo de los programas por sus diferentes responsabilidades.
En lneas generales, MVC es una propuesta de diseo de software utilizada para implementar sistemas donde se requiere el uso de interfaces de usuario. Surge de la necesidad de crear software ms robusto con un ciclo de vida ms adecuado, donde se potencie la facilidad de mantenimiento, reutilizacin del cdigo y la separacin de conceptos.

Su fundamento es la separacin del cdigo en tres capas diferentes, acotadas por su responsabilidad, en lo que se llamanModelos, Vistas y Controladores, o lo que es lo mismo, Model, Views & Controllers, si lo prefieres en ingls. En este artculo estudiaremos con detalle estos conceptos, as como las ventajas de ponerlos en marcha cuando desarrollamos. MVC es un "invento" que ya tiene varias dcadas y fue presentado incluso antes de la aparicin de la Web. No obstante, en los ltimos aos ha ganado mucha fuerza y seguidores gracias a la aparicin de numerosos frameworks de desarrollo web que utilizan el patrn MVC como modelo para la arquitectura de las aplicaciones web.
Nota: Como ya hemos mencionado, MVC es til para cualquier desarrollo en el que intervengan
interfaces de usuario. Sin embargo, a lo largo de este artculo explicaremos el paradigma bajo el prisma del desarrollo web.

Por qu MVC
La rama de la ingeniera del software se preocupa por crear procesos que aseguren calidad en los programas que se realizan y esa calidad atiende a diversos parmetros que son deseables para todo desarrollo, como la estructuracin de los programas o reutilizacin del cdigo, lo que debe influir positivamente en la facilidad de desarrollo y el mantenimiento.

Los ingenieros del software se dedican a estudiar de qu manera se pueden mejorar los procesos de creacin de software y una de las soluciones a las que han llegado es la arquitectura basada en capas que separan el cdigo en funcin de sus responsabilidades o conceptos. Por tanto, cuando estudiamos MVC lo primero que tenemos que saber es que est ah para ayudarnos a crear aplicaciones con mayor calidad. Quizs, para que a todos nos queden claras las ventajas del MVC podamos echar mano de unos cuantos ejemplos: 1. Aunque no tenga nada que ver, comencemos con algo tan sencillo como son el HTML y las CSS. Al principio, en el HTML se mezclaba tanto el contenido como la presentacin. Es decir, en el propio HTML tenemos etiquetas como "font" que sirven para definir las caractersticas de una fuente, o atributos como "bgcolor" que definen el color de un fondo. El resultado es que tanto el contenido como la presentacin estaban juntos y si algn da pretendamos cambiar la forma con la que se mostraba una pgina, estbamos obligados a cambiar cada uno de los archivos HTML que componen una web, tocando todas y cada una de las etiquetas que hay en el documento. Con el tiempo se observ que eso no era prctico y se cre el lenguaje CSS, en el que se separ la responsabilidad de aplicar el formatode una web. 2. Al escribir programas en lenguajes como PHP, cualquiera de nosotros comienza mezclando tanto el cdigo PHP como el cdigo HTML (e incluso el Javascript) en el mismo archivo. Esto produce lo que se denomina el "Cdigo Espagueti". Si algn da pretendemos cambiar el modo en cmo queremos que se muestre el contenido, estamos obligados a repasar todas y cada una de las pginas que tiene nuestro proyecto. Sera mucho ms til que el HTML estuviera separado del PHP. 3. Si queremos que en un equipo intervengan perfiles distintos de profesionales y trabajen de manera autnoma, como diseadores o programadores, ambos tienen que tocar los mismos archivos y el diseador se tiene necesariamente que relacionar con mucho cdigo en un lenguaje de programacin que puede no serle familiar, siendo que a ste quizs solo le interesan los bloques donde hay HTML. De nuevo, sera mucho ms fcil la separacin del cdigo.

4. Durante la manipulacin de datos en una aplicacin es posible que estemos accediendo a los mismos datos en lugares distintos. Por ejemplo, podemos acceder a los datos de un artculo desde la pgina donde se muestra ste, la pgina donde se listan los artculos de un manual o la pgina de backenddonde se administran los artculos de un sitio web. Si un da cambiamos los datos de los artculos (alteramos la tabla para aadir nuevos campos o cambiar los existentes porque las necesidades de nuestros artculos varan), estamos obligados a cambiar, pgina a pgina, todos los lugares donde se consuman datos de los artculos. Adems, si tenemos el cdigo de acceso a datos disperso por decenas de lugares, es posible que estemos repitiendo las mismas sentencias de acceso a esos datos y por tanto no estamos reutilizando cdigo. Quizs te hayas visto en alguna de esas situaciones en el pasado. Son solo son simples ejemplos, habiendo decenas de casos similares en los que resultara til aplicar una arquitectura como el MVC, con la que nos obliguemos a separar nuestro cdigo atendiendo a sus responsabilidades. Ahora que ya podemos tener una idea de las ventajas que nos puede aportar el MVC, analicemos las diversas partes o conceptos en los que debemos separar el cdigo de nuestras aplicaciones.

Modelos
Es la capa donde se trabaja con los datos, por tanto contendr mecanismos para acceder a la informacin y tambin para actualizar su estado. Los datos los tendremos habitualmente en una base de datos, por lo que en los modelos tendremos todas las funciones que accedern a las tablas y harn los correspondientesselects, updates, inserts, etc. No obstante, cabe mencionar que cuando se trabaja con MCV lo habitual tambin es utilizar otras libreras como PDO o Doctrine, que nos permiten trabajar con abstraccin de bases de datos y persistencia en objetos. Por ello, en vez de usar directamente sentencias SQL, que suelen depender del motor de base de datos con el que se est trabajando, se utiliza un dialecto de acceso a datos basado en clases y objetos, algo que se conoce como ORM.

Vistas
Las vistas, como su nombre nos hace entender, contienen el cdigo de nuestra aplicacin que va a producir la visualizacin de las interfaces de usuario, o sea, el cdigo que nos permitir renderizar los estados de nuestra aplicacin en HTML. En las vistas nada ms tenemos los cdigos HTML y PHP que nos permite mostrar la salida. En la vista generalmente trabajamos con los datos, sin embargo, no se realiza un acceso directo a stos. Las vistas requerirn los datos a los modelos y ellas se generar la salida, tal como nuestra aplicacin requiera.

Controladores
Contienen el cdigo de lo que se llama habitualmente como "lgica del negocio", ya que nos permiten implementar las operaciones tpicas que pueda requerir nuestra aplicacin, como editar un elemento, realizar una compra, una bsqueda de informacin, etc. En realidad es una capa que sirve de enlace entre las vistas y los modelos, respondiendo a los mecanismos que puedan requerirse para implementar las necesidades de nuestra aplicacin. Sin embargo, su responsabilidad no es manipular directamente datos, ni mostrar ningn tipo de salida, sino servir de enlace entre los modelos y las vistas para implementar las diversas necesidades del desarrollo.

Arquitectura de aplicaciones MVC


A continuacin encontrars un diagrama que te servir para entender un poco mejor cmo colaboran las distintas capas que componen la arquitectura de desarrollo de software en el patrn MVC.

En esta imagen hemos representado con flechas los modos de colaboracin entre los distintos elementos que formaran una aplicacin MVC, junto con el usuario. Como se puede ver, los controladores, con su lgica de negocio, hacen de puente entre los modelos y las vistas. Pero adems en algunos casos los modelos pueden enviar datos a las vistas. Veamos paso a paso cmo sera el flujo de trabajo caracterstico en un esquema MVC.

1. El usuario realiza una solicitud a nuestro sitio web. Generalmente estar desencadenada por acceder a una pgina de nuestro sitio. Esa solicitud le llega al controlador. 2. El controlador comunica tanto con modelos como con vistas. A los modelos les solicita datos o les manda realizar actualizaciones de los datos. A las vistas les solicita la salida correspondiente, una vez se hayan realizado las operaciones pertinentes segn la lgica del negocio. 3. Para producir la salida, en ocasiones las vistas pueden solicitar ms informacin a los modelos. En ocasiones, el controlador ser el responsable de solicitar todos los datos a los modelos y de enviarlos a las vistas, haciendo de puente entre unos y otros. Sera corriente tanto una cosa como la otra, todo depende de nuestra implementacin; por eso esa flecha la hemos coloreado de otro color. 4. Las vistas envan al usuario la salida. Aunque en ocasiones esa salida puede ir de vuelta al controlador y sera ste el que hace el envo al cliente, por eso he puesto la flecha en otro color. De momento eso es todo! Esperamos que este artculo haya podido aclarar los distintos conceptos relacionados con el MVC y aunque no hayamos visto una implementacin en cdigo, te sirva para poder investigar a partir de aqu. En DesarrolloWeb.com de momento podrs ver cmo trabajar con MVC en el Manual de Codeigniter y en nuestra plataforma para la formacin EscuelaIT podrs aprender con nosotros todo sobre este MVC y otros asuntos relacionados con la arquitectura del software en este curso de MVC y otras Tcnicas de desarrollo de aplicaciones web en PHP.

También podría gustarte