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 ....
- 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.
¿Por qué el voto a favor? Especialmente considerando que han pasado 4 años desde que hice la pregunta. –