Web Forms vs MVC

Web Forms vs MVC

diciembre 28, 2016

— Publicado en Development

Webforms se orienta en un modelo formulario:

Para cada página de tu aplicación tienes el correspondiente archivo .aspx y se desarrolla en Webforms de un modo muy parecido a Winforms (o el clásico VB). ¿Quiero poner un botón? Lo arrastro desde la toolbox. ¿Quiero responder al clic del botón? Asigno el evento clic al método MyButton_Click() y allí en C# (o en VB.NET) pongo el código. Un modelo muy familiar para mucha gente. Un modelo pensado para aplicaciones de escritorio…

 

A cambio de usar este modelo hay que pagar un precio: Las aplicaciones de escritorio son statefull, es decir tienen estado: son un proceso que se ejecuta en la máquina cliente, y si en un formulario pongo el valor de un textbox a “Hola” ese valor se mantiene hasta que destruya el formulario, o yo lo cambie.

 

La web es Stateless:

Cada acción (pulsar un enlace, submitear un formulario, ir a una URL) provoca que todo se borre y se empiece de nuevo. En efecto un formulario web se crea, se “traduce” a HTML (los navegadores sólo entienden HTML) y se destruye. Cuando el usuario pulsa un botón, se reconstruye el formulario en el servidor, se ejecuta el código del click y se destruye de nuevo.

 

Para que Webforms pueda reconstruir el formulario cada vez debe pasar un montón de datos entre cliente (navegador) y servidor (donde se crean y destruyen los formularios). Ese montón de datos es lo que conocemos como Viewstate.

 

El Viewstate es el responsable de la magia de webforms: De convertir algo stateless como HTML a algo statefull como Webforms. Pero el Viewstate es una espada de Damocles: Tiende a crecer mucho y hace que las aplicaciones Webforms se vuelvan lentas y poco escalables. Se pude tunear pero eso ya no es tan sencillo… Webforms apostaba por un modelo de desarrollo relativamente rápido de aplicaciones, pero resulta que para cierto tamaño de aplicaciones debo tunear tanto este modelo que deja de ser rápido. Pasa a ser costoso y muy susceptible a errores.

 

MVC

MVC parte de otra premisa, parte del lado contrario. ¿Quieres un botón en una página? Pues añade un input type=”button”.

¿Que no sabes HTML? Apréndelo.

HTML forma parte de los skills básicos para usar MVC. Al igual que javascript (o mejor dicho jQuery).

 

¿Quieres procesar el clic del botón? Captúralo en javascript y lanza una petición a la URL que tú quieras pasándole los datos como quieras. Todo eso con código “picado a mano”. No hay diseñador gráfico en MVC, no hay toolbox, no hay “ventana de propiedades”. Ni lo hay ni se necesita para nada.

 

La curva de aprendizaje de MVC es relativamente alta para gente que siempre ha estado en Webforms.

¿Porque? Porque webforms te abstrae de HTML, de HTTP y de Javascript. MVC no, ni quiere hacerlo. MVC te obliga a saber HTML, a saber Javascript, a conocer HTTP. En cambio, si vienes de otras tecnologías como PHP, o JSP seguramente encontrarás MVC mucho más natural y sencillo que Webforms.

 

Y es que, pese a que pueda parecer lo contrario, MVC es mucho más simple que Webforms. Es un modelo limpio, sencillo y muy, muy, muy productivo. Y a diferencia de Webforms que es un modelo de desarrollo de aplicaciones de escritorio portado a la web, MVC es un modelo pensado para el desarrollo de aplicaciones web. Todo en MVC es mucho más natural que en Webforms. La única pega es esta: tener que aprender HTML, Javascript/jQuery y HTTP.

 

 

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestEmail this to someone
Compartir post...