Zacząłem pracę w MVC około rok temu, byłem zainspirowany, ale nie zrobiło to na mnie wrażenia.
Brzydzę się stanem widoku i uważam go za źródło wszelkiego zła związanego z ASP.NET. Dlatego po prostu go nie używam i, szczerze mówiąc, dlaczego miałbyś to robić?
Zasadniczo wziąłem koncepcję ASP.NET MVC Framework i zbudowałem to na swój własny sposób. Zmieniłem jednak kilka rzeczy. Zbudowałem mój kod opakowujący kontroler lub kod routingu URL wokół dynamicznej rekompilacji.
Teraz chciałbym powiedzieć, że aplikacje ASP.NET MVC będą szybsze w zależności od tego, jak ich używasz. Jeśli całkowicie zrezygnujesz z WebForms, będziesz szybszy, ponieważ cykl życia ASP.NET i model obiektowy są ogromne.
Kiedy piszesz, tworzysz instancję armii ... nie czekaj, legion obiektów, które będą uczestniczyć w renderowaniu twojego widoku. Będzie to wolniejsze, niż gdybyś wyraził minimalną ilość zachowania na samej stronie ASPX. (Nie obchodzi mnie abstrakcja silnika widoku, ponieważ obsługa stron ASPX w Visual Studio jest przyzwoita, ale całkowicie porzuciłem WebForms jako koncepcję i zasadniczo każdą strukturę ASP.NET z powodu rozdęcia kodu lub braku możliwości zmiany rzeczy, które łączą moją aplikację).
Znalazłem sposoby polegające na dynamicznej rekompilacji (System.Reflection.Emit) do emitowania obiektów i kodu specjalnego przeznaczenia w razie potrzeby. Wykonywanie tego kodu jest szybsze niż odbicie, ale początkowo jest kompilowane za pośrednictwem usługi odbicia. Dało to mojej strukturze o smaku MVC doskonałą wydajność, ale także bardzo statycznie typizowaną. Nie używam ciągów i kolekcji par nazwa / wartość. Zamiast tego moje niestandardowe usługi kompilatora przechodzą i przepisują post formularza do akcji kontrolera, do której jest przekazywany typ referencyjny. Za kulisami dzieje się wiele rzeczy, ale ten kod jest szybki, dużo szybszy niż WebForms lub MVC Framework.
Ponadto nie piszę adresów URL, piszę wyrażenia lambda, które są tłumaczone na adresy URL, które później informują, którą akcję kontrolera należy wywołać. Nie jest to szczególnie szybkie, ale pokonuje uszkodzone adresy URL. To tak, jakbyś miał zarówno statycznie wpisane zasoby, jak i statycznie wpisane obiekty. Aplikacja internetowa z typem statycznym? To jest to czego chcę!
Zachęcałbym więcej osób do wypróbowania tego.