.NET Framework 4.8 включает новые функции в следующих областях:
- Базовые классы
- Windows Communication Foundation (WCF)
- Windows Presentation Foundation (WPF)
- Среда CLR
Основной акцент в .NET Framework 4.8, как и прежде, сделан на улучшении специальных возможностей, что позволяет приложению предоставлять соответствующие функции целевой аудитории.
Базовые классы
Ослабление влияния FIPS на шифрование. В предыдущих версиях .NET Framework управляемые классы поставщиков служб шифрования, такие как SHA256Managed, выдавали исключение CryptographicException во время настройки системных библиотек шифрования в режиме FIPS. Это происходит из-за того, что, в отличие от системных библиотек шифрования, сертификация FIPS 140-2 не выполнялась для управляемых версий классов поставщиков служб шифрования. Некоторые разработчики используют виртуальные машины разработки в режиме FIPS, поэтому такие исключения обычно выдаются в рабочих системах.
По умолчанию в приложениях, работающих с .NET Framework 4.8, следующие управляемые криптографические классы больше не вызывают исключение CryptographicException в этом случае:
- MD5Cng
- MD5CryptoServiceProvider
- RC2CryptoServiceProvider
- RijndaelManaged
- RIPEMD160Managed
- SHA256Managed
Вместо этого такие классы перенацеливают криптографические операции на системную библиотеку шифрования. Это изменение эффективно устраняет возможное заблуждение относительно различий между средами разработки и рабочими средами, применяя к собственным и управляемым компонентам одну и ту же политику шифрования. Прежнее поведение приложений, работа которых зависит от этих исключений, можно восстановить, установив для параметра AppContext Switch.System.Security.Cryptography.UseLegacyFipsThrow значение true.
Использование обновленной версии ZLib
Начиная с .NET Framework 4.5, сборка clrcompression.dll использует ZLib — собственную внешнюю библиотеку для сжатия данных, предоставляя реализацию для алгоритма deflate. В .NET Framework 4.8 сборка clrcompression.dll обновлена для поддержки ZLib версии 1.2.11 c несколькими ключевыми улучшениями и исправлениями.
Windows Communication Foundation (WCF)
Знакомство с ServiceHealthBehavior
Конечные точки работоспособности широко используются средствами представления для управления службами на основе состояния их работоспособности. Проверки работоспособности также могут использоваться средствами мониторинга для отслеживания и создания уведомлений о доступности и производительности службы.
ServiceHealthBehavior — это поведение службы WCF, которое расширяет IServiceBehavior. При добавлении в коллекцию ServiceDescription.Behaviors поведение службы отвечает за следующие действия:
- Возвращает состояние работоспособности службы с кодами откликов HTTP. Эти коды можно указать в строке запроса для проверки работоспособности HTTP/GET.
- Публикует сведения о работоспособности службы. Это сведения о службе, включая данные о состоянии службы и емкости, а также счетчики регулирования, можно отобразить с помощью запроса HTTP/GET в строке запроса ?health. Простота доступа к такой информации необходима при устранении неполадок с неправильным поведением службы WCF.
Есть два способа, чтобы предоставить конечную точку работоспособности и опубликовать сведения о работоспособности службы WCF:
С помощью кода. Например:
ServiceHost host = new ServiceHost(typeof(Service1), new Uri("http://contoso:81/Service1")); ServiceHealthBehavior healthBehavior = host.Description.Behaviors.Find<ServiceHealthBehavior>(); healthBehavior ??= new ServiceHealthBehavior(); host.Description.Behaviors.Add(healthBehavior);
- С помощью файла конфигурации. Например:
<behaviors> <serviceBehaviors> <behavior name="DefaultBehavior"> <serviceHealth httpsGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors>
Состояние работоспособности службы можно запросить, используя такие параметры запроса, как OnServiceFailure, OnDispatcherFailure, OnListenerFailure, OnThrottlePercentExceeded. При этом код отклика HTTP можно указать для каждого параметра запроса. Если для параметра запроса не указан код отклика HTTP, по умолчанию используется код HTTP 503.
Windows Presentation Foundation (WPF)
Улучшения высокого разрешения
В .NET Framework 4.8 WPF добавлена поддержка DPI для каждого монитора версии 2 и масштабирование DPI в смешанном режиме.
В .NET Framework 4.8 улучшена поддержка взаимодействия между размещенными HWND и Windows Forms в приложениях WPF с поддержкой высокого разрешения на платформах, которые поддерживают масштабирование DPI в смешанном режиме (начиная с обновления Windows 10 за апрель 2018 г.). Элементы управления размещенных HWND или Windows Forms, создаваемые в качестве окон с масштабированием DPI в смешанном режиме путем вызова SetThreadDpiHostingBehavior и SetThreadDpiAwarenessContext, могут размещаться в приложении WPF с поддержкой DPI для каждого монитора версии 2 с правильными размером и масштабом. Такое размещенное содержимое не отображается в собственном высоком разрешении. Вместо этого операционная система масштабирует размещенное содержимое до соответствующего размера. Включение режима поддержки DPI для каждого монитора версии 2 также позволяет размещать элементы управления WPF (родительские) в собственном окне в приложении с поддержкой высокого разрешения.
Среда CLR
Среда выполнения в .NET Framework 4.8 включает следующие новые функции и улучшения:
Улучшения JIT-компилятора. Компилятор Just-in-time (JIT) в .NET Framework 4.8 основан на JIT-компиляторе .NET Core 2.1. Многие оптимизации и все исправления, внесенные в JIT-компилятор .NET Core 2.1, включены в JIT-компилятор .NET Framework 4.8.
Улучшения NGEN. В среде выполнения улучшено управление памятью для образов генератора образов в машинном коде, чтобы данные, полученные из таких образов, не были резидентными. Это сокращает контактную зону для атак с попытками выполнить произвольный код путем изменения соответствующей памяти.
Сканирование на наличие вредоносных программ для всех сборок. В предыдущих версиях .NET Framework среда выполнения просматривает все сборки, загруженные с диска, с помощью Защитника Windows или стороннего антивредоносного ПО. При этом сборки, загруженные из других источников, например с помощью метода Assembly.Load(Byte[]), не просматриваются, следовательно, они могут содержать не обнаруженное вредоносное ПО. Начиная с .NET Framework 4.8, при выполнении в Windows 10 среда выполнения запускает сканирование с помощью решений для защиты от вредоносных программ, которые реализуют интерфейс сканирования антивредоносного ПО (AMSI).
Собственно на этом и заканчиваются новые возможности .NET Framework 4.8