Modelo Vista Controlador

Es inevitable comenzar una discusión entre programadores cuando se habla de lenguajes de programación. Ya no sólo que cada uno tiene sus preferencias personales, costumbres e ideas; finalmente se termina discutiendo acerca de Programación Web y Programación de Escritorio.

Como es lógico, cada uno tiene sus ventajas e inconvenientes. No obstante, la programación de escritorio siempre ha sido más “tradicional”. Programación por un lado, diseño de interfaz por otro…

Al analizar los lenguajes de programación web nos damos cuenta que, desde el mismo comienzo, las cosas son distintas. ¿Por qué?

De forma sencilla: el resultado tiene que ser HTML (hablando de forma general). Sin embargo, HTML no es un lenguaje de programación propiamente dicho, y los servidores no entienden HTML.

Debido a lo mencionado anteriormente, se hace necesario utilizar un lenguaje que sí entienda el servidor (léase ASP, JSP, PHP, Perl, Ruby, y un larguísimo etcétera). Esto conlleva una serie de inconvenientes, como la necesidad de aprender varios lenguajes de programación para conseguir un resultado (HTML + Lenguaje de servidor + JavaScript, habitualmente) o la imposibilidad de depurar de forma eficiente la aplicación, salvo probando el resultado (o la salida) de la misma.

Sin embargo, posiblemente el peor de todos esos inconvenientes es la excesiva tendencia a mezclar HTML con lenguaje de servidor.

Es decir, con muchísima frecuencia se ve esto (ejemplo en ASP):
<% while not rs.Eof %>
<tr>
<td>Nombre:</td>
<td><%= rs("Nombre") %></td>

</tr>
<% wend %>

Y es un serio problema… especialmente cuando quieres cambiar el diseño (en aplicaciones que deben ser reutilizadas frecuentemente), o cuando el diseñador/maquetador no conoce el lenguaje de programación utilizado.

¿Cómo solucionar, o al menos evitar en parte, este problema?

Bueno, cabe decir que es completamente imposible aislar por completo la presentación de la programación, por el simple hecho de que la presentación debe generarse desde el servidor.

Aunque hay soluciones como usar plantillas (la lógica no se crea mediante un lenguaje de programación, sino un “pseudolenguaje” de plantillas, lo que a fin de cuentas viene a ser lo mismo), actualmente se tiende a utilizar un sistema que aisla en diferentes capas la programación y el diseño: el Model Vista Controlador.

¿En qué consiste esta filosofía, denominada comúnmente MVC?

Pues bien, básicamente hay tres capas en la aplicación:

  • Modelo: capa que realiza todas las tareas de comunicación con la base de datos, como ejecución de consultas, generación de recordsets y tablas, etc.
  • Controlador: recibe las peticiones y decide qué se mostrará y cuándo. Si tenemos un área de “Productos” y otra de “Servicios”, cada una de ellas tendrá su controlador. Puede existir que un controlador rija todas las operaciones (por ejemplo “productos/ver”, “productos/listado”, “productos/borrar”).
  • Vista: al recibir la petición del controlador decide cómo se mostrará la información suministrada por el controlador. Es decir: la presentación del contenido.

¿Qué ventajas presenta este modelo?

Pues bien, al separar la presentación de la programación (o lógica de negocio), la aplicación es más fácil de modificar en el futuro (si intentas vender esto a tus superiores deberás decir que “la aplicación es más escalable” y “puede mantenerse mejor”); el resultado es más claro, y el reparto de tareas dentro del equipo de trabajo es más fácil; la depuración de la aplicación es más sencilla y, finalmente, puede utilizarse un marco de trabajo (o framework) bien testeado.

¿Presenta inconvenientes, o es todo tan bonito como dices?

Si decides utilizar un framework, evalúalo muy bien antes de comenzar, ya que su complejidad puede afectar (positiva o negativamente) al tiempo de desarrollo del proyecto.

Es necesario invertir tiempo en crear un modelo (si decides programarlo tú mismo) o leer la documentación y comprender lo que ya está hecho (si decides utilizar un framework ya creado).

No obstante, el mayor inconveniente puede ser el cambio de mentalidad de los distintos componentes del equipo, ya que se abandona la técnica tradicional de programación “pagina A -> pagina B -> pagina C”; muchos serán reacios a cambiar su forma de trabajar y posiblemente tendrán de su lado a los directivos, que no suelen querer “arriesgar” o “innovar” (salvo algunas afortunadas excepciones).

En resumen:

  • El Modelo Vista Controlador (MVC) separa la lógica de la aplicación y la presentación en varias capas.
  • Facilita la labor de todo el equipo: diseñadores gráficos, programadores, diseñadores de base de datos y.
  • Existen marcos de trabajo ya programados (según en lenguaje de programación hay más o menos posibilidades) que facilitarán el trabajo de los miembros del equipo de trabajo.

Acerca de Iván Argulo

Programador, Analista de Sistemas y Webmaster Perfil en Google+

Publicado el enero 20, 2009 en Aplicaciones web, Programación, Vista Controlador. Añade a favoritos el enlace permanente. 1 comentario.

  1. Gracias por esta información. Se encuentra clara y lo suficiente resumida para decir que el patrón de diseño MVC, ‘colabora’ con el equipo de trabajo de un proyecto de software, pues reduce en cierta medida la complejidad de desarrollo, haciendo al producto más escalable, extensible, y de fácil mantenimiento en el futoro.

    Hasta pronto y gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: