INGENIERIA DE SOFTWARE
IMPLEMENTACIÓN DE UN SISTEMA UTILIZANDO MODELO VISTA
CONTROLADOR
MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76 durante su
visita a Xerox Parc en los años 70 y, seguidamente, en los años 80, Jim Althoff y otros
implementaron una versión de MVC para la biblioteca de clases de Smalltalk-80. Sólo más
tarde, en 1988, MVC se expresó como un concepto general en un artículo sobre Smalltalk-
80.
Se definía como "el módulo que se ocupa de la entrada" (de forma similar a como la vista
"se ocupa de la salida"). Esta definición no tiene cabida en las aplicaciones modernas en
las que esta funcionalidad es asumida por una combinación de la 'vista' y algún framework
moderno para desarrollo. El 'controlador', en las aplicaciones modernas de la década de
2000, es un módulo o una sección intermedia de código, que hace de intermediario de la
comunicación entre el 'modelo' y la 'vista', y unifica la validación (utilizando llamadas
directas o el "observer" para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo).
Algunos aspectos del patrón MVC han evolucionado dando lugar a ciertas variantes del
concepto original, ya que "'las partes del MVC clásico realmente no tienen sentido para los
clientes actuales".
Descripción Del Patrón
De manera genérica, los componentes de MVC se podrían definir como sigue:
El Modelo: Es la representación de la información con la cual el sistema opera, por
lo tanto gestiona todos los accesos a dicha información, tanto consultas como
actualizaciones, implementando también los privilegios de acceso que se hayan
descrito en las especificaciones de la aplicación (lógica de negocio). Envía a la
'vista' aquella parte de la información que en cada momento se le solicita para que
sea mostrada (típicamente a un usuario). Las peticiones de acceso o manipulación
de información llegan al 'modelo' a través del 'controlador'.
El Controlador: Responde a eventos (usualmente acciones del usuario) e invoca
peticiones al 'modelo' cuando se hace alguna solicitud sobre la información (por
ejemplo, editar un documento o un registro en una base de datos). También puede
enviar comandos a su 'vista' asociada si se solicita un cambio en la forma en que se
presenta de 'modelo' (por ejemplo, desplazamiento o scroll por un documento o
por los diferentes registros de una base de datos), por tanto se podría decir que el
'controlador' hace de intermediario entre la 'vista' y el 'modelo' (véase
Middleware).
La Vista: Presenta el 'modelo' (información y lógica de negocio) en un formato
adecuado para interactuar (usualmente la interfaz de usuario) por tanto requiere
de dicho 'modelo' la información que debe representar como salida.
INGENIERIA DE SOFTWARE
Interacción De Los Componentes
Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo de control que
se sigue generalmente es el siguiente:
1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el
usuario pulsa un botón, enlace, etc.)
2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación
de la acción solicitada por el usuario. El controlador gestiona el evento que llega,
frecuentemente a través de un gestor de eventos (handler o callback.)
3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de
forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador
actualiza el carro de la compra del usuario). Los controladores complejos están a
menudo estructurados usando un patrón de comando que encapsula las acciones y
simplifica su extensión.
4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de
usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada
para el usuario donde se reflejan los cambios en el modelo (por ejemplo, produce
un listado del contenido del carro de la compra). El modelo no debe tener
conocimiento directo sobre la vista. Sin embargo, se podría utilizar el patrón
Observador para proveer cierta dirección entre el modelo y la vista, permitiendo al
modelo notificar a los interesados de cualquier cambio. Un objeto vista puede
registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí
mismo sigue sin saber nada de la vista. Este uso del patrón Observador no es
posible en las aplicaciones Web puesto que las clases de la vista están
desconectadas del modelo y del controlador. En general el controlador no pasa
objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para
que se actualice. Nota: En algunas implementaciones la vista no tiene acceso
directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.
Por ejemplo en el MVC usado por Apple en su framework Cocoa. Suele citarse
como Modelo-Interface-Control, una variación del MVC más puro
5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el
ciclo nuevamente....
PHP
PHP es un lenguaje de programación de uso general de código del lado del servidor
originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los
primeros lenguajes de programación del lado del servidor que se podían incorporar
directamente en el documento HTML en lugar de llamar a un archivo externo que procese
los datos. El código es interpretado por un servidor web con un módulo de procesador de
INGENIERIA DE SOFTWARE
PHP que genera la página Web resultante. PHP ha evolucionado por lo que ahora incluye
también una interfaz de línea de comandos que puede ser usada en aplicaciones gráficas
independientes. Puede ser usado en la mayoría de los servidores web al igual que en casi
todos los sistemas operativos y plataformas sin ningún costo.
Fue creado originalmente por Rasmus Lerdorf en 1995. Actualmente el lenguaje sigue
siendo desarrollado con nuevas funciones por el grupo PHP.Este lenguaje forma parte del
software libre publicado bajo la licencia PHP, que es incompatible con la Licencia Pública
General de GNU debido a las restricciones del uso del término PHP.
Características De PHP
Orientado al desarrollo de aplicaciones web dinámicas con acceso a información
almacenada en una base de datos.
Es considerado un lenguaje fácil de aprender, ya que en su desarrollo se
simplificaron distintas especificaciones, como es el caso de la definición de las
variables primitivas, ejemplo que se hace evidente en el uso de php arrays.
El código fuente escrito en PHP es invisible al navegador web y al cliente, ya que es
el servidor el que se encarga de ejecutar el código y enviar su resultado HTML al
navegador. Esto hace que la programación en PHP sea segura y confiable.
Capacidad de conexión con la mayoría de los motores de base de datos que se
utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL.
Capacidad de expandir su potencial utilizando módulos (llamados ext's o
extensiones).
Posee una amplia documentación en su sitio web oficial, entre la cual se destaca
que todas las funciones del sistema están explicadas y ejemplificadas en un único
archivo de ayuda.
Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
Permite aplicar técnicas de programación orientada a objetos. Incluso aplicaciones
como Zend framework, empresa que desarrolla PHP, están totalmente
desarrolladas mediante esta metodología.
No requiere definición de tipos de variables aunque sus variables se pueden
evaluar también por el tipo que estén manejando en tiempo de ejecución.
Tiene manejo de excepciones (desde PHP5).
Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la
hora de programar, aún haciéndolo, el programador puede aplicar en su trabajo
cualquier técnica de programación o de desarrollo que le permita escribir código
ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que
en PHP se han hecho del patrón de diseño Modelo Vista Controlador (MVC), que
permiten separar el tratamiento y acceso a los datos, la lógica de control y la
interfaz de usuario en tres componentes independientes.
INGENIERIA DE SOFTWARE
Debido a su flexibilidad ha tenido una gran acogida como lenguaje base para las
aplicaciones WEB de manejo de contenido, y es su uso principal.
Mysql
MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con
más de seis millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria
de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009—
desarrolla MySQL como software libre en un esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia,
pero para aquellas empresas que quieran incorporarlo en productos privativos deben
comprar a la empresa una licencia específica que les permita este uso. Está desarrollado
en su mayor parte en ANSI C.
Al contrario de proyectos como Apache, donde el software es desarrollado por una
comunidad pública y los derechos de autor del código están en poder del autor individual,
MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte
del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente
mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y
servicios. Para sus operaciones contratan trabajadores alrededor del mundo que
colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael
Widenius.
Características Adicionales
Usa GNU Automake, Autoconf, y Libtool para portabilidad
Uso de multihilos mediante hilos del kernel.
Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice
Tablas hash en memoria temporales
El código MySQL se prueba con Purify (un detector de memoria perdida comercial)
así como con Valgrind, una herramienta GPL.
Completo soporte para operadores y funciones en cláusulas select y where.
Completo soporte para cláusulas group by y order by, soporte de funciones de
agrupación
Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante
verificación basada en el host y el tráfico de contraseñas está cifrado al conectarse
a un servidor.
Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50
millones de registros.
Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice
puede consistir desde 1 hasta 16 columnas o partes de columnas. El máximo ancho
de límite son 1000 bytes (500 antes de MySQL 4.1.2).
INGENIERIA DE SOFTWARE
Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier
plataforma. En sistemas Windows se pueden conectar usando named pipes y en
sistemas Unix usando ficheros socket Unix.
En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando
memoria compartida.
MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con
el código fuente de la distribución de MySQL.
Aplicaciones
MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas
(Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de
errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a
menudo aparece en combinación con MySQL.
MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no
transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta
concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la
modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace
a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar
MySQL, es importante monitorizar de antemano el rendimiento para detectar y corregir
errores tanto de SQL como de programación.