Ich habe vor ungefähr einem Jahr bei MVC angefangen, war begeistert, aber nicht beeindruckt.
Ich hasse den Ansichtsstatus und sehe ihn als die Wurzel allen Übels in Bezug auf ASP.NET. Deshalb benutze ich es einfach nicht und um ganz ehrlich zu sein, warum sollten Sie?
Ich habe im Grunde das ASP.NET MVC Framework-Konzept übernommen und es auf meine eigene Weise erstellt. Ich habe jedoch ein paar Dinge geändert. Ich habe meinen Controller-Wrapping-Code oder URL-Routing-Code um die dynamische Neukompilierung herum erstellt.
Nun würde ich sogar sagen, dass ASP.NET MVC-Anwendungen je nach Verwendung schneller sind. Wenn Sie WebForms vollständig verlassen, sind Sie schneller, da der ASP.NET-Lebenszyklus und das Objektmodell sehr umfangreich sind.
Wenn Sie schreiben, instanziieren Sie eine Armee ... keine Wartezeit, eine Legion von Objekten, die an der Wiedergabe Ihrer Ansicht beteiligt sind. Dies wird langsamer sein, als wenn Sie das minimale Verhalten auf der ASPX-Seite selbst ausdrücken möchten. (Die Abstraktion der View Engine ist mir egal, da die Unterstützung für ASPX-Seiten in Visual Studio anständig ist, aber ich habe WebForms als Konzept und im Grunde jedes ASP.NET-Framework vollständig verworfen, weil der Code aufgebläht ist oder das nicht geändert werden kann Dinge, die meine Bewerbung verkabeln).
Ich habe Möglichkeiten gefunden, mich auf die dynamische Neukompilierung (System.Reflection.Emit) zu verlassen, um bei Bedarf spezielle Objekte und Code auszugeben. Die Ausführung dieses Codes ist schneller als die Reflexion, wird jedoch zunächst über den Reflexionsdienst erstellt. Dies hat meinem MVC-aromatisierten Framework eine großartige Leistung verliehen, aber auch eine sehr statische Typisierung. Ich verwende keine Zeichenfolgen und Namens- / Wertepaar-Sammlungen. Stattdessen schreiben meine benutzerdefinierten Compilerdienste einen Formularbeitrag in eine Controller-Aktion, der ein Referenztyp übergeben wird. Hinter den Kulissen ist viel los, aber dieser Code ist schnell, viel schneller als WebForms oder das MVC Framework.
Außerdem schreibe ich keine URLs, sondern Lambda-Ausdrücke, die in URLs übersetzt werden, die später angeben, welche Controller-Aktion aufgerufen werden soll. Dies ist nicht besonders schnell, aber es ist besser als defekte URLs. Es ist, als hätten Sie sowohl statisch typisierte Ressourcen als auch statisch typisierte Objekte. Eine statisch typisierte Webanwendung? Das ist was ich will!
Ich würde mehr Leute ermutigen, dies auszuprobieren.