Действительно ли возможно оптимизировать ASP.NET WebForms для выполнения с такой скоростью, как ASP.NET MVC?

Существует такая шумиха о ASP.NET MVC в эти дни, но истина - то, что веб-формы ASP.NET не идут никуда в течение некоторого времени. Есть ли какой-либо способ для текущих разработчиков оптимизировать веб-формы ASP.NET для выполнения с такой скоростью, как ASP.NET MVC?

Я заметил значительную разницу в скорости между ASP.NET веб-формами ASP.NET и MVC. MVC является намного более мгновенным и загружает страницы быстрее, чем веб-формы. Я могу достигнуть того же с веб-формами ASP.NET путем оптимизации его? Если да, что Вы рекомендовали бы?

9
задан Sahat Yalkabov 13 July 2010 в 18:46
поделиться

6 ответов

В директиве вашей страницы сделайте следующее:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="TestApp._Default" EnableViewState="false" %>

В основном выключите ViewState будет составлять большую часть разницы в производительности страницы. Ограничение использования элементов управления WebForm также сделает ваш HTML менее подробным, поскольку они, как правило, создают очень подробный HTML.

С другой стороны, это почти все равно что лишить WebForms некоторых значительных преимуществ. Элементы управления и абстрагирование состояния с помощью ViewState - одна из основных причин того, почему сегодня WebForms так популярны.

Я все еще много занимаюсь разработкой WebForms, а также занимаюсь MVC. Знание обоих и их сильных сторон поможет вам создать эффективное приложение в любой среде. Когда я создаю какое-либо новое приложение WebForms, первое, что я делаю, это оборачиваю страницы в Panel , не забудьте отключить ViewState для всей панели. По мере того, как я разрабатываю и нахожу применение ViewState (например, для экономии времени или упрощения вещей), я включаю его от случая к случаю, поэтому я понимаю, почему я его использую, и принимаю осознанное решение. добавить накладные расходы на мою страницу.

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

8
ответ дан 4 December 2019 в 07:34
поделиться

Одна из причин этого связана с ViewState , среди прочего раздутого кода, отображаемого как часть и т. д. Вам следует сосредоточиться на весе страницы.

При прочих равных, это основная разница в производительности, о которой я знаю.

5
ответ дан 4 December 2019 в 07:34
поделиться

Есть одна вещь, которая может сделать ASP.NET медленным, о которой упоминали другие: Viewstate. Это особенно верно для вызовов ajax. Полный Viewstate публикуется при использовании UpdatePanels.

Тем не менее, есть одна вещь, которая сделает ваш сайт ASP.NET лучше, чем сайт ASP.NET MVC: Кэширование. ASP.NET позволяет кэширование в виде пончика: вы можете определить правила кэширования на основе WebControll. В ASP.NET MVC этого сделать нельзя.

Если вы действительно считаете, что у вас проблемы со скоростью, попробуйте найти узкие места. Это могут быть вызовы базы данных (используйте sql-profiler для проверки), это может быть связано с html (используйте yslow) или это может быть связано с приложением (попробуйте профилировщик, например, от redgate ).

3
ответ дан 4 December 2019 в 07:34
поделиться

Технология не имеет значения, как вы реализуете свое приложение. Можно утверждать, что ViewState будет иметь значение, но это также деталь реализации. ViewState не требуется, и вы также можете оставить его на сервере. В конце концов, обе эти технологии доставляют HTML через HTTP.

9
ответ дан 4 December 2019 в 07:34
поделиться

Это случай двух разных инструментов для двух разных подходов к решению проблем и попытки сравнения между ними?

1
ответ дан 4 December 2019 в 07:34
поделиться

Я заметил довольно ощутимую разницу в скорости

Возможно, сначала вам следует правильно измерить производительность определенным способом. Тогда, если у вас действительно есть разница, будет гораздо более понятно, откуда она берется и как устранить эту разницу в производительности.

3
ответ дан 4 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: