A través de los años he trabajado con las diferentes versiones de ASP que ha liberado Microsoft; cuando se introdujo .NET el cambio fue muy interesantes, sobre todo si tenias años de quejas en contra de las versiones anteriores y a partir de ahí, los cambios han ido cada vez más rápido. Cuando apareció MVC en el escenario, me pareció que todo lo que por tanto tiempo había usado para hacer sitios, ya no servía para nada. Sin embargo solo se trata de diferencias. Para poder entender las principales diferencia entre las WebForms y MVC, es necesario saber cómo funciona Internet.
Breve Historia
No debemos olvidar que la Internet surgió como un mecanismo simple que servía para presentar texto, y ofrecer una forma fácil de unir documentos. Hoy en día es un entorno tan rico que es necesario conocer varias tecnología para poder desarrollar en el. Ya que además del HTML, hay imágenes, JavaScript, Applets, CSS, Flash, Silverlight, y muchos otros tipos de tecnologías que se mezclan.
Lo más sorprendente es que por debajo de todo esto sigue existiendo el mismo protocolo: HTTP.
Como funciona?
Por exponerlo de la forma más simple posible les diré que es un protocolo entre un Cliente y un Servidor, donde se realizan solicitudes y respuestas. Un Cliente podría ser Chrome o Internet Explorer, y un servidor es una aplicación que “escucha” las solicitudes y sabe la forma correcta de responder, por ejemplo: IIS.
Toda esta maravilla no sería posible sin las direcciones IP, que son algo así como un número telefónico, que se le asigna a cada computadora que se conecta a Internet. Este número identifica nuestra computadora en la Red de Redes, para que la magia de identificar al cliente que solicito algo a un servidor, pueda recibir la respuesta correcta.
En el servidor existen varias posibles aplicaciones que podrían estar escuchando las solicitudes en diferentes puertos, que serian algo así como Teléfonos internos o extensiones, así el protocolo HTTP se encuentra por lo general en el puerto 80.
Toda la comunicación entre el cliente y el servidor se lleva a cabo por medio de mensajes de texto que siguen un formato estándar, estos mensajes pueden ser capturados y abiertos usando un Sniffer. El más común usado por los programadores se llama Fiddler, por medio de esta aplicación es posible espiar la comunicación entre el cliente y el servidor.
Hay dos formas básicas de enviar solicitudes al servidor: GET y POST. En la primera la solicitud se agrega a una URL, en la segunda los parámetros son enviados en el cuerpo de la solicitud.
Una vez que el servidor responde la solicitud “se olvida” de nosotros, esto quiere decir que no hay forma de conservar un estado, que nos permita dar seguimiento a un proceso como el que se requiere cuando se desarrolla una aplicación.
Entonces como podemos hacer una aplicación usando ASP?
Explicar todo lo que hizo Microsoft para poder trasladar el entorno de programación de Windows a un entorno sobre HTTP para crear las WebForms, sería muy extenso para un post, así que voy a centrarse solo en dos características: ViewState y PostBack.
Ambos existen en WebForms y son parte fundamental de su mecanismo, sin embargo no los encontraremos en MVC; aun que he encontrado algunos post donde ingeniosamente los simulan; sinceramente no es necesario su uso en MVC.
La arquitectura de una aplicación usando WebForms es muy diferente a la que se requiere para MVC. Desde el simple proceso de solicitud de una página o Vista, hasta el seguimiento de las subsecuentes comunicaciones para completar el proceso.
El ViewState es la técnica que emplea ASP para controlar los cambios que sufren los controles entre los postbacks en la arquitectura de WebForms. Cada página tiene un Hidden Field llamado _VIEWSTATE, el cual puede llegar a ser muy grande.
El PostBack es un HTTP POST, hacia la misma página donde se origino la primera . O sea se envía los datos a sí misma. No se debe confundir con el Refrescado de la página que se lleva a cabo cuando presionamos la tecla F5. Además solo es posible usando WebFroms.
Comparemos
En WebForms existe un archivo físico con extensión .aspx el cual es solicitado de forma explícita, en MVC este archivo no puede ser solicitado de forma explícita. Aun que también existe.
Cuando solicitamos una página en WebForms se lleva a cabo un proceso dentro del ASP para atender la solicitud. El proceso pasa por varias etapas, desde identificar la pagina solicitada, hasta incluso compilarla. A este proceso se le conoce como Ciclo de vida de una página ASP.NET. En este caso el programador no tiene que estar consiente del protocolo HTTP, que se mantiene por debajo.
Cuando usamos MVC el mecanismo es más simple, aun que mantiene la plataforma base de ASP.NET, en este caso, no solicitamos una página, en realidad nos comunícanos con una clase y solicitamos una acción, esta acción entre sus posibles respuestas nos puede regresar una vista, que no es más que un documento HTML. En este caso, el programador escribe código para responder a las solicitudes GET y POST, por lo que si debe estar consiente de la existencia del protocolo HTTP. Si estas interesado en conocer al detalle cómo se lleva a cabo visita este blog, o revisa los post iniciales que publique hace algunos meses.
En conclusión
MVC fue diseñado pensando en el protocolo HTTP, las WebForms fueron pensadas para ocultar esta complejidad a los programadores que por lo general provenían del desarrollo de aplicaciones para Windows, esa es una realidad. Para aquellos que han trabajado por años usando WebForms, podría parecerles que MVC es un retroceso, sin embargo cuando te familiarizas con su arquitectura y mecanismos, te sientes con más control sobre lo que se está realizando. Para poder emitir una opinión sería necesario que se dieran la oportunidad de crear un pequeño proyecto usando MVC, les aseguro que no se van a arrepentir. NO quiero decir que sea mejor que las WebForms, solo digo que es diferente. Cada una tiene su encanto, y lo importante es saber cuándo usar uno o la otra.
El poder del código solo es completo, si tenemos el conocimiento de como usarlo.
Cómo identifico cuando usar MVC?
ResponderEliminar