2008-11-21 18 views
7

Últimamente he notado mucho sobre asp.net MVC, pero no he encontrado una descripción clara o convincente de cuándo, dónde o por qué querría usarlo en WebForms.¿Cuándo y por qué debería considerar asp.net MVC?

Digamos que quería construir una pequeña aplicación web que permita a una persona anunciar algunos artículos en línea. La página web tendrá 4 casos de uso:

  • Buscar anuncios
  • Ver listados
  • vista del elemento
  • Publicar un anuncio

Asumamos:

  • estoy no particularmente interesado en la unidad de prueba de mi controlador. La página mostrará la lista de elementos correctamente o no.
  • Estoy interesado en tener más control sobre el marcado HTML.
  • No estoy interesado en usar la última tecnología de buzz solo por el mero hecho de hacerlo.
  • Estoy interesado en utilizar la herramienta que mejor se adapta al trabajo en términos de productividad, rendimiento, facilidad de mantenimiento & simplicidad de la solución final.
  • No quiero tener que trabajar con un montón de matices para hacer que algo simple funcione.

Por lo tanto, mis preguntas son por lo tanto:

  • ¿Cuáles son las diferencias fundamentales entre los dos modelos?
  • ¿En qué situación es mejor que la otra?
  • ¿Cuáles son los problemas con asp.net MVC? (Conozco los problemas con WebForms)
  • Para nuestra aplicación de ejemplo, ¿qué ganaría si utilizo asp.net MVC en lugar de WebForms?
  • Para nuestra aplicación de ejemplo, ¿qué perdería utilizando asp.net MVC en lugar de WebForms?
  • ¿Es factible mezclar y combinar modelos dentro de la misma pequeña aplicación?

Gracias a todos los que dediquen su tiempo a contribuir con una respuesta.

Respuesta

10
  • ¿Cuáles son las diferencias fundamentales entre los dos modelos?

WebForms tratan de imitar el desarrollo de Windows Forms ya que le permite volver a utilizar una gran cantidad de controles pre-hechos, y falsificando estado de la aplicación web a través del mecanismo de _VIEWSTATE oculto.

MVC es un patrón diseñado para ayudarlo a separar sus datos (Modelo), lógica comercial (Controlador) y presentación (Ver). Se adhiere más a la verdadera naturaleza de la web: URL RESTful, sin estado.

  • En qué escenario es uno mejor que el otro?

En mi opinión, para una aplicación de intranet haciendo un uso intensivo de los controles, formularios Web puede ser útil en la reducción del tiempo de desarrollo, ya que gracias al diseñador puede crear la interfaz de usuario muy rápidamente y dejar que el marco gestionar la App estado automáticamente

Para cualquier otro proyecto, especialmente un sitio web público, incluso uno pequeño, creo que MVC es el camino a seguir.

  • ¿Cuáles son las trampas con ASP.neta MVC (soy consciente de las trampas con WebForms)

yo diría que hay una cierta curva de aprendizaje para entender completamente el patrón MVC y su poder. Además, dado que el marco todavía está en BETA, puede esperar que la API experimente algunos cambios menores antes del lanzamiento.

Dado que JavaScript no está oculto para usted en MVC, también requerirá algo de tiempo para aprender si no está familiarizado con él. jQuery simplifica mucho esto sin embargo.

  • Para nuestra aplicación de ejemplo, lo que iba a ganar mediante el uso de asp.net MVC en lugar de WebForms?

Se podría tener un mejor control sobre el formato HTML y Javascript comportamiento, una separación más limpia de las preocupaciones y algo de código base fácilmente comprobable (incluso si usted no parece interesado en las pruebas unitarias él).

  • Para nuestra aplicación de ejemplo, lo voy a perder utilizando asp.net MVC en lugar de WebForms?

perdería el 'arrastrar y soltar' forma rápida de construir sus páginas y la gestión de estado de la aplicación.

  • ¿Es factible mezclar y modelos de los partidos dentro de la misma pequeña aplicación?

De alguna manera, sí parece.

Recomiendo ver this talk de Phil Haack, quien ofrece una buena visión general del marco e invita a Jeff Atwood a hablar sobre cómo construyó StackOverflow con él.

Explica cómo SO está utilizando algunos controles de WebForms para CAPTCHA que se visualizan en la vista.

+0

¡Excelente respuesta! –

2
  1. La mayor diferencia entre ASPNET MVC y WebForms es el ciclo de vida de una página, no hay devoluciones de datos difíciles (innecesarias), codificación limpia, enz.
  2. No hay reglas para eso
  3. ???
  4. página web REST completa, separación de la lógica
  5. soporte en tiempo de diseño, no puede utilizar WebControls terceros
  6. Por favor, no lo mezcle juntos.Si realmente desea utilizar el modelo de formularios Web podría utilizar el patrón MVP, Billy McCafferty escribió artículos al excelente en ese patrón de diseño

Estoy rediseñando algunas de mis aplicaciones desde el MVP-patrón para MVC-patrón, no porque MVC es mejor, pero me gustaría utilizar las técnicas más novedosas ofrecidas por MS (el patrón en sí mismo es bastante antiguo).

3

La principal diferencia es que MVC es más parecido al desarrollo web "regular" que el resto del mundo de programación, mientras que ASP.NET estándar fue diseñado para que los desarrolladores de Windows se vuelvan locos para convertirse en desarrolladores web. Aprendí programación web aprendiendo Ruby on Rails, y parece que MVC se está convirtiendo en la versión .NET de Rails.

MVC está mucho más orientado al cumplimiento de estándares, javascript discreto y separación de preocupaciones que ASP.NET regular. Tendrá que entender cómo HTML y CSS funcionan juntos. Aprenderá MUCHO más JavaScript mientras domine MVC. Una de las mayores ventajas de MVC para mí es que puedes usar jQuery para hacer cosas increíbles de AJAX más fácil y mejor de lo que puedes en ASP.NET regular.

Si recién está aprendiendo desarrollo web, le recomiendo encarecidamente que conozca MVC. En el futuro, podrá transferir al menos algunas de sus nuevas habilidades a otros marcos.

Si está buscando qué aprender para obtener rápidamente un trabajo de desarrollo web, entonces tendré que sugerir fuertemente ASP.NET.

Una vez que MVC esté RTM, creo que veremos una curva de adopción lenta y constante y, a medida que madure MVC se convierta en el marco principal para crear sitios web con ASP.NET. ¡Al menos, eso espero!

Cuestiones relacionadas