Существует такая шумиха о ASP.NET MVC в эти дни, но истина - то, что веб-формы ASP.NET не идут никуда в течение некоторого времени. Есть ли какой-либо способ для текущих разработчиков оптимизировать веб-формы ASP.NET для выполнения с такой скоростью, как ASP.NET MVC?
Я заметил значительную разницу в скорости между ASP.NET веб-формами ASP.NET и MVC. MVC является намного более мгновенным и загружает страницы быстрее, чем веб-формы. Я могу достигнуть того же с веб-формами ASP.NET путем оптимизации его? Если да, что Вы рекомендовали бы?
В директиве вашей страницы сделайте следующее:
<%@ 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, если вы подходите к своему веб-приложению с учетом производительности, но очень легко сделать его намного медленнее, если вы хотите просто игнорировать производительность и просто завершить приложение.
Одна из причин этого связана с ViewState , среди прочего раздутого кода, отображаемого как часть
и т. д. Вам следует сосредоточиться на весе страницы.
При прочих равных, это основная разница в производительности, о которой я знаю.
Есть одна вещь, которая может сделать ASP.NET медленным, о которой упоминали другие: Viewstate. Это особенно верно для вызовов ajax. Полный Viewstate публикуется при использовании UpdatePanels.
Тем не менее, есть одна вещь, которая сделает ваш сайт ASP.NET лучше, чем сайт ASP.NET MVC: Кэширование. ASP.NET позволяет кэширование в виде пончика: вы можете определить правила кэширования на основе WebControll. В ASP.NET MVC этого сделать нельзя.
Если вы действительно считаете, что у вас проблемы со скоростью, попробуйте найти узкие места. Это могут быть вызовы базы данных (используйте sql-profiler для проверки), это может быть связано с html (используйте yslow) или это может быть связано с приложением (попробуйте профилировщик, например, от redgate ).
Технология не имеет значения, как вы реализуете свое приложение. Можно утверждать, что ViewState будет иметь значение, но это также деталь реализации. ViewState не требуется, и вы также можете оставить его на сервере. В конце концов, обе эти технологии доставляют HTML через HTTP.
Это случай двух разных инструментов для двух разных подходов к решению проблем и попытки сравнения между ними?
Я заметил довольно ощутимую разницу в скорости
Возможно, сначала вам следует правильно измерить производительность определенным способом. Тогда, если у вас действительно есть разница, будет гораздо более понятно, откуда она берется и как устранить эту разницу в производительности.