Pregunta ¿Cuándo usar ASP.NET MVC vs. ASP.NET Web Forms?


Una de las preguntas más comunes sobre ASP.NET MVC es por qué debería usarla en ASP.NET Web Forms? La respuesta generalmente incluye ViewState y URL limpias, entre otras. Hacia el final, encontrará una propaganda sobre el uso de la herramienta adecuada para el trabajo y que sirven para diferentes propósitos. Sin embargo, no creo que haya visto cuáles son esos propósitos. Entonces, ¿en qué momento elegiría ASP.NET MVC sobre ASP.NET Web Forms, o ASP.NET Web Forms sobre ASP.NET MVC?


20
2017-07-17 15:51


origen


Respuestas:


No elige ASP.Net MVC sobre ASP.Net, porque ASP.Net MVC todavía lo es ASP.Net. Usted elige ASP.Net MVC o ASP.Net Web Forms, y existen muchas buenas razones para hacerlo:

  • Más fácil de controlar tu HTML
  • Más fácil de hacer pruebas unitarias
  • Pocos "Gotchas"

Por otro lado, los formularios web tienen algunos puntos a su favor:

  • Fácil de juntar aplicaciones simples CRUD / business extremadamente rápido
  • Difícil de superar el rendimiento de ViewState en el entorno LAN local
  • Paradigma de formas fáciles de aprender

El resultado es que si está creando aplicaciones de negocios en un entorno LAN corporativo (que sinceramente es la mayoría de los desarrolladores web), Web Forms es realmente genial. En ese sentido, Microsoft realmente conoce su mercado. Pero si está creando una aplicación para Internet pública, es posible que desee MVC para que pueda realizar pruebas exhaustivas y asegurarse de que sus páginas no estén saturadas con datos innecesarios de ViewState o JavaScript.

Además, algo que ha cambiado en los últimos años es que incluso muchas aplicaciones de intranet corporativas ahora necesitan ser compatibles con el uso doméstico / remoto, lo que hace que MVC sea más atractivo para esa multitud de lo que había sido.


29
2017-07-17 15:55



Use MVC si todos los miembros de su equipo son lo suficientemente hábiles para administrar el "control sobre HTML"; de lo contrario, su código se convertirá en un sopa de etiqueta.

En otras palabras

bool useMvc = true;
foreach (TeamMember member in team.Members)
{
    useMvc = useMvc && member.IsSkilled;
} 

9
2017-08-01 09:05



http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx

revisa ese blog!

En pocas palabras "separación de preocupaciones"


4
2017-07-17 15:54



Te daré un par de propósitos, con claras ventajas.

  • Si su propósito es un sitio web público que se basará en el tráfico, use MVC. Es óptimo para la optimización del motor de búsqueda.

  • Si su propósito es una aplicación web empresarial que actúe como una aplicación de escritorio, me inclinaría por los formularios web, ya que la administración estatal y la compartimentación de sus recursos en los controles de servidor subyacentes ofrecen enormes ventajas si se usan correctamente.


4
2017-07-17 16:09



El mayor problema que enfrentan los desarrolladores es administrar la complejidad y mantener el código "limpio". MVC le da al desarrollador las riendas para aprovechar OOP para esconder la complejidad y hacer que el código sea fácil de entender.

Los formularios web serán más rápidos de desarrollar en el corto plazo, pero no se prestan a la sostenibilidad a largo plazo en términos de mantenimiento y crecimiento.


3
2017-10-03 17:38



He trabajado con formularios web durante 13 años y MVC durante 2 años y cuando comencé con MVC, tuve preguntas similares. Aquí están mis conclusiones.

  • Lo más importante: la última versión de ASP.NET es 4.6 y se estaban moviendo a ASP.NET 5.0, pero MS abandonó eso para ASP.NET Core, que ya no es compatible con Web Forms (o incluso VB.NET). Entonces, solo eso podría darte tu respuesta al decidir qué agujero de conejo se va a caer.

Habiendo dicho eso:

  • Me encuentro que MVC, una vez que lo dominas, es MUCHO MÁS fácil para lidiar con formularios básicos y cualquier tipo de "Modelo" simple, es decir, tablas con un conjunto de relaciones simples y directas como órdenes que tienen tablas. ese enlace a usuarios, productos, etc. Una vez que comienzas a entrar en relaciones más complicadas y necesitas devolver muchos conjuntos de resultados condicionales, dependes de parámetros, tienes procedimientos almacenados complicados ... entonces los formularios web son mucho mejores para lidiar con esto. . Si no tiene que lidiar con este nivel de complicación, MVC hace que el desarrollo MUCHO más rápido, especialmente cuando se trata de un enfoque en el que ya tiene la base de datos, ya que crea gran parte del código y la validación para usted.

  • Si no tiene mucha experiencia con el diseño de la base de datos, MVC hace el trabajo por usted. Literalmente puede construir la base de datos para usted.

  • MVC no tiene muchos de los controles integrados que hace Web Forms (Gridviews, FormViews, Sitemaps, listas de paginación). Todo debe escribirse desde cero, pero afortunadamente muchas personas ya lo inventaron en NuGet, que puedes descargar en tu proyecto.

  • MVC depende en gran medida de la estructura de su URL. La ruta, la cadena de consulta, etc. Si encuentra que su aplicación necesita hacer mucho formulario POSTing en lugar de GET-ting, tendrá que hacer muchos ajustes o publicar AJAX. Si tiene una URL establecida que no puede cambiar, puede ser una molestia. Es factible, pero solo un pequeño truco (o puedes usar Angular en su lugar).

  • MVC no tiene Viewstate. Si necesita ocultar las variables de una publicación a otra y conservarlas, es un poco difícil. MVC tiene elementos como ViewBag que le permite pasar datos de su controlador a su página, pero se borran después de que se procesa la página. También hay algo llamado "Tempdata" que actúa como estado de sesión, pero más temporal. Sin embargo, depende del estado de la sesión, que no es una forma ideal de datos persistentes. Las variables de sesión y tempdata son correctas para datos de nivel de usuario (información de perfil para la persona que inició sesión), pero tener dos pestañas diferentes abiertas por el mismo usuario puede hacer que estas variables de sesión / temperatura se sobrescriban entre sí cuando se trata del datos reales del modelo.

Si estás en una encrucijada, iría con MVC. MS lo está presionando y el soporte para formularios web probablemente comenzará a desaparecer


0
2018-03-14 12:54