Empecé a trabajar en MVC hace aproximadamente un año, estaba inspirado pero no impresionado.
Odio el estado de 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 honesto, ¿por qué lo harías?
Tomé básicamente el concepto ASP.NET MVC Framework y lo construí a mi manera. Aunque cambié un par de cosas. Construí mi código de envoltura de controlador o código de ruteo de URL alrededor de 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 en función de cómo lo usa. Si abandona completamente WebForms, será más rápido porque el ciclo de vida de ASP.NET y el modelo de objetos es enorme.
Cuando estás escribiendo estás instanciando un ejército ... no, espera, una legión de objetos que participarán en la representación de tu vista. Esto va a ser más lento que si tuvieras que expresar la cantidad mínima de comportamiento en la página ASPX. (No me importa la abstracción del motor de vista porque la compatibilidad con las páginas ASPX en Visual Studio es aceptable, pero he descartado completamente WebForms como concepto y básicamente cualquier estructura ASP.NET debido a la saturación del código o al no poder cambiar el cosas que conectan mi aplicación).
He encontrado formas de confiar en la recompilación dinámica (System.Reflection.Emit) para emitir objetos especiales y codificar cuando sea necesario. La ejecución de este código es más rápida que la reflexión, pero inicialmente se desarrolló a través del servicio de reflexión. Esto le ha dado a mi framework MVC con sabor un gran desempeño pero también muy tipado estáticamente. No utilizo cadenas y colecciones de pares nombre/valor. En cambio, mis servicios de compilación personalizados van en una reescritura de una publicación de formulario a una acción de controlador que pasa un tipo de referencia. Detrás de la escena hay muchas cosas sucediendo, pero este código es rápido, mucho más rápido que WebForms o MVC Framework.
Además, no escribo direcciones URL, escribo expresiones lambda que se traducen en URL que luego indican qué acción del controlador invocar. Esto no es particularmente rápido, pero es mejor que tener URL rotas. Es como si tuviera recursos tipados estáticamente, así como objetos tipados estáticamente. ¿Una aplicación web estáticamente tipada? ¡Eso es lo que quiero!
Animo a más personas a probar esto.
Después de trabajar con WebForms desde que salieron, ¡nunca volveré voluntariamente! MVC me ha robado mi <3 - ¡y este sitio funciona increíblemente en Beta 5! –
¿Qué pasa con todas las revisiones de revisión en esta pregunta ..? – Nick
@Nick: el OP está reduciendo cualquiera de las modificaciones y eliminando cualquier comentario que las explique. – GEOCHET