Blog Calendar

July 2010
Sun Mon Tue Wed Thu Fri Sat
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

Visitors Statistics

6
77
11329

MVC - El conocimiento nuevo de un patron viejo

Hace 4 años aproximadamente, estuve trabajando en una empresa donde nos capacitaron con C#.
En ese entonces Norberto Ortigoza fue nuestro sensei, esto me ayudo a cambiar mi paradigma sobre el desarrollo de software, me mostro como programar adecuadamente[1] y mediante diversos ejemplos pude mejorar mi estilo de programación.
Así fue como conocí el patrón de diseño MVC (Model View Controler), sin embargo a pesar de haber puesto atención, de recibir ejemplos para poder entenderlo y ponerlo en practica, resulta que me faltaron cosas por aprender del MVC.
Hoy quiero compartir la información que por fortuna he recibido nuevamente por parte del buen Norberto.
¿Para que nos sirve conocer sobre patrones de diseño de software?
Los patrones de diseño son templates o una solución general reutilizable en diferentes problemas, estos representan la búsqueda de soluciones a problemas comunes en el desarrollo de software[2]. Por esta razón, el conocer diversos patrones de diseño nos permite atacar facilmente un problema y acelera el desarrollo de software.
¿Que es el MVC (Model View Controler)?
Es un patrón de arquitectura de software que permite separar la complejidad de un sistema en tres componentes elementales (Modelo, Vista y Controlador), de esta manera es posible separar el negocio, la vista y el acceso a datos de manera lógica y/o física facilitando la extensibilidad y desacoplamiento.
Existen muchas definiciones en la red al respecto y muchos ejemplos, sin embargo NO TODOS los artículos comprenden CORRECTAMENTE la implementación del patrón. Una referencia que goza del prestigio y reconocimiento por parte de programadores talentosos es la de Martin Fowler[3], quién ha generado un ensayo[4] muy interesante al respecto.
¿Que es lo nuevo que aprendí del MVC?
OK, digamos que ya leimos las definiciones y vimos algunos ejemplos en la red del MVC. Resulta que lo queremos implementar en nuestro desarrollo y hacemos un proyecto separando la vista del negocio y también separamos el acceso a datos, algo así como lo que muestra la siguiente imagen:

mvc_error

Sin embargo, en la imagen anterior existe un error, dicho error es la razón del porque algunos ejemplos que encontramos en internet son incorrectos. La imagen anterior muestra una dependencia en dirección del acceso a datos hacia la vista. La manera correcta de expresar el patrón de diseño en un diagrama sería de la siguiente manera:

mvc

En esta imagen el desarrollo es en función del negocio, osea, todo depende de las reglas de negocio y si algo cambia en el negocio, entonces esto puede afectar al modelado de datos o bien a la vista. Pero si algo cambia en la vista, no debe afectar a ningún otro lado.
Esta es la razón por la que se separa en capas, se separa la vista (Front) del negocio (Business) comunicando a ambas capas por medio de un controlador (Controller), este último es el encargado de separar las otras dos capas y aislar por completo las responsabilidades.
Lo importante de todo patrón es el saber cual es la finalidad que tiene el implementarlo en el sistema, de esta manera podemos saber cuando usarlo y como implementarlo adecuadamente.
[1] http://es.iver.com.mx/index.php/blog/show/Que_de_cosas_se_aprenden.html
[2] http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
[3] http://en.wikipedia.org/wiki/Martin_Fowler
[4] http://martinfowler.com/eaaDev/uiArchs.html
Trackback URI: http://es.iver.com.mx/index.php?trackback/140

#1 Re: MVC - El conocimiento nuevo de un patron viejo

Guadalupe, <l_u_p_i_s_s(at)hotmaildotcom> / 7 July, 12:16pm  
avatar

Hola. Actualmente me estoy empapando de la nueva arquitectura MVC, mas no se si me puedas ayudar facilitandome ejemplos donde expliquen este modelo desde Cero. Saludos.

[ Reply (0) ]

#2 Re: MVC - El conocimiento nuevo de un patron viejo

Iver, <> / 7 July, 12:45pm  
avatar

Hola Lupita,
Creo que lo que buscas es un ejemplo práctico, realmente no he encontrado alguno que ejemplifique "limpiamente" el patrón, sin embargo si quieres ver código que utiliza el patrón MVC, puedes ver los desarrollos de Jaws (CMS) y de Joomla, estos son en PHP. Existen muchos frameworks que facilitan el desarrollo con MVC, en C# también se encuentran MonoRail, Maverick.NET, entre otros.
Para entender mejor el framework te recomiendo leas el artículo de Martin Fowler:
http://martinfowler.com/eaaDev/uiArchs.html
Saludos.

[ Reply (0) ]

#2.1 Re: Re: MVC - El conocimiento nuevo de un patron viejo

Alejandro, <aulatec(at)gmaildotcom> / 28 July, 1:27pm  
avatar

Hola: Ya para este tiempo, pudiste crear alguna aplicación con la implementación del Patrón MVC de forma correcta? Si es así, favor pasar info a mi correo, gracias.

[ Reply (0) ]

#3 Re: MVC - El conocimiento nuevo de un patron viejo

Iván Jaimes, <ivandotiver(at)gmaildotcom> / 17 October, 9:24am  
avatar

De hecho sigo en busca de generar una aplicación que realice correctamente la implementación del patrón. Sin embargo hace tiempo generé una aplicación con mono. Puedes verla en http://es.iver.com.mx/index.php/blog/show/65.html
Saludos.

[ Reply (0) ]

Leave a Comment

Write the captcha code you are seeing.

Comment XML feeds: RSS | Atom