Я начал работать в MVC около года назад, был вдохновлен, но не впечатлен.
Я ненавижу состояние просмотра и вижу в нем корень всех зол с точки зрения ASP.NET. Вот почему я просто не использую его, и, честно говоря, зачем вам?
Я взял в основном концепцию ASP.NET MVC Framework и построил ее по-своему. Однако я изменил пару вещей. Я построил свой код оболочки контроллера или код маршрутизации URL вокруг динамической перекомпиляции.
Теперь я бы сказал, что приложения ASP.NET MVC будут работать быстрее в зависимости от того, как вы их используете. Если вы полностью откажетесь от WebForms, вы станете быстрее, потому что жизненный цикл ASP.NET и объектная модель огромны.
Когда вы пишете, вы создаете экземпляр армии ... нет, подождите, легион объектов, которые будут участвовать в рендеринге вашего представления. Это будет медленнее, чем если бы вы выражали минимальное количество поведения на самой странице ASPX. (Меня не волнует абстракция механизма просмотра, потому что поддержка страниц ASPX в Visual Studio достойна, но я полностью отказался от WebForms как концепции и практически любой платформы ASP.NET из-за раздувания кода или невозможности изменить вещи, которые связаны с моим приложением).
Я нашел способы полагаться на динамическую перекомпиляцию (System.Reflection.Emit) для создания объектов и кода специального назначения, когда это необходимо. Выполнение этого кода происходит быстрее, чем отражение, но изначально оно построено через службу отражения. Это дало моему фреймворку со вкусом MVC отличную производительность, но при этом очень статически типизировано. Я не использую строки и коллекции пар имя / значение. Вместо этого мои собственные службы компилятора переписывают сообщение формы в действие контроллера, которому передается ссылочный тип. За кулисами происходит множество вещей, но этот код работает быстро, намного быстрее, чем WebForms или MVC Framework.
Кроме того, я не пишу URL-адреса, я пишу лямбда-выражения, которые преобразуются в URL-адреса, которые позже сообщают, какое действие контроллера вызывать. Это не очень быстро, но лучше, если URL-адреса не работают. Это как если бы у вас были статически типизированные ресурсы, а также статически типизированные объекты. Статически типизированное веб-приложение? Это то, что я хочу!
Я бы посоветовал большему количеству людей попробовать это.