Можно ли оптимизировать ASP.NET WebForms для работы так же быстро, как ASP.NET MVC? - PullRequest
9 голосов
/ 13 июля 2010

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

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

Ответы [ 6 ]

9 голосов
/ 13 июля 2010

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

8 голосов
/ 13 июля 2010

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

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

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

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

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

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

5 голосов
/ 13 июля 2010

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

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

3 голосов
/ 13 июля 2010

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

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

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

3 голосов
/ 13 июля 2010

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

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

1 голос
/ 13 июля 2010

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

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