WebForms es una abstracción que oculta la mecánica de la web del desarrollador. Permite a los desarrolladores de escritorio transferir sus habilidades a la web con relativa facilidad. Si bien logra esto en parte, en escenarios prácticos, generalmente no pasa mucho tiempo antes de que la abstracción se rompa y uno tenga que poner soluciones desordenadas. La prueba unitaria es difícil, porque la lógica para manejar las interacciones del usuario está estrechamente relacionada con la IU. El HTML producido por una aplicación típica de WebForms está lejos de ser óptimo. Es típicamente hinchado, difícil de leer y contiene una gran cantidad de contenido que está presente solo para permitir que la abstracción funcione, p. viewstate, que es una gran cantidad de información para ayudar a la abstracción a dar la ilusión de estado al desarrollador, a pesar de que la web es un medio sin estado.
MVC, sin embargo, abarca la mecánica de la web. Las operaciones fundamentales que tienen lugar en una solicitud y respuesta web se presentan al desarrollador como simples abstracciones. MVC tiene una clara separación de preocupaciones. El modelo simplemente representa los objetos o entidades comerciales con los que se relaciona el sistema, con métodos para recuperar y almacenar instancias de estos objetos. El controlador toma una solicitud web, realiza operaciones contra el modelo y luego pasa el modelo a la vista. La vista es puramente un renderizador, para presentar el modelo al usuario y exponer los elementos de la interfaz que permiten al usuario formular la próxima solicitud para pasar a un controlador. Esta separación de preocupaciones permite pruebas de unidades relativamente fáciles. El desarrollador tiene control total sobre el HTML producido y no hay necesidad de que estén presentes otros artefactos (por ejemplo, viewstate).
Prefiero MVC. En raras ocasiones, puede ser útil usar formularios web, p. un prototipo rápido o demo, pero por lo demás, siempre recomendaría el uso de MVC.
En cuanto a la transferencia de un proyecto de Webforms a MVC, esto es obviamente muy subjetivo y depende de la aplicación en sí, y de las limitaciones presupuestarias, pero en general creo que es un paso en la dirección correcta.
que no entiendo el punto 4, si necesita un control total sobre su código? Nunca noté una falta de control con el código asp.net. –
control - architecturing de su código por su cuenta. no habrá ningún bloque de código autogenerado, ya que está en las aplicaciones ASP.Net normales – solairaja