Archivo de la categoría: Vista Controlador

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.

CodeIgniter: simplificando la programación en PHP

A la hora de desarrollar proyectos web de complejidad media nos enfrentamos a diversos problemas que pueden hacer que un proyecto que parecía interesante pase a ser un infierno de código.

Frecuentemente los escasos plazos, presupuestos ajustados y presiones por parte de los superiores (a menudo muy desconectados de la programación) hacen que los proyectos no tengan la calidad que deberían, y terminan siendo más un problema que un trabajo decente.

¿Cómo evitar los problemas de trabajar en un proyecto web de programación?

Algunos de los consejos son más que obvios: mantén una programación clara, investiga antes de comenzar, plantea una buena estructura de datos…

Sin embargo, aun cuando se es un programador pulcro y ordenado, finalmente deberás enfrentarte a la realidad: cuantas más líneas escribas, más errores cometerás.

¿Se pueden realizar trabajos de más calidad, programando menos? La respuesta es: Sí, utilizando un marco de trabajo adecuado (framework). Estos marcos son bibliotecas de código bien probadas, generalmente utilizando el Modelo Vista Controlador (puedes leer más acerca del Modelo Vista Controlador en Wikipedia o en este post de nuestro blog sobre MVC). Se utilizan para hacer de forma más rápida las tareas más repetitivas: creación de formularios, conexión a base de datos, paginación, etc.

Al estar ya todo hecho, simplemente hay que usarlo, se evitan los errores típicos de la programación tradicional que nos han sacado los colores en más de una ocasión (cualquiera que haya presentado un proyecto ante uno o varios clientes sabrá a lo que me refiero: un enlace erróneo, un error no manejado…)

Para quienes trabajan con PHP, encontrarán que hay una gran cantidad de estos frameworks que pretenden hacer la vida más fácil a los programadores. Pero ¡cuidado!, algunos harán que el proyecto se complique más. No tiene mucho sentido utilizar un framework para una web de cuatro páginas, a menos que sea como experimento…

Veamos a continuación un marco de trabajo en PHP que cumple unos requisitos muy definidos:

  • Mantiene un equilibrio correcto entre lo que ya está hecho y lo que debes programar. Un framework con muchas funciones es más fácil de usar, pero más lento y pesado.
  • Debe estar bien documentado. Te vendrá muy bien cuando estés empezando.
  • Debe ser ligero, configurable y sencillo.
Logo CodeIgniter

Logo de CodeIgniter

Un marco de trabajo que me ha sorprendido es CodeIgniter. Rápido, funcional y bien documentado. Creo que es ideal para comenzar a trabajar en proyectos de cierta complejidad.

Obviamente no es el único: ZendFramework, CakePHP, Kohana hacen seria competencia a CodeIgniter.

¿Por qué, entonces, nos decantamos por CodeIgniter?

Principalmente porque es el más rápido y el que más documentación tiene. Además te permite mantener una forma de programación más “clásica”, al no tener tantos módulos o librerías como otros que, en muchos casos no se utilizan.

De forma que podemos asegurar que CodeIgniter es muy adecuado para empezar a trabajar en un Modelo Vista Controlador. Tus proyectos de programación web ganarán en calidad, y serán más rentables.