2009-06-23 22 views
28

Tuve una discusión con uno de mis amigos que es arquitecto de una gran empresa de Internet. Básicamente, él decía que ASP.NET MVC no es para aplicaciones empresariales a gran escala, que no es tan flexible como WebForms, y que una aplicación MVC será más lenta que una aplicación de formularios web.ASP.NET MVC vs WebForms: comparación de velocidad y arquitectura

Desde mi propia experiencia trabajando con MVC, puedo decir que es más flexible y ligero porque no hay ciclo de vida de la página, viewstate, etc. Por lo tanto, debe cargar más rápido por lo menos. Hasta donde yo sé, MVC está diseñado para tráfico de mediana a gran escala.

¿Qué piensan? ¿Alguien ha comparado la velocidad y el rendimiento? ¿Y ASP.NET MVC es mejor para aplicaciones a gran escala que ASP.NET WebForms?

En resumen, entre estas dos opciones, ¿cuál elegiría utilizar para una aplicación empresarial a gran escala?

+3

Creo que desea revisar su última oración, ya que tanto MVC como WebForms son ASP.NET. –

+0

hecho gracias por el encabezado – Sergey

+0

Aún más: ¿quiso decir "es ASP.NET MVC mejor ... que ASP.NET WebForms " –

Respuesta

29
  • velocidad de desarrollo: WebForms
  • velocidad
  • Rendimiento: MVC
  • Facilidad de uso: Web Forms (típicamente) Prueba
  • Unidad: MVC (típicamente)
+15

La facilidad de uso es subjetiva. He visto personas que piensan los formularios web son sencillos y los que piensan que MVC es más fácil. Velocidad de desarrollo Creo que se estabilizará con el tiempo ya que asp.net MVC se vuelve más maduro y compatible. – dtc

+1

Allí calificado. P –

+7

Puede probar aplicaciones web con la misma facilidad. como aplicaciones MVC si se crean correctamente, con la separación adecuada de las preocupaciones. No necesitamos la introducción de MVC para enseñarnos cómo hacerlo. Es solo que muchas pruebas de unidades ignoradas, punto. –

4

Creo que MVC es un marco más ligero, y más eficiente porque no hace muchas cosas que el marco de WebForms hace de fábrica, como viewstate, por ejemplo. No creo que sea justo decir que MVC no es para aplicaciones de mayor escala, ya que probablemente se escala mejor que WebForms en términos de rendimiento. En términos de funciones listas para usar, WebForms hace más por usted porque maneja el estado entre las publicaciones para usted, a través de viewstate, etc.

No tengo ningún vínculo para comparar el rendimiento conmigo, pero estaría extremadamente sorprendido si no hay ninguno por ahí. Incluso microsoft probablemente tiene algunos.

7

Este sitio es un mejor ejemplo de ASP.net MVC de rendimiento y escalado

Algunas características que creo que es necesario para Enterprise y que proporciona MVC son

  1. Prueba de la unidad - a pesar de que se necesita tiempo para poner en práctica este principio se ahorra un montón de tiempo en el futuro

  2. separación de las preocupaciones - esto realmente mejora el desarrollo y modificación de velocidad

  3. Rendimiento - ya que tanto MVC como Webforms utilizan el mismo ASP.net que el framework principal y MVC es más ligero y compatible con HTTP, te hace la apuesta ter rendimiento

+3

. Las tres se pueden lograr con WebForms. –

+1

Realmente me gustaría saber cómo hacer todo eso en WebForms ... – Liao

+0

@liao - para los primeros dos puntos, evitar que se ponga todo en el código sería mi suposición. – user20358

1

La programación groupthink y cargocult es fuerte en este hilo. Su amigo arquitecto tiene razón (probablemente por los motivos equivocados) y está equivocado al mismo tiempo.

que no es tan flexible como WebForms

Esto es simplemente tonto.Puedes hacer cualquier cosa con cualquier cosa. Ambos son increíblemente flexibles. En términos de flexibilidad, es probable que MVC sea el ganador claro aquí, ya que puede lograr fácilmente la Programación Orientada a Aspectos (AOP) usando ActionFilters. Otra razón por la que es probable que MVC sea el ganador aquí es que se piensa en la inyección de dependencia en MVC. Puede tener inversión de control e inyección de dependencia en WebForms pero requiere implementaciones complejas que involucren el patrón Model-View-Presenter.

La aplicación MVC será más lenta que una aplicación de formularios web.

Esto no es válido para su reclamo, tal como está escrito. Cualquier aplicación puede escribirse más lentamente comparativamente ya que es un proceso complejo que involucra muchos aspectos para llegar a un producto final. Sin embargo, en términos de velocidad bruta. Webforms es sustancialmente más rápido. https://stackoverflow.com/a/20253243/37055

es un peso más ligero, porque no hay ciclo de vida de la página, estado de vista, etc .. Debe por lo tanto se carga más rápido, por lo menos

Ésta es también una instrucción no válida para hacer. El ciclo de vida de la página es irrelevante en todos los aspectos porque existen ciclos de vida corolarios en MVC con respecto a los controladores y filtros de acción. El estado de la vista es interesante ... si elige cargar 100s y 1000s de kilobytes de datos en el estado de vista, requiriendo que cada devolución al servidor tenga una solicitud de 1MB-5MB, sí, obviamente será más rápido hacer casi cualquier cosa de manera diferente. Esto no es culpa de webforms, sin embargo, webforms te permite caer en el pozo de la falla muy fácilmente con viewstate.

es mejor ASP.NET MVC para aplicaciones a gran escala que ASP.NET WebForms?

No. Sin embargo, la respuesta a esta pregunta "¿es ASP.NET WebForms para aplicaciones a gran escala que ASP.NET WebForms?" La respuesta también es No. La respuesta es no, porque la respuesta es siempre depende. Cada marco tiene pros/contras y necesitas medirlos, no hay respuestas definitivas.

Si está creando un sitio basado en contenido cuyo trabajo es tener los tiempos de carga de página más rápidos posibles, como www.microsoft.com, entonces es muy posible que elija formularios web.

¿cuál elegirías utilizar para una aplicación empresarial a gran escala?

En primer lugar, es muy probable que no tenga este problema. No estaría en condiciones de hacer esta pregunta si fuera realmente responsable de diseñar una aplicación empresarial a gran escala. (o el proceso de contratación en realidad no requería experiencia de desarrollo a gran escala).

En términos de una aplicación a gran escala, el marco que elija es casi insignificante. Las aplicaciones a gran escala se basan en las colas. Aprovecharán herramientas como MSMQ ya sea directamente o a través de un bus de servicio, como por ejemplo: Mass Transit, Azure Service Bus o NServiceBus. Solo con las colas puede alcanzar la escala para manejar millones de solicitudes de la misma manera que lo hacen Amazon, Ebay y cualquier otro jugador importante.