Comencé a trabajar en MVC hace aproximadamente un año, estaba inspirado pero no impresionado.
Detesto el estado de la vista y lo veo como la raíz de todos los males en términos de ASP.NET. Es por eso que simplemente no lo uso y, para ser perfectamente honesto, ¿por qué lo harías tú?
Básicamente, tomé el concepto de ASP.NET MVC Framework y lo construí a mi manera. Sin embargo, cambié un par de cosas. Construí el código de envoltura de mi controlador o el código de enrutamiento de URL en torno a la recompilación dinámica.
Ahora, iría tan lejos como para decir que las aplicaciones ASP.NET MVC serán más rápidas según cómo las use. Si abandona por completo los WebForms, será más rápido porque el ciclo de vida de ASP.NET y el modelo de objetos son enormes.
Cuando escribes, estás creando una instancia de un ejército ... no, espera, una legión de objetos que participarán en la representación de tu vista. Esto será más lento que si expresara la cantidad mínima de comportamiento en la propia página ASPX. (No me importa la abstracción del motor de vista porque el soporte para páginas ASPX en Visual Studio es decente, pero he eliminado por completo WebForms como concepto y básicamente cualquier marco ASP.NET debido al exceso de código o al no poder cambiar el cosas que conectan mi solicitud).
Encontré formas de confiar en la recompilación dinámica (System.Reflection.Emit) para emitir códigos y objetos de propósito especial cuando sea necesario. La ejecución de este código es más rápida que la reflexión, pero inicialmente se construyó a través del servicio de reflexión. Esto le ha dado a mi framework con sabor a MVC un gran rendimiento pero también muy tipado estáticamente. No uso cadenas y colecciones de pares de nombre / valor. En cambio, mis servicios de compilador personalizados van en una reescritura de una publicación de formulario a una acción de controlador que se pasa un tipo de referencia. Detrás de la escena están sucediendo muchas cosas, pero este código es rápido, mucho más rápido que WebForms o MVC Framework.
Además, no escribo URL, escribo expresiones lambda que se traducen en URL que luego indican qué acción de controlador invocar. Esto no es particularmente rápido, pero es mejor que tener URL rotas. Es como si tuvieras recursos de tipo estático así como objetos de tipo estático. ¿Una aplicación web de tipo estático? ¡Eso es lo que quiero!
Animaría a más personas a probar esto.