Esta es una pregunta obsoleta con muchas respuestas, pero ninguna tenía la respuesta que esperaba que apareciera en la lista.
La respuesta corta es:
- Use ASP.NET MVC si tiene la intención de construir correctamente una aplicación web con convenciones de programación modernas y patrones adoptados por la industria para la plataforma ASP.NET. En el lado negativo, se espera que sepa cómo funcionan los recursos HTML y del lado del cliente (Javascript, CSS), así como el aumento de la mentalidad de programación MVC que tiene una curva de aprendizaje empinada pero que llega a un final repentino una vez que se comprende.
- Utilice ASP.NET Web Forms si está utilizando o desea utilizar un enfoque GUI- centrado, RAD (Desarrollo rápido de aplicaciones) , de arrastrar y soltar para crear prototipos de algo muy rápidamente, es decir, el comportamiento de la rejilla de datos / botón pulsador conectado dentro 15 minutos, y la solución no pretende ser algo compatible con los desarrolladores. O bien, use los formularios web ASP.NET si tiene experiencia en desarrollo de GUI o formularios Windows Forms y desea transferir su conocimiento a la web.
Pero para ver esto correctamente, debes entender la historia de cada uno.
ASP.NET Web Forms fue la respuesta de Microsoft a aquellos que habían estado creando aplicaciones web dinámicas utilizando controles ActiveX de Visual Basic 6, DLL VB6 en el servidor y ASP Classic. En ese momento, el desarrollo web con estas herramientas de Microsoft era un verdadero desastre. Junto con la totalidad del .NET Framework, que fue el resultado de que Microsoft esencialmente volviera a la mesa de dibujo sobre cómo hacer una programación empresarial productiva en la pila de Windows, ASP.NET Web Forms fue, en su día, increíble y hermoso.
Todo el enfoque consistía en brindar a los desarrolladores lo mejor de ambos mundos de algo muy similar al desarrollo de aplicaciones de Windows, pero con el poder de los servicios de Internet. La idea era que, al igual que con un "Formulario" VB6 / WinForms (una ventana), una página web es un formulario (como una ventana, ver) , y en ese formulario puede arrastrar y soltar etiquetas, cuadros de texto, cuadrículas de datos, botones y otras cosas a las que los desarrolladores de VB / WinForms GUI estaban acostumbrados.
Para hacer que un botón haga algo, después de arrastrarlo y soltarlo, simplemente haga doble clic en él en el diseñador y estará en el editor de código, diciéndole al formulario qué hacer cuando ocurra ese evento de "clic". Así fue exactamente cómo los desarrolladores de la GUI de Windows crearon software utilizando las herramientas de la GUI de VB6 y herramientas de la competencia, ¡ excepto que ahora el código se está ejecutando en el servidor! ¡Guauu!
Esta fue la tecnología 2002. Increíble y hermoso en su momento como respuesta a las soluciones GUI habilitadas para Internet para el desarrollo de RAD , trajo una sensación de poder a un mundo desordenado de desarrolladores de software que tenían objetivos comerciales que tenían que lograr.
Desafortunadamente, este modelo de programación enfatiza tanto la metáfora de la programación de la GUI de Windows que conlleva la carga de los detalles de implementación necesarios, todo el equipaje necesario para acomodar los ciclos de vida del evento y la ocultación de los detalles feos del HTML simple y script que generarían estos componentes y controles de arrastrar y soltar. Y al final del día, los desarrolladores que soportan aplicaciones reales inevitablemente tuvieron que profundizar en estos componentes o escribir los suyos propios, y en consecuencia pelearían batallas con esta infraestructura, batallas que dejarían montones sobre montones de baldosas, cabello recogido y lágrimas.
Apoyo. Lava tus manos. Echemos un vistazo al problema comercial nuevamente. ¿Cuáles son nuestros objetivos comerciales?
Necesitamos construir y administrar aplicaciones web . Nuestras limitaciones son que tenemos la World Wide Web, que se encuentra en HTTP, HTML, Javascript y CSS, y en el servidor tenemos reglas comerciales, bases de datos y un pequeño puñado de excelentes lenguajes de programación (por ejemplo, C #). ¿Realmente necesitamos esta metáfora de la GUI de Windows para impulsar nuestra metodología de desarrollo? ¿Por qué no podemos centrarnos en los problemas de la aplicación y eliminar las metáforas de la GUI?
Aquí es donde entra en juego ASP.NET MVC. Comenzó con una rebelión de desarrolladores que se autodenominaban "Alt.Net" y querían volver a los principios de desarrollo de software adecuados y puros. No más complicaciones y problemas, solo enfóquese en los objetivos comerciales y las mejores prácticas de software.
Lo que esto realmente se traduce en este caso es:
- Separación de preocupaciones . Por ejemplo, un componente de datos no necesita saber cómo se procesarán sus datos, ni debe ver el marcado con los detalles de configuración de la conexión de la base de datos, y de esta manera un desarrollador puede centrarse en su área de interés al editar y código de prueba
- Exposición y soporte completo para la exposición al meollo del HTML y los recursos relacionados . En Web Forms, el HTML está escondido, se desalienta a los desarrolladores a que se preocupen por eso. En ASP.NET MVC, se alienta a los desarrolladores a administrar esos detalles; De hecho es una necesidad. La ventaja aquí es que el desarrollador puede volver a aprender a apreciar la semántica limpia de HTML, CSS y script, y trabajar con él en lugar de hacerlo en contra.
- Testabilidad de los objetos comerciales . Los controladores y modelos son mucho más adecuados para las pruebas unitarias programáticas, de modo que las implementaciones pueden validarse para cumplir con los objetivos comerciales, y los cambios pueden verificarse para que no se rompan. Con Web Forms fue difícil probarlo ya que los componentes no fueron diseñados para ser probados individualmente y todo el resultado del desarrollo giró en torno a los formularios de página y sus ciclos de vida de eventos con la lógica comercial y la lógica de presentación profundamente entrelazadas.
Tenga en cuenta que HTML ya es un lenguaje de marcado de muy alto nivel, al igual que Javascript es un lenguaje de programación de alto nivel. Toda la historia habría sido diferente si estuviéramos tratando con lenguaje ensamblador y C.
Luego, ampliando el n. ° 2, otro objetivo de ASP.NET MVC es permitir a los desarrolladores organizar los detalles de la parte 'vista' de sus soluciones y aprovechar la rica base sobre la que el resto de la industria ha construido La plataforma de cliente front-end.
Descubrirá que los desarrolladores de ASP.NET MVC se sienten como en casa utilizando bibliotecas Javascript ricas y técnicas de plantillas del lado del cliente sin luchar con la arquitectura del lado del servidor. Este no fue originalmente el caso con los formularios web ASP.NET, porque los formularios web no quieren que usted vea el HTML o el script en absoluto, excepto si realmente tiene que hacerlo , en cuyo caso, tenga cuidado, no es para los débiles de corazón.