Сделайте ваше приложение .NET менее причудливым

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

В этом посте подробно описан параметр, который вы, возможно, не включили, особенно для старых устаревших приложений, что может привести к тому, что вы не сможете воспользоваться всеми замечательными функциями, преимуществами и исправлениями ошибок, которые предоставляет платформа .NET.

Давайте посмотрим, является ли ваше приложение причудливым

Первое, что вам нужно сделать, это открыть web.config в вашем приложении. Если вы посмотрите на раздел <system.web>, вы должны увидеть что-то похожее на следующее (этот конкретный случай — более старое приложение ASP.NET MVC):

<system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" /> </authentication> <pages> <namespaces> <add namespace="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> </system.web>

Внешний вид этого раздела может различаться, но он должен иметь относительно похожую структуру. Раздел, который нас действительно волнует в этом посте, будет разделом <httpRuntime>:

<httpRuntime targetFramework="4.5" />

Если у вас установлено свойство targetFramework, вы можете не читать этот пост; ты хороший. Если вы этого не сделаете, то вы должны прыгать от радости от всех замечательных вещей, которые вот-вот произойдут с вашим приложением. Может показаться немного тривиальным, что несколько маленьких персонажей могут так повлиять на ваше приложение. application, поэтому давайте поговорим о том, что именно означает это свойство и что оно делает.

О Боже! Мое приложение странное — что мне делать?

Если вы находитесь в причудливой лодке, упомянутой выше, тогда прекратите то, что вы делаете прямо сейчас, и добавьте это в свой web.config. Я могу подождать, на самом деле, вы можете закрыть браузер и не продолжать чтение (хотя подумайте о том, чтобы купить мне пива, если мы когда-нибудь пересечемся в реальном мире), потому что теперь все в вашем приложении должно быть лучше . Но почему?

Все это сводится к тому, что .NET Framework фактически разрешает версию .NET, на которую должно ориентироваться ваше приложение, но ключ здесь заключается в следующем: Если в web.config нет атрибута <httpRuntime targetFramework>, предполагается, что что приложению нужно поведение 4.0, которое вам абсолютно не нужно.

Запустите Internet Explorer, посетите самый современный веб-сайт, который вы только можете себе представить, а затем включите режим Quirks. Наблюдая за тем, как надежды и мечты о сайте угасают, превращаясь в беспорядочный беспорядок, знайте, что отсутствие установленного targetFramework делает то же самое с вашим веб-приложением.

По сути, если у вас не установлен этот атрибут, ваше веб-приложение будет работать так, как будто оно нацелено на версию .NET Framework 2009 года. Без этого большинство преимуществ, которые дает фреймворк для производительности, надежности и безопасности, улетучиваются в окно. Добавив его, вы удивитесь, как вам удалось продвинуться так далеко, упустив все эти невероятные функции и улучшения.

Деквиркинг в действии

Давайте посмотрим, как может выглядеть применение этого к реальному приложению. Во-первых, мы просто откроем целевую страницу большого корпоративного приложения, над которым я работал в прошлом:

И затем после применения исправления:

Итак, в чем здесь большие различия:

  • Незначительные улучшения сжатия. Общий размер полезной нагрузки был уменьшен с 11,3 МБ до 11,2 МБ, что, хотя и не очень важно, важно (особенно при масштабировании).
  • Значительное сокращение времени загрузки клиента — время загрузки контента для самого DOM было сокращено на несколько порядков примерно с 3 секунд до 100 миллисекунд; огромное улучшение.
  • Общая более высокая воспринимаемая производительность. Это более быстрое время загрузки на клиенте, которое почти вдвое сократило общее время загрузки и значительно увеличило время рендеринга, будет абсолютно ощутимо для конечного пользователя.

Если вы больше любите графики, мы можем увидеть, как это будет выглядеть здесь ниже:

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

Первоначально опубликовано на rion.io 10 февраля 2019 г.