ASP.NET MVC Performance - PullRequest
       39

ASP.NET MVC Performance

102 голосов
/ 04 сентября 2008

Я нашел несколько диких замечаний, что ASP.NET MVC в 30 раз быстрее, чем ASP.NET WebForms. Какая реальная разница в производительности, была ли она измерена и каковы преимущества в производительности.

Это поможет мне рассмотреть вопрос о переходе с ASP.NET WebForms на ASP.NET MVC.

Ответы [ 14 ]

2 голосов
/ 11 февраля 2009

Я начал работать в 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. Это как если бы у вас были статически типизированные ресурсы, а также статически типизированные объекты. Статически типизированное веб-приложение? Вот чего я хочу!

Я бы посоветовал большему количеству людей попробовать это.

2 голосов
/ 21 октября 2008

Там действительно нет никакого способа ответить на это. MVC по умолчанию использует движок представлений веб-форм и может быть настроен на использование любого количества настраиваемых движков представлений, поэтому, если вы хотите сравнить производительность, вам нужно быть более конкретным.

1 голос
/ 14 марта 2013

Производительность зависит от того, что вы делаете ... Обычно MVC работает быстрее, чем asp.net, в основном из-за отсутствия Viewstate и из-за того, что MVC больше работает с Callback, чем с Postback.

Если вы оптимизируете свою страницу веб-формы, вы сможете добиться той же производительности, что и MVC, но это будет много работы.

Кроме того, существует множество нюансов для MVC (а также для Webform), которые помогут вам улучшить производительность веб-сайта, например объединить и минимизировать ваши CSS и JavaScript, сгруппировать изображения и использовать их в качестве спрайта и т. Д.

Производительность сайта сильно зависит от вашей архитектуры. Чистый код с хорошим разделением задач принесет вам более чистый код и лучшее представление о том, как повысить производительность.

Вы можете взглянуть на этот шаблон " Шаблон Neos-SDI MVC ", который создаст для вас чистую архитектуру с множеством улучшений производительности по умолчанию (см. MvcTemplate веб-сайт) .

0 голосов
/ 13 января 2015

enter image description here

Я провел небольшой эксперимент с нагрузочным тестом VSTS с некоторым базовым кодом и обнаружил, что время отклика ASP.NET MVC вдвое быстрее по сравнению с ASP.NET Webforms. Выше приведен график с графиком.

Вы можете прочитать этот эксперимент с нагрузочным тестом в деталях из этой статьи CP https://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari

Испытание проводилось с использованием следующих спецификаций с использованием VSTS и программного обеспечения для нагрузочного тестирования Telerik: -

Пользователь загружает 25 пользователей.

Продолжительность теста составила 10 минут.

Конфигурация машины DELL 8 ГБ Ram, Core i3

Проект размещен в IIS 8.

Проект создан с использованием MVC 5.

Предполагалось подключение к локальной сети. Так что этот тест пока не учитывает отставание сети.

Браузер в тесте выбран Chrome и Internet Explorer.

Множественное чтение, когда взято во время теста для усреднения неизвестных событий. 7 чтений, где они были приняты, и все чтения опубликованы в этой статье как чтение 1, 2 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...