Pregunta

Cuando escuché por primera vez sobre StackOverflow y escuché que se estaba construyendo en ASP.Net MVC, estaba un poco confundido.Pensé que ASP.Net siempre fue un ejemplo de arquitectura MVC.Tiene la página .aspx que proporciona la vista, la página .aspx.vb que proporciona el controlador y puede crear otra clase para que sea el modelo.El proceso para usar MVC en ASP.Net se describe en este Artículo de Microsoft.

Entonces mi pregunta es.¿Qué proporciona ASP.Net MVC que no podría hacer con ASP.Net normal (incluso desde ASP.Net 1.1)?¿Son solo URL elegantes?¿Es sólo para alardear de que MS pueda compararse con nuevas tecnologías como Ruby On Rails y decir: "Nosotros también podemos hacer eso"?¿Hay algo más que ASP.Net MVC realmente proporcione, en lugar de un par de plantillas adicionales en el menú Archivo->Nuevo?

Probablemente estoy sonando muy escéptico y negativo en este momento, así que simplemente dejaré de hacerlo.Pero realmente quiero saber qué ofrece realmente ASP.Net MVC.Además, si alguien puede decirme por qué es Modelo-Vista-Controlador y no en el orden de las capas de Vista-Controlador-Modelo o Modelo-Control-Vista dependiendo de si va de arriba a abajo, o viceversa, lo haría. Realmente lo aprecio también.

EDITAR

Además, probablemente valga la pena señalar que tampoco me ha importado mucho el modelo de formularios web (también conocidos como controles de servidor).Sólo lo he usado mínimamente y nunca en el trabajo.

¿Fue útil?

Solución

.aspx no cumple con el patrón MVC porque la página aspx (la 'vista') se llama antes que el código subyacente (el 'controlador').

Esto significa que el controlador tiene una "fuerte dependencia" de la vista, lo que va en gran medida en contra de los principios de MVC.

Uno de los principales beneficios de MVC es que le permite probar su controlador (que contiene mucha lógica) sin crear una instancia de una vista real.Simplemente no puedes hacer esto en el mundo .aspx.

Probar el controlador por sí solo es mucho más rápido que tener que crear una instancia de una canalización completa de asp.net (aplicación, solicitud, respuesta, estado de vista, estado de sesión, etc.).

Otros consejos

Scott Guthrie lo explicó en este post "Marco ASP.NET MVC"

  • Permite la separación limpia de preocupaciones, probabilidad y TDD por defecto.Todos los contratos centrales dentro del marco MVC están basados ​​en la interfaz y fácilmente simulables (incluye intrínsecs IhttpRequest/IhttPonse basado en interfaz).Puede probar la aplicación sin tener que ejecutar los controladores dentro de un proceso ASP.NET (haciendo una prueba unitaria rápidamente).Puede usar cualquier marco de prueba unitario que desee para hacer esta prueba (incluidas NUNIT, MBUNIT, MS Test, etc.).

  • Es altamente extensible y conectable.Todo en el marco MVC está diseñado para que pueda reemplazarse/personalizarse fácilmente (por ejemplo:Opcionalmente, puede enchufar su propio motor de vista, política de enrutamiento, serialización de parámetros, etc.).También admite el uso de modelos de inyección de dependencia existente y contenedores de COI (windsor, spring.net, nHibernate, etc.).

  • Incluye un componente de mapeo de URL muy potente que le permite crear aplicaciones con URL limpias.Las URL no necesitan tener extensiones dentro de ellas, y están diseñadas para soportar fácilmente los patrones de nombres de SEO y descanso.Por ejemplo, podría mapear fácilmente la URL/editar/editar/4 a la acción "Editar" de la clase de controlador de productos en mi proyecto anterior, o asignar los/blogs/scottgu/10-10-2007/a algún momento/url a A " DisplayPost "Acción de una clase de BlogenGinecontroller.

  • El marco MVC es compatible con los archivos de marcado ASP.NET .SApx, .ASCX y .Master como "Vista de plantillas" (lo que significa que puede usar fácilmente las características de ASP.NET existentes como páginas maestras anidadas, < %= %> Fragmentos, declarantes declarantes Controles del servidor, plantillas, vinculación de datos, localización, etc.).Sin embargo, no utiliza el modelo post-retroceso existente para las interacciones de regreso al servidor.En su lugar, enrutará todas las interacciones del usuario final a una clase de controlador, lo que ayuda a garantizar la separación limpia de las preocupaciones y la capacidad de prueba (también significa que no hay Viewstate o ciclo de vida de página con vistas basadas en MVC).

  • El marco ASP.NET MVC admite completamente las características de ASP.NET existentes, como formularios/autenticación de Windows, autorización de URL, membresía/roles, almacenamiento en caché de resultados y datos, gestión de estado de sesión/perfil, monitoreo de salud, sistema de configuración, arquitectura del proveedor, etc.

Principalmente, hace que sea muy fácil crear sitios web comprobables con separaciones de responsabilidad bien definidas.También es mucho más fácil crear UI XHTML válidas utilizando el nuevo marco MVC.

He usado el segundo CTP (creo que ya son cinco) para comenzar a trabajar en un sitio web y, después de haber creado algunas aplicaciones web antes, debo decir que es cientos de veces mejor que usar el modelo de control de servidor.

Los controles del servidor están bien cuando no sabes lo que estás haciendo.A medida que empiezas a aprender cómo deberían funcionar las aplicaciones web, empiezas a luchar contra ellas.Con el tiempo, tendrás que escribir el tuyo propio para superar las deficiencias de los controles actuales.Es en este punto donde el MVC empieza a brillar.Y eso sin siquiera considerar la capacidad de prueba de su sitio web...

Gran artículo de Dino Esposito que pretende explicar ASP.net MVC a los desarrolladores de formularios web ASP.net:

http://dotnetslackers.com/articles/aspnet/AnArchitecturalViewOfTheASPNETMVCFramework.aspx

¡¡¡No más ID HTML generados automáticamente!!!Cualquiera que haga algún tipo de javascript aprecia este hecho.

ASP.Net con su código detrás es casi MVC, pero no, lo único que hace que no sea así es que el código subyacente está vinculado directamente al aspx, que es un componente importante de MVC.Si está pensando en el código subyacente como el controlador, debe estar completamente desacoplado de la vista.El nuevo .NET MVC completa esto y ofrece un marco MVC completo.Aunque ya existen otros para .NET (consulte Spring.NET).

Revisé un par de ejemplos simples como Éste.Puedo ver la diferencia.Sin embargo, realmente no veo cómo MVC desacopla la vista del controlador.La vista todavía hace referencia a cosas que están en el controlador.Veo cómo hace que sea mucho más fácil realizar pruebas y que al menos en MVC el controlador no tiene ningún conocimiento de la vista.Y no tendría que procesar la vista para llamar a métodos en el controlador.Puedo ver que es un gran salto, aunque a primera vista no parezca mucho.

Estoy de acuerdo con @Will en cuanto a luchar contra los controles del servidor.Nunca he trabajado en una situación en la que realmente se usaran, pero muchas personas que conozco que sí lo hicieron se han topado con bastantes limitaciones con ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top