Новые функции и улучшения в .Net Framework 4.5

Microsoft .Net Framework сильно повзрослела за последние несколько лет. Было введено множество новых функций и улучшений, чтобы оптимизировать его и сделать его быстрым, безопасным, более стабильным и высокопроизводительным. В этой статье я хотел бы представить с высоты птичьего полета значительные улучшения в .Net Framework 4.5.x.

Страшные исключения нехватки памяти

Это ужасная ошибка, которая может стать для вас кошмаром. Исключения нехватки памяти могут прервать поток управления вашим приложением, даже если у вас установлено достаточно физической памяти. Ты смеешься? Ни за что! Позвольте мне объяснить, почему это может произойти, и как эта проблема решена в .Net Framework 4.5.

Объекты, созданные управляемой средой, хранятся в куче. Через некоторое время куча может стать фрагментированной из-за создания и удаления объектов. Фрагментация - это разбросанные дыры в памяти (свободная память). В таком случае вы часто будете наблюдать исключения Out of Memory, если ваше приложение использует большой объем памяти и потому что среда выполнения не сможет выделить пространство, когда и если это необходимо, даже если оно может быть доступно.

Звучит странно? Что ж, сумма дыр в памяти может быть достаточной для этого запроса, но поскольку эти дыры в памяти разбросаны, среда выполнения не может их использовать.

Сжатие кучи больших объектов по запросу

Сжатие кучи больших объектов по требованию было недавно введено для сжатия кучи и устранения фрагментации кучи. Сжатие подразумевает сжатие всех этих разрозненных дыр в памяти в один блок. Эта функция доступна (только по запросу) в .Net Framework 4.5.1 для устранения проблем с исключениями Out of Memory. Чтобы включить эту функцию, вам необходимо установить свойство LargeObjectHeapCompactionMode.

Кстати, это свойство может иметь одно из двух значений: Default и CompactOnce. Первый параметр if игнорирует уплотнение кучи больших объектов во время цикла сборки мусора. Если вы используете последнее, куча больших объектов будет уплотнена во время следующего цикла.

Поддержка устойчивости подключения ADO.Net

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

Уменьшено время запуска: оптимизация профиля

Оптимизация профиля - это функция, представленная в .Net Framework 4.5, которая минимизирует время запуска приложения. Как это работает? Профиль - это файл, который содержит методы, которые потребуются приложению во время его запуска. Когда приложение запускается, JIT-компилятор выполняется в фоновом потоке и на нескольких процессорах для генерации собственного кода из кода IL.

Улучшения сборки мусора: представлен серверный сборщик мусора

Управляемая среда .Net использует сборку мусора для очистки неиспользуемых или неиспользуемых объектов - объектов, которые больше не нужны. В более ранних версиях .Net Framework сборщик мусора приостанавливал потоки приложения, когда он был занят очисткой памяти. Это было серьезным узким местом в производительности, поскольку вашему приложению приходилось ждать, пока сборщик мусора завершит свою работу.

С .Net Framework 4.5 это больше не проблема; Серверный сборщик мусора был недавно введен для облегчения очистки объектов второго поколения с использованием фонового потока и, следовательно, для минимизации нагрузки на основной поток сборщика мусора, поскольку потоки приложения гораздо реже приостанавливаются. В .Net Framework 4.5 фоновая сборка мусора поддерживается как на сервере, так и на рабочей станции. Также теперь поддерживается параллельная сборка мусора; при необходимости выделенный поток выполняет сборку мусора.

Заметные улучшения в .Net Framework 4.5.2

Microsoft недавно выпустила .Net Framework 4.5.2. О выпуске Microsoft сообщила в блоге .Net Framework. Вот ссылка: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Помимо улучшений в профилировании и отладке, в .NET Framework 4.5.2 есть заметные улучшения в ASP.Net. Теперь вы можете использовать методы HostingEnvironment.QueueBackgroundWorkItem для асинхронного планирования небольших фоновых задач. Чтобы проверить и изменить заголовки и коды ответов, вы можете использовать методы HttpResponse.AddOnSendingHeaders и HttpResponseBase.AddOnSendingHeaders. Вы можете обратиться к этой статье MSDN для дальнейшего чтения: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Что будет дальше?

В ноябре прошлого года Microsoft выпустила предварительную версию .Net Framework 4.6. Вы можете загрузить копию .Net Framework 4.6 отсюда: //www.microsoft.com/en-us/download/details.aspx?id=44928

Софтверный гигант также объявил, что после января 2016 года он откажется от поддержки .Net Framework версий с 4.x по 4.5.1. Подробнее читайте здесь: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx