Para la creación de esta Web he usado la versión MVC 5 con Visual Studio 2013 Express y actualmente Visual Comunity 2015.
Por mi experiencia tanto en MVC como en Webforms tengo que decir que no es mejor ni peor, es simplemente otro patrón en el que desarrollar y anoto algunos puntos importantes:
El Enrutamiento aunque ya disponible también para WebForms se adapta perfectamente a este patrón y añade seguridad a las páginas.
ASP.NET WebForms - ViewState: el mantenimiento del estado automático ayuda mucho en la persistencia de datos. MVC por el contrario se basa en la verdadera naturaleza "sin estado" de la web HTTP y ejecuta rutas para realizar las acciones y peticiones.
ASP.NET WebForms logró separar el Front de la logica de datos y evitar el "spaguetti code" de su antecesor asp clasico. MVC reintroduce el lenguaje de servidor (asp.net o Razor View Engine) en vistas, mi estilo es evitar lógica y tratar de reducirlo a iteraciones sobre un modelo para que la vista haga su funcion principal: mostrar datos.
Aunque depende del proyecto me inclino más por una estructura API REST con ASP.NET WEB API que puede ser consumida desde cualquier tipo de interfaz (móvil, web, backend) en cualquier entorno con estructuras de JSON utilizando AngularJS, Jquery, Javascript, etc.
Trabajo con Razor(CSHTML) frente a ASPX
como motor para las vistas por dejar el código más limpio, prevenir ataques cross-site scripting xss y su soporte para
pruebas unitarias tdd aunque sea un poco más lento.
Extiendo HTMLHelpers para customizarlos si procede.
Para la maquetación utilizo HTML5 con LESS (variables y mixins) de Bootstrap transformado a CSS3 gracias al componente dotless de NuGet
Tengo experiencia con Kendo UI: Grid, DropDownList, MultiSelect, Upload, etc.
Para Proyectos MVC y a efectos de tener todo lo más modularizado posible, la estructura que suelo utilizar es la de Entity FrameWork como Modelo, Vistas y ViewModels como modelo intermedio para su representación en dichas vistas. Para el mapeo de Entidad a ViewModel y viceversa utilizo la librería AutoMapper añadiendo posteriormente las propiedades "extras" que necesite la vista en cuestión. Estas funciones Entity2ViewModel y ViewModel2Entity aparecen como métodos de unas clases llamadas "EntidadMapper".
Cuando la estructura se divide en capas de controlador, servicios y repositorios hago uso de DTOs como estructura de parametros requeridos o respuestas entre capas
Si la estructura no se divide en capas suelo descargar el código de las acciones de los controladores añadiendo una clase por Entidad, "DataWorkers", donde realizar las operaciones profundas como CRUD sobre el EntityFrameWork. Así estos quedan minimizados en tareas de validaciones del modelo enviado y llamadas a DataWorkers.