Comecei a trabalhar em MVC há cerca de um ano, fiquei inspirado, mas não impressionado.
Eu detesto o estado de exibição e o vejo como a raiz de todos os males em termos de ASP.NET. É por isso que eu simplesmente não o uso e, para ser totalmente honesto, por que você usaria?
Peguei basicamente o conceito do ASP.NET MVC Framework e o construí do meu próprio jeito. Porém, mudei algumas coisas. Criei meu código de empacotamento do controlador ou código de roteamento de URL em torno da recompilação dinâmica.
Agora, eu iria mais longe e diria que os aplicativos ASP.NET MVC serão mais rápidos com base em como você os usa. Se você abandonar completamente os WebForms, será mais rápido porque o ciclo de vida do ASP.NET e o modelo de objeto são enormes.
Quando você está escrevendo, está instanciando um exército ... não espere, uma legião de objetos que participarão da renderização de sua visão. Isso vai ser mais lento do que se você expressasse a quantidade mínima de comportamento na própria página ASPX. (Eu não me importo com a abstração do mecanismo de exibição porque o suporte para páginas ASPX no Visual Studio é decente, mas eu abandonei completamente WebForms como um conceito e basicamente qualquer estrutura ASP.NET devido ao inchaço do código ou não ser capaz de alterar o coisas que conectam meu aplicativo).
Eu encontrei maneiras de confiar na recompilação dinâmica (System.Reflection.Emit) para emitir códigos e objetos de propósito especial sempre que necessário. A execução desse código é mais rápida do que a reflexão, mas inicialmente construída por meio do serviço de reflexão. Isso deu ao meu framework com sabor MVC um ótimo desempenho, mas também com tipos muito estáticos. Eu não uso strings e coleções de pares de nome / valor. Em vez disso, meus serviços de compilador personalizado reescrevem um post de formulário para uma ação do controlador que está passando um tipo de referência. Nos bastidores, há muitas coisas acontecendo, mas esse código é rápido, muito mais rápido do que WebForms ou MVC Framework.
Além disso, eu não escrevo URLs, eu escrevo expressões lambda que são traduzidas em URLs que mais tarde informam qual ação do controlador invocar. Isso não é particularmente rápido, mas é melhor do que ter URLs quebrados. É como se você tivesse recursos com tipos estáticos, bem como objetos com tipos estáticos. Um aplicativo da Web com tipagem estática? Isso e o que eu quero!
Eu encorajaria mais pessoas a experimentar isso.