2009-04-14 13 views
17

He estado utilizando ASP.NET MVC para proyectos personales desde antes de que llegara a RTM.Tengo 15 minutos para presentar ASP.NET MVC a mis colegas. ¿En qué temas debería enfocarme?

Estoy preparando una presentación para mis colegas para presentarles los conceptos básicos de ASP.NET MVC y mostrarles cómo se podría usar en nuestro entorno.

Mi presentación tiene un límite de 15 minutos. Hay mucha información para retransmitir (especialmente si se tienen en cuenta los proyectos como MVCContrib y varias publicaciones en el blog).

¿En qué temas debería concentrarme?

Algunos contexto: Yo trabajo para una agencia digital. Mis colegas son desarrolladores de .NET con más de 3 años de experiencia en ASP.NET.

lo que se ha sugerido hasta ahora:

  • razones para querer cambiar a ASP.NET MVC
  • enrutamiento
  • ActionResults (capacidad de servir a diferentes respuestas)
  • internos de petición-respuesta
  • Testabilidad
  • Andamios (plantillas T4)
  • de control de grano fino sobre la salida HTML
  • separación de las preocupaciones()
  • Diferencias entre ASP.NET WebForms y ASP.NET MVC
+0

¿Por qué el voto a favor? Especialmente considerando que han pasado 4 años desde que hice la pregunta. –

Respuesta

8

sólo tiene tiempo para 2 o 3 puntos principales.

El concepto más importante a entender es que las peticiones llegan a controladores entonces el controlador elige lo vista para presentar los resultados del controladorha generado.

El siguiente concepto importante es que MVC tiene su gran victoria sobre el ASP.NET "clásico" al crear pruebas unitarias para los controladores y el modelo. Sin este MVC es solo otra forma de despellejar a un gato.

Para un punto final me centraría en la estructura de las URL no porque sea tan importante, sino porque nos gustan las cosas que tienen una sensación limpia y las URL de MVC pueden hacer eso, esto puede ayudar a generar una respuesta positiva.

Evite que no haya controles del servidor (lo que no es del todo cierto) ya que es probable que obtenga una respuesta negativa. En general, evite mencionar lo que no funciona en comparación con los formularios ASP.NET (aunque no es necesario que Viewstate lo mencione de paso). Sabes que los beneficios sopesan las cosas que faltan (o son innecesarias) pero tu audiencia no. Mantenlo positivo.

5
  • Routing
  • La flexibilidad de ActionResults
  • Conexión de diferentes vistas a la misma acción del controlador (es decir, una vista móvil)

El gran tema de las pruebas unitarias puede ser demasiado grande para una reunión de 15 minutos, pero si sus desarrolladores ya están utilizando TDD yo añadiría que

1

explicarlos que:

  1. no hay controles de servidor más

  2. no hay ningún evento en el mecanismo más

  3. No hay ViewState más

  4. Ahora no se saldrán con cómodos formularios Web y tendrá que aprender los fundamentos de HTTP, HTML/CSS y JavaScript

preparar algunos medicamentos para los que se débil.

(5). Ahora no se trata de páginas, sino de recursos (modelo REST). La URL no apuntará a un archivo físico (.aspx) sino a una acción del controlador que puede servir de vuelta diferentes tipos de respuestas - una página de render, un corto XML como una respuesta Ajax etc.

P. S. Si tiene algo así como el marco interno de la compañía que facilita muchas operaciones comunes y está construido con WebForms, es probable que no los convenza de adoptar MVC, ya que significa mucho trabajo, cambios dramáticos en los patrones de pensamiento y probablemente una gran cantidad de tiempo./costos

EDIT: Para los que pidió puntos positivos ...

(6). Urls amigables con el SEO listas para usar, sin la necesidad de utilidades de terceros para la reescritura de Url.

(7). Control completo sobre su salida de HTML. Sin carga útil de ViewState, sin inyección de ID generados automáticamente => marcado limpio + tamaños de páginas más pequeños => menos consumo de tráfico + tiempos de respuesta más cortos.

(8). Una posibilidad para un diseño limpio y transparente de una aplicación (incluso con múltiples capas). En lugar de hackear con cada control por separado en el código subyacente, ahora se encuentra en una mejor posición para diseñar una arquitectura con flujo de datos comprensible y rastreable, desde la capa de la base de datos hasta la lógica del negocio hasta que llega a la vista. Mucho mejor en comparación con el estilo de codificación de WebForms ubicuo cuando cada control va directamente a la base de datos para obtener algunos datos para mostrar. No necesariamente que usted administre un diseño limpio, pero al menos el concepto de MVC lo hace más claro para usted ahora cómo hacerlo bien.

+0

Todos los puntos negativos y no positivos. Eso va a ser una miserable presentación de 15 minutos. Todo esto quitado para qué beneficio. En 15 minutos, los beneficios y los nuevos conceptos clave son realmente todo lo que tiene tiempo para. – AnthonyWJones

1

Me gustaría llamar su atención con el enrutamiento, eso es lo más obvio (y no se limita a MVC). Luego miraría la vista de nivel superior y hablaría sobre la separación de preocupaciones, la capacidad de prueba y la burla.

Si yo fuera usted me dirijo a ScottGu's blog y usar su material excelente :-)

1

La mejor manera de hacer esto es seguir ScottGuthries un capítulo del libro de ASP.NET MVC 1.0 Profesional, donde se ha dado un recorrido de desarrollo de una aplicación web hecha y derecha utilizando ASP.NET MVC con todas las funciones. Puedes resumir ese capítulo en 20 minutos.

Descargar el Capítulo de Muestra Por Scott Guthrie Here!

LinkText: http://www.wrox.com/WileyCDA/Section/id-321793.html

Espero que esto ayude.

1

Si han estado usando ASP.NET, pueden no estar familiarizados con la arquitectura MVC para empezar y es posible que tenga que hablar de eso un poco.

Como todos son desarrolladores y solo tiene 15 minutos, le sugiero que los muestre Archivo> Nuevo para el proyecto ASP.NET MVC y hable brevemente sobre el andamio. Esa es una gran venta para MVC ya que funciona desde el principio y ya está configurado para el desarrollo iterativo.

Después de eso, puede cambiar a una demostración en funcionamiento de una aplicación simple. Para esto, paso por la aplicación con un depurador desde el enrutamiento en global.asax a la acción del controlador para modelar y, finalmente, hacer una copia de seguridad de la vista. Esto planteará preguntas interesantes y explicará el nuevo ciclo de vida de la aplicación, incluidos SoC, MVC, L2S, etc. Esto también resaltará implícitamente las diferencias entre las aplicaciones ASP.NET MVC y ASP.NET.

Si tiene wfetch (o Fiddler o Live HTTP Headers), entonces mostraría la solicitud del lado del cliente y resaltaría la ausencia de estados de vista y resaltaría los verbos POST/GET (PUT/DELETE si está usando wfetch) . Tal vez mencione la utilidad de esto en las aplicaciones AJAX.

Anticipe las preguntas sobre cómo migrar la aplicación actual y cuál es la propuesta de valor para sus escenarios de casos de uso actuales.

0

Un blog en 15 minutos :-). En serio, tal vez se centran en la separación de las preocupaciones?

+1

Creo que decía: Escribe un Blog (Software) en 15 Minutos usando MVC. –

+0

Sí, eso es lo que hizo que los rieles fueran famosos hace un par de años. – Morph

2

Eche un vistazo a ASP.NET MVC Training Kit.

Incluye una presentación pre-enlatada (aunque 60 minutos) con la que puedes hackear.

Se centra en:

  • Separación de preocupaciones
  • Comprobabilidad
  • control

hecho, me hizo algo similar (aunque estaba a unos 45 - 60 minutos, incluyendo demostración) justo antes esto salió, y la clave para nosotros fue realmente:

Le devuelve el control del marcado HTML.

La capacidad de prueba, etc. ya se entendía bastante, pero se consideraba una ventaja clave sobre ASP.NET estándar.

+0

Gracias Zhaph - Echaré un vistazo a eso –

0

Por supuesto, lo primero y más importante es la separación de conceptos, lo que da: 1. Más diseño transparente que es más fácil de entender y administrar. 2.Convención sobre la configuración. Lo que acelera el desarrollo y reduce las diferencias en la práctica de codificación/diseño entre los desarrolladores. 3.Patrón de desarrollo ya integrado en el diseño de la aplicación en sí: Desarrolla modelos, luego controla y luego visualiza. Cambiar y probarlos por separado (tal vez con desarrolladores dedicados).

Pero permítanme decir si le dan sólo 15 minutos que realmente no quieren oír hablar de ella o usarla para el caso;)

0

Creo que por lo general mejor enfoque cuando se desea presentar alguna nueva tecnología es para hacer un ejemplo simple que explique algunas de las características interesantes.

Puede crear un ejemplo de aplicación mvc simple con 2 vistas diferentes de la misma página y 2 controladores diferentes. Un controlador que puede usar para operaciones asincrónicas y el segundo para solicitudes normales. Una vista puede ser vista normal, la segunda vista puede verse optimizada para teléfonos móviles. Es pocas horas de trabajo y con este ejemplo, usted puede cubrir la totalidad de las características interesantes de asp.net mvc:

-routing -testability -flexibilidad y separación de preocupación

aplausos

2

Usted He recibido todo tipo de puntos: mi pregunta es, ¿por qué crees que quieres usarla en primer lugar, y cómo crees que te ayudará a ti y al resto del equipo de desarrollo en tu entorno? Las viñetas son inútiles si no se aplican a su situación.

5

Tuve que escribir un informe para mi jefe justificando por qué quería usar MVC sobre formularios web/Nettiers. Blogged mi informe http://ivida.co.uk/2011/05/11/mvc-nhibernate-vs-webforms-nettiers/

Soy consciente de que sólo tienes un corto espacio de tiempo, pero es posible encontrar algunas ideas de la siguiente lista ....

  1. Beneficios de la MVC

ASP .MVC se escribió en respuesta a las críticas de Web Forms en relación con otras plataformas de desarrollo. Si bien Web Forms brinda a los desarrolladores un marco de Desarrollo de aplicaciones rápidas y fue escrito para "imitar" los métodos de desarrollo utilizados en Win Forms, dificultó la implementación de ciertas prácticas implementadas en otras plataformas y se consideró fundamental para un buen desarrollo. 1.1. Comprobable

MVC permite la escritura automática de unidades y pruebas de integración. Esto tiene una serie de ventajas distintas.

a) Reduce enormemente la necesidad de realizar pruebas manuales; el costo inicial de crear pruebas unitarias se devuelve a la baja reduciendo significativamente la cantidad de pruebas manuales.

b) Se puede ejecutar durante todo el desarrollo; esto es invaluable, ya que le permite al desarrollador estar seguro de que no están introduciendo cambios bruscos en la base del código.

c) Le da al desarrollador la confianza para implementar cambios en la base de código ya que las pruebas mostrarán cualquier error.

d) Lleva a una base de código mucho más rigurosa ya que el código ha estado probando numerosas veces a lo largo del desarrollo en lugar de las pruebas manuales esporádicas.

e) Cada prueba es un requisito FUNCIONAL encapsulado en el código. Si existe un requisito de que solo los usuarios con la función X puedan realizar la actividad Y, la prueba es evidencia de que se cumple este requisito.Esto se convierte en un valor incalculable si un desarrollador vuelve a una base de código después de un período de tiempo, ya que los requisitos se pueden ver directamente ejecutando las pruebas.

Un desarrollador puede escribir tan poco o mucho código de prueba según los requisitos del proyecto. Si un proyecto está expuesto a cambios en las especificaciones, la realización de pruebas en el lugar acelera significativamente la implementación de los cambios. Para desarrollos pequeños de menor impacto, las pruebas automatizadas podrían reducirse para abarcar principalmente escenarios Crear/Actualizar y Eliminar en lugar de escenarios de Lectura.

Escribir pruebas es un arte en sí mismo y una que un desarrollador mejora con el tiempo. Sin escribir ningún código de prueba, un desarrollador experimentado podría crear un proyecto usando MVC o formularios web en un momento similar. Las pruebas de escritura agregarían quizás un 20% al tiempo de desarrollo, pero reducirían considerablemente el tiempo para las pruebas del sistema.

Tener las pruebas en su lugar también reduce considerablemente el tiempo necesario para implementar cambios y si un cambio es significativo, en realidad puede permitir que el cambio tenga lugar donde de otra manera sería demasiado arriesgado o demasiado lento.

1.2.Adheres a principios del buen diseño de software

ASP.MVC sigue ciertos principios trillados de diseño de software buena y fácil de mantener, tales como:

“Don’t Repeat Yourself (DRY) 
“Separation of Concerns” (SoC) 

Separación de preocupaciones (no mezclar la lógica de interfaz de usuario con comportamiento subyacente) es un principio fundamental que existe para ayudar a los desarrolladores a lidiar con la complejidad. Mezclar diferentes responsabilidades dentro del mismo objeto o archivos (como poner la mayor parte de su lógica en el código detrás de archivos como manejar ediciones, cancelar y editar eventos posteriores) invita a problemas de mantenimiento y hace que el código sea difícil de cambiar y difícil de leer. MVC prescribe dónde se deben escribir ciertos tipos de objetos, haciendo que la base de códigos resultante sea mucho más clara y fácil de seguir.

1.3.MVC es preceptivo

Debido MVC sigue buenos principios de diseño de software que es preceptivo acerca de dónde se deben desarrollar ciertos tipos de código. Esto es útil en un entorno de equipo ya que estandariza las estructuras de los proyectos mucho más que en los formularios web. Una vez que los desarrolladores están familiarizados con la estructura de un proyecto MVC, resulta obvio dónde buscar ciertos tipos de código. Esto hará que sea más fácil trabajar en otro código de desarrollador; a) debido a la prescripción yb) porque la ejecución de las pruebas unitarias garantizará que los desarrolladores adicionales no estén rompiendo la funcionalidad existente. También ayuda al desarrollador a tomar decisiones sobre dónde se deben desarrollar ciertos tipos de código y cómo se debe separar el código para permitir un mantenimiento más sencillo. La naturaleza prescriptiva de un proyecto MVC también ha demostrado ser útil ya que permite a los desarrolladores de este equipo hablar sobre problemas y problemas que enfrentan sin tener que conocer la implementación detallada del proyecto.

1.4.MVC permite una fácil integración con los marcos de JavaScript

Desde el lanzamiento de Google Suggest en el año 2004 se ha producido un cambio radical en el desarrollo web del lado del cliente. Este cambio ha sido sobre la implementación de la funcionalidad AJAX. AJAX (abreviatura de Asynchronous JavaScript and XML) es un grupo de técnicas relacionadas que se utilizan en el lado del cliente para crear aplicaciones web ricas, interactivas y receptivas. Con AJAX, las aplicaciones web pueden recuperar datos del servidor de forma asincrónica en el fondo sin interferir con la visualización y el comportamiento de la página existente. AJAX usa una combinación de HTML y CSS para marcar y personalizar la información. Se accede al DOM con JavaScript para mostrar dinámicamente y para permitir que el usuario interactúe con la información presentada.

Este tipo de funcionalidad solía ser bastante difícil de programar debido a la implementación variable del cumplimiento de estándares en todos los navegadores. Esto se ha convertido en un problema menos a) debido a un mejor cumplimiento de los estándares yb) de manera más significativa debido al desarrollo de marcos de JavaScript como JQuery que le permiten escribir código que funciona en todos los navegadores.

La 'V' en MVC, significa 'Ver' y se ocupa solo de la entrega del front-end de HTML y JavaScript. MVC permite la fácil integración con frameworks JS como JQuery y simplifica enormemente la creación de experiencias ricas en el lado del cliente usando dichos frameworks. (Nota: JQuery ahora viene como estándar con ASP.NET 2010 y Microsoft ahora está contribuyendo de manera activa y quizás tardía a la base de código de JQuery).

Esta integración simplificada facilita el desarrollo de experiencias de usuario que coincidan con el rendimiento que los usuarios esperan de un sitio web moderno. Este es un punto sutil, pero es uno que creo que no deberíamos ignorar. Nuestros clientes desarrollarán cada vez más expectativas implícitas sobre cómo interactúan con los sitios web en función de su uso de Internet en general. En la actualidad, existen muy pocos sitios comerciales que no implementen la funcionalidad AJAX y la hábil interfaz interactiva que ofrece. El hecho de que no analicemos el desarrollo de front end ricos hará que nuestra producción se compare cada vez más desfavorablemente con las expectativas de nuestros clientes.

1.5.Consumption de la web está cambiando (rápido)

Morgan Stanley predice que más personas tendrán acceso a la web mediante el uso de dispositivos móviles de Internet fija/escritorio a mediados de 2013 (es decir, dentro de 2 1/2 años).

(http://gigaom.files.wordpress.com/2010/04/mobile-chart2.png)

¿Qué tiene esto que ver con MVC? Creo que MVC es una mejor plataforma para entregar contenido a una variedad de dispositivos debido a su fácil implementación de las bibliotecas JS y la facilidad con la que le permite al desarrollador controlar el contenido de la respuesta HTTP (se explica en detalle a continuación).

1) Implementación más fácil de AJAX: una conexión 3G en un dispositivo móvil actualmente no tiene ancho de banda comparable con banda ancha. AJAX mejora mucho el rendimiento de las páginas en conexiones más lentas, ya que solo devuelve los datos requeridos (formateados por el navegador) en lugar de los datos y la página completa.

2) MVC le da al desarrollador un mayor control sobre los datos devueltos por una solicitud. Esto se ve mejor con ejemplos de código reales pero dentro de dos líneas de código, un desarrollador puede devolver una página completa (con página maestra, etc.), JSON (notación de objetos JavaScript) que es el formato de datos preferido en solicitudes AJAX, XML o cualquier otro formato necesario.

Ejemplo de código:

//Try doing this in webforms 

If (IsJson) 

{ 

return this.JSON(model); 

} 

Else if (IsXml) 

{ 

return new XMLResult(model); 

} 

else 

{ 

return View(model)l; 

} 

Este nivel de control es mucho más difícil de lograr con los formularios web. Tener un control estricto sobre lo que se devuelve en la respuesta HTTP simplifica el desarrollo de contenido para una gama de dispositivos, como navegadores tradicionales o aplicaciones de teléfonos inteligentes, o para aplicaciones que se encuentran dentro de otras plataformas como SharePoint. 2.1.1.6.MVC utiliza URL RESTFul

MVC le da al desarrollador control total sobre la URL. Con WebForms, la URL coincide con la estructura de archivos subyacente del código. Con MVC tiene lo que se conoce como 'Registrador de ruta', que es un archivo que combina las URL con los recursos que manejarán la solicitud.

Hay dos ventajas de tener un control total sobre la URL:

i) Si un proyecto tiene un requisito para la URL legible por humanos del o Search Engine Optimization entonces el control URL es una gran ventaja. Consideremos el siguiente:

www.mywebapplication.com/users/alex.hardman (es decir Recuperar usuario con nombre alex.hardman)

en contraposición a

www.mywebapplication/users/getuser.aspx (nombre pasado en sesión) o www.mywebapplication/users/getuser.aspx? username = alex.hardman

La primera URL (a través de MVC) es más humana legible y amigable para los motores de búsqueda (por ejemplo, todos los elementos iguales se clasificarán por todos los motores de búsqueda principales).

ii) La segunda ventaja de tener un control total sobre las URL se relaciona con el impulso actual en la investigación de Humanidades Digitales para la preservación de datos. Sin entrar en demasiados detalles, un aspecto de la preservación de datos implica la creación de "URL permanentes" e "identificadores únicos de recursos" (uri). El uso estándar de las variables de sesión y el estado de visualización en formularios web significa que la misma url puede referirse a múltiples elementos de datos (donde los parámetros de consulta se ingresan a través del estado de vista). El resultado es que los datos a los que se accede en estos datos señoriales no tienen un identificador único de recursos (es decir, una dirección única en la web). Esto significa que los elementos de datos no se pueden referenciar ya que no tiene una dirección única en la web y evita su inclusión en iniciativas de Datos Vinculados y otras iniciativas de investigación que requieren un URI.

La combinación de URI y la facilidad con que un sistema puede devolver formatos de datos legibles por computadora como XML (ver arriba) pone a los desarrolladores en ventaja cuando se trata de las mejores prácticas en técnicas de preservación y conservación de datos de Humanidades. En el reciente taller de Oxford 'Bases de datos de investigación en humanidades, ¿dónde está el próximo?', Hubo un fuerte énfasis en la curaduría de datos de investigación de Humanidades con uri y formatos de datos legibles por computadora. Esto es algo que podríamos 'vender' como claramente ventajoso para nuestros clientes de investigación.

+1

El OP tuvo ese tiempo corto -hace más de dos años-. Pero, aún así, es útil para otras personas que tropiezan con esta pregunta. Considere reformatear su pregunta y usar el marcado para hacer que el código de muestra y las direcciones URL y los encabezados sean más fáciles de ubicar y leer. =) –

2

En realidad, 15 minutos no es suficiente para profundizar realmente en ninguno de los beneficios que obtiene de MVC. Supongo que la persona con la que trabaja está más familiarizada con Asp.net Web Forms. Sin excavar demasiado los patrones de diseño y por qué MVC es genial, lo más comprensible que se puede pasar será el uso fácil de Ajax.

1. jQuery – Ajax 
2. Routing – SEO and No need for Custom URL rewriting 
3. Partial-View – showing tabular data and use server-side Ajax to sort and a client side example using jQuery 

La mayoría de las veces cuando entro en tiendas que han desarrollado Formularios Web, la pregunta más común es dónde están mis controles; más específicamente, ¿dónde está el repetidor o la cuadrícula de datos? Poner juntos este tipo de demostración daría tanto como puedas en 15 minutos y responder a las preguntas más comunes.

Cuestiones relacionadas