Programming net framework

Общеязыковая среда выполнения

Среда выполнения в .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. Среда выполнения улучшила управление памятью для изображений Native Image Generator (NGEN). Так что данные. Отображаемые из изображений NGEN. Не являются резидентными в памяти. Это уменьшает площадь поверхности. Доступную для атак. Которые пытаются выполнить произвольный код. Изменяя память. Которая будет выполнена.

Антивирусное сканирование всех сборок. В предыдущих версиях .NET Framework среда выполнения сканировала все сборки. Загруженные с диска. С помощью Защитника Windows или стороннего антивирусного программного обеспечения. Однако сборки загружаются из других источников. Например из самой Сборки.Метод Load(Byte[]) не сканируется и потенциально может содержать необнаруженные вредоносные программы. Начиная с .NET Framework 4.8, работающей в Windows 10, среда выполнения запускает проверку с помощью решений

Antimalware Scan Interface (AMSI).

Что нового в .NET Framework 4.7.2

.NET Framework 4.7.2 включает в себя новые функции в следующих областях:

Основное внимание в .NET Framework 4.7.2 уделяется улучшению доступности. Что позволяет приложению обеспечивать соответствующий опыт для пользователей вспомогательных технологий. Дополнительные сведения об улучшениях специальных возможностей в .NET Framework 4.7.2 см. в разделе Новые возможности специальных возможностей в .NET Framework.

Базовые классы

.NET Framework 4.7.2 имеет большое количество криптографических улучшений. Лучшую поддержку распаковки ZIP-архивов и дополнительные API сбора.

Новые перегрузки RSA.Create и DSA.Create

Методы DSA.Create(DSAParameters) и RSA.Create(RSAParameters) позволяют задавать ключевые параметры при создании экземпляра нового ключа DSA или RSA. Они позволяют заменить код следующим образом:

// Before .NET Framework 4.7.2 using (RSA rsa = RSA.Create()) { rsa.ImportParameters(rsaParameters); // Other code to execute using the RSA instance. } 

с таким кодом как этот:

// Starting with .NET Framework 4.7.2 using (RSA rsa = RSA.Create(rsaParameters)) { // Other code to execute using the rsa instance. } 

Методы DSA.Create(Int32) и RSA.Create(Int32) позволяют создавать новые ключи DSA или RSA с определенным размером ключа. Например:

using (DSA dsa = DSA.Create(2048)) { // Other code to execute using the dsa instance. } 

Конструкторы Rfc2898DeriveBytes принимают имя хэш-алгоритма

Класс Rfc2898DeriveBytes имеет три новых конструктора с параметром HashAlgorithmName. Который идентифицирует алгоритм HMAC для использования при получении ключей. Вместо использования SHA-1 разработчики должны использовать HMAC на основе SHA-2, например SHA-256, как показано в следующем примере:

private static byte[] DeriveKey(string password. Out int iterations. Out byte[] salt. Out HashAlgorithmName algorithm) { iterations = 100000; algorithm = HashAlgorithmName.SHA256; const int SaltSize = 32; const int DerivedValueSize = 32; using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize. Iterations. Algorithm)) { salt = pbkdf2.Salt; return pbkdf2.GetBytes(DerivedValueSize); } } 

Поддержка эфемерных ключей

PFX import может дополнительно загружать закрытые ключи непосредственно из памяти. Минуя жесткий диск. Когда новый X509KeyStorageFlags.Флаг EphemeralKeySet задается в конструкторе X509Certificate2 или одной из перегрузок X509Certificate2.Метод импорта. Закрытые ключи будут загружены как эфемерные ключи. Это предотвращает видимость ключей на диске. Однако:

  • Поскольку ключи не сохраняются на диске. Сертификаты. Загруженные с этим флагом. Не являются хорошими кандидатами для добавления в X509Store.

  • Ключи, загруженные таким образом. Почти всегда загружаются через Windows CNG. Поэтому вызывающие объекты должны получить доступ к закрытому ключу. Вызывая методы расширения. Такие как cert.GetRSAPrivateKey(). Свойство X509Certificate2.PrivateKey не работает.

  • Поскольку унаследованное свойство X509Certificate2.PrivateKey не работает с сертификатами. Разработчикам следует провести строгое тестирование перед переключением на эфемерные ключи.

Программное создание запросов на подписание сертификатов PKCS#10 и сертификатов открытого ключа X. 509

Начиная с .NET Framework 4.7.2, рабочие нагрузки могут генерировать запросы подписи сертификатов (CSR). Что позволяет создавать запросы сертификатов в существующие инструменты. Это часто полезно в тестовых сценариях.

Дополнительные сведения и примеры кода см. в разделе блоге.NET .

Новые члены SignerInfo

Начиная с .NET Framework 4.7.2, класс SignerInfo предоставляет дополнительную информацию о подписи. Вы можете получить значение Системы.Безопасность.Криптография.SignerInfo.signatureAlgorithm свойство для определения алгоритма подписи. Используемого подписывающим. SignerInfo.GetSignature можно вызвать. Чтобы получить копию криптографической подписи для этого подписывающего лица.

Оставляя обернутый поток открытым после того. Как CryptoStream будет удален

Начиная с .NET Framework 4.7.2, класс CryptoStream имеет дополнительный конструктор. Который позволяет Dispose не закрывать обернутый поток. Чтобы оставить обернутый поток открытым после удаления экземпляра CryptoStream. Вызовите новый конструктор CryptoStream следующим образом:

var cStream = new CryptoStream(stream. Transform, mode. LeaveOpen: true); 

Декомпрессионные изменения в дефлатстриме

Начиная с .NET Framework 4.7.2, реализация операций декомпрессии в классе DeflateStream изменилась. Чтобы по умолчанию использовать собственные API Windows. Как правило. Это приводит к существенному повышению производительности.

Поддержка декомпрессии с помощью API Windows включена по умолчанию для приложений. Ориентированных на .NET Framework 4.7.2. Приложения, ориентированные на более ранние версии .NET Framework. Но работающие под управлением .NET Framework 4.7.2, могут выбрать это поведение. Добавив следующий переключатель AppContext в файл конфигурации приложения:

Дополнительные API-интерфейсы сбора данных 

.NET Framework 4.7.2 добавляет ряд новых API к и . К ним относятся:

  • TryGetValue методы. Которые расширяют шаблон try. Используемый в других типах коллекций. На эти два типа. Методы таковы:

  • Enumerable.To* методы расширения. Которые преобразуют коллекцию :

  • Новые , которые позволяют установить емкость коллекции. Что дает преимущество в производительности. Когда вы заранее знаете размер :

Класс ConcurrentDictionary включает в себя новые перегрузки методов AddOrUpdate и GetOrAdd для извлечения значения из словаря или добавления его. Если оно не найдено. А также для добавления значения в словарь или обновления его. Если оно уже существует.

ASP.NET

Поддержка внедрения зависимостей в веб-формы

Внедрение зависимостей (DI) разъединяет объекты и их зависимости таким образом. Что код объекта больше не нуждается в изменении только потому. Что изменилась зависимость. При разработке ASP.NET приложения. Предназначенные для .NET Framework 4.7.2, можно:

Поддержка файлов cookie одного сайта

SameSite запрещает браузеру отправлять файл cookie вместе с межсайтовым запросом. .NET Framework 4.7.2 добавляет HttpCookie.Свойство SameSite. Значением которого является элемент перечисления System.Web.SameSiteMode. Если его значение равно SameSiteMode.Strict или SameSiteMode.Lax, ASP.NET добавляет SameSiteатрибут в заголовок set-cookie. Поддержка SameSite распространяется на объекты HttpCookie. А также на файлы cookie FormsAuthentication и System.Web.SessionState.

Вы можете установить SameSite для объекта HttpCookie следующим образом:

var c = new HttpCookie("secureCookie". "same origin"); c.SameSite = SameSiteMode.Lax; 

Вы также можете настроить файлы cookie SameSite на уровне приложения. Изменив файл web.config:

Вы можете добавить SameSite для FormsAuthentication и файлов cookie System.Web.SessionState, изменив файл web config:
 

Сетевой

Реализация свойств HttpClientHandler

.NET Framework 4.7.1 добавил восемь свойств в класс System.Net.Http.HttpClientHandler. Однако двое бросили исключение PlatformNotSupportedException. .NET Framework 4.7.2 теперь предоставляет реализацию этих свойств. Эти свойства таковы:

SqlClient

Поддержка универсальной аутентификации Azure Active Directory и многофакторной аутентификации

Растущие требования соответствия и безопасности требуют. Чтобы многие клиенты использовали многофакторную аутентификацию (MFA). Кроме того, существующие рекомендации не рекомендуют включать пароли пользователей непосредственно в строки подключения. Для поддержки этих изменений .NET Framework 4.7.2 расширяет строки подключения SqlClient, добавляя новое значение Azure AD Новый интерактивный метод поддерживает собственных и федеративных пользователей Azure AD. А также гостевых пользователей Azure AD . При использовании этого метода проверка подлинности MFA. Введенная Azure AD. Поддерживается для баз данных SQL. Кроме того, процесс аутентификации запрашивает пароль пользователя для соблюдения рекомендаций по безопасности.

В предыдущих версиях .NET Framework SQL connectivity поддерживал только метод SqlAuthenticationMethod.ActiveDirectoryPassword и SqlAuthenticationMethod.ActiveDirectoryIntegrated параметры. Оба они являются частью неинтерактивного протокола ADAL, который не поддерживает MFA. С новым SqlAuthenticationMethod.ActiveDirectoryInteractive option. SQL connectivity поддерживает MFA. А также существующие методы аутентификации (password и integrated authentication). Что позволяет пользователям вводить пользовательские пароли в интерактивном режиме без сохранения паролей в строке подключения.

Дополнительные сведения и пример см. в статье блоге.NET .

Поддержка всегда зашифрованной версии 2

NET Framework 4.7.2 добавляет поддержку enclave-based Always Encrypted. Оригинальная версия Always Encrypted-это технология шифрования на стороне клиента. В которой ключи шифрования никогда не покидают клиента. В enclave-based Always Encrypted клиент может дополнительно отправить ключи шифрования в защищенный enclave. Который является защищенной вычислительной сущностью. Которая может считаться частью SQL Server. Но код SQL Server не может вмешиваться. Чтобы поддерживать постоянное шифрование на основе анклава, .NET Framework 4.7.2 добавляет следующие типы и члены в пространство имен System.Data.SqlClient:

  • SqlConnectionStringBuilder.EnclaveAttestationUrl, который определяет Uri для enclave-based Always Encrypted.

  • SqlColumnEncryptionEnclaveProvider, который является абстрактным классом. Из которого выводятся все поставщики анклавов.

  • SqlEnclaveSession, который инкапсулирует состояние для данного сеанса анклава.

  • SqlEnclaveAttestationParameters, который предоставляет параметры аттестации. Используемые SQL Server для получения информации. Необходимой для выполнения определенного протокола аттестации.

Затем файл конфигурации приложения указывает конкретную реализацию абстрактного класса System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider. Который предоставляет функциональные возможности для поставщика анклава. Например:

Основной поток анклавных данных. Всегда зашифрованных, таков:: 
  1. Пользователь создает AlwaysEncrypted соединение с SQL Server. Которое поддерживает enclave-based Always Encrypted. Водитель связывается со службой аттестации. Чтобы убедиться. Что он подключается к правильному анклаву.

  2. После того. Как анклав был сертифицирован. Драйвер устанавливает безопасный канал с защищенным анклавом. Размещенным на SQL Server.

  3. Драйвер совместно использует ключи шифрования. Авторизованные клиентом. С защищенным анклавом в течение всего времени SQL-соединения.

Фонд презентаций Windows

Поиск ресурсных источников по источникам

Начиная с .NET Framework 4.7.2, помощник по диагностике может найти ResourceDictionaries которые были созданы из заданного исходного Uri. (Эта функция предназначена для использования ассистентами диагностики. А не производственными приложениями.) Помощник по диагностике. Такой как средство Visual Studio Одним из шагов в достижении этой цели является поиск всех ResourceDictionaries. Которые запущенное приложение создало из редактируемого словаря. Например, приложение может объявить ResourceDictionary. Содержимое которого копируется из заданного исходного URI:

Диагностический помощник. Который редактирует исходную разметку в MyRD.xaml, может использовать новую функцию для поиска словаря. Эта функция реализуется с помощью нового статического метода ResourceDictionaryDiagnostics.GetResourceDictionariesForSource. Помощник по диагностике вызывает новый метод. Используя абсолютный Uri. Который идентифицирует исходную разметку. Как показано следующим кодом:

Метод возвращает пустой перечисляемый объект. Если только не включена функция VisualDiagnostics и ENABLE_XAML_DIAGNOSTICS_SOURCE_INFOне задана переменная окружения.

Поиск владельцев ResourceDictionary

Начиная с .NET Framework 4.7.2, помощник по диагностике может найти владельцев данного ResourceDictionary. (Эта функция предназначена для использования ассистентами диагностики. А не производственными приложениями.) Всякий раз . Когда в ResourceDictionary вносится изменение, WPF автоматически находит все ссылки DynamicResource. На которые это изменение может повлиять.

Помощник по диагностике. Такой как средство Visual Studio ссылок на StaticResource. Первым шагом в этом процессе является поиск владельцев словаря. То есть поиск всех объектов, Resourcesсвойство которых относится к словарю (прямо или косвенно через ResourceDictionary.MergedDictionaries property). В системе реализованы три новых статических метода.Windows.Диагностика.Класс ResourceDictionaryDiagnostics. По одному для каждого из базовых типов. Имеющих Resourcesсвойство. Поддерживает этот шаг:

Эти методы возвращают пустой перечисляемый объект. Если только не включена функция VisualDiagnostics и ENABLE_XAML_DIAGNOSTICS_SOURCE_INFOне задана переменная окружения.

Поиск ссылок StaticResource

Диагностический помощник теперь может получать уведомление при разрешении ссылки StaticResource. (Эта функция предназначена для использования диагностическими помощниками. А не производственными приложениями.) Диагностический помощник. Такой как средство ResourceDictionary изменяется. WPF делает это автоматически для ссылок DynamicResource. Но намеренно не делает этого для StaticResource Рекомендации. Начиная с .NET Framework 4.7.2, помощник по диагностике может использовать эти уведомления для определения тех случаев использования статического ресурса.

Уведомление осуществляется с помощью нового ресурса Bedictionarydiagnostics.StaticResourceResolved event:

Это событие возникает всякий раз. Когда среда выполнения разрешает ссылку StaticResource. Аргументы StaticResourceResolvedEventArgs описывают разрешение и указывают объект и свойство. В которых размещена ссылка StaticResource. А также ResourceDictionary и ключ. Используемые для разрешения:

public class StaticResourceResolvedEventArgs : EventArgs { public Object TargetObject { get; } public Object TargetProperty { get; } public ResourceDictionary ResourceDictionary { get; } public object ResourceKey { get; } } 

Событие не вызывается (и его addаксессор игнорируется). Если только не включена функция VisualDiagnostics и ENABLE_XAML_DIAGNOSTICS_SOURCE_INFOне задана переменная окружения.

ClickOnce

Приложения с поддержкой HDPI для Windows Forms. Windows Presentation Foundation (WPF) и Visual Studio Tools for Office (VSTO) можно развернуть с помощью ClickOnce. Если в манифесте приложения будет найдена следующая запись. Развертывание будет успешным в рамках .NET Framework 4.7.2:

Для приложения Windows Forms предыдущий обходной путь настройки осведомленности DPI в файле конфигурации приложения. А не в манифесте приложения. Больше не требуется для успешного развертывания ClickOnce. 

Что нового в .NET Framework 4.7.1

.NET Framework 4.7.1 включает в себя новые функции в следующих областях:

Кроме того, основное внимание в .NET Framework 4.7.1 уделяется улучшению доступности. Что позволяет приложению предоставлять соответствующий опыт для пользователей вспомогательных технологий. Дополнительные сведения об улучшениях доступности в .NET Framework 4.7.1 см. в разделе Что нового в разделе доступность в .NET Framework.

Базовые классы

Поддержка .NET Standard 2.0

Стандарт .NET определяет набор API. Которые должны быть доступны на каждом из них .СЕТЕВАЯ реализация. Поддерживающая эту версию стандарта. .NET Framework 4.7.1 полностью поддерживает .NET Standard 2.0 и добавляет около 200 API, которые определены в .NET Standard 2.0 и отсутствуют в .NET Framework 4.6.1, 4.6.2 и 4.7. (Обратите внимание. Что эти версии .NET Framework поддерживают .NET Standard 2.0 только в том случае. Если в целевой системе также развернуты дополнительные файлы поддержки .NET Standard.) Дополнительные сведения см. в разделе блоге .NET Framework 4.7.1 Runtime and Compiler Features.

Поддержка конструкторов конфигураций

Конструкторы конфигураций позволяют разработчикам динамически вводить и создавать параметры конфигурации для приложений во время выполнения. Пользовательские конструкторы конфигураций можно использовать для изменения существующих данных в разделе конфигурации или для создания раздела конфигурации полностью с нуля. Без конструкторов конфигураций файлы .config статичны. И их настройки определяются за некоторое время до запуска приложения.

Чтобы создать пользовательский конструктор конфигураций. Вы производите свой конструктор от абстрактного класса ConfigurationBuilder и переопределяете его ConfigurationBuilder.ProcessConfigurationSection и ConfigurationBuilder.ProcessRawXml. Вы также определяете своих строителей в файле .config. Дополнительные сведения см. в разделе .NET Framework 4.7.1 ASP.NET и Конфигурационные особенности записи в блоге.

Обнаружение функций во время выполнения

Система.Компиляторы.Класс RuntimeFeature предоставляет механизм для определения того. Поддерживается ли заранее определенный объект на заданном .ЧИСТАЯ реализация во время компиляции или во время выполнения. Во время компиляции компилятор может проверить. Существует ли указанное поле. Чтобы определить. Поддерживается ли функция; если это так. Он может выдать код. Который использует эту функцию. Во время выполнения приложение может вызвать RuntimeFeature.Метод isSupported перед выпуском кода во время выполнения. Дополнительные сведения см. в разделе Добавление вспомогательного метода для описания функций. Поддерживаемых средой выполнения.

Типы кортежей значений сериализуемы

Начиная с .NET Framework 4.7.1, System.ValueTuple и связанные с ним универсальные типы помечаются как сериализуемые, что позволяет выполнять двоичную сериализацию. Это должно облегчить миграцию типов кортежей. Таких как и , в типы значений кортежей. Дополнительные сведения см. в разделе статье блога функций среды выполнения и компилятора .NET Framework 4.7.1.

Поддержка ссылок только для чтения

.NET Framework 4.7.1 добавляет System.Runtime.Компиляторы.IsReadOnlyAttribute. Этот атрибут используется компиляторами языка для обозначения элементов. Которые имеют типы или параметры ref return только для чтения. Дополнительные сведения см. в разделе блоге .NET Framework 4.7.1 Runtime and Compiler Features. Дополнительные сведения о ref return values см. в разделах Ref return values и ref locals (Руководство по C#) и Ref return values (Visual Basic).

Среда выполнения Common language runtime (CLR)

Повышение производительности сборки мусора

Изменения в сборке мусора (GC) в .NET Framework 4.7.1 улучшают общую производительность. Особенно при выделении кучи больших объектов (LOH). В .NET Framework 4.7.1 отдельные блокировки используются для выделения кучи небольших объектов (SOH) и LOH. Что позволяет выделять LOH. Когда фоновый GC подметает SOH. В результате приложения. Которые делают большое количество распределений LOH. Должны увидеть снижение конкуренции за блокировку распределения и повышение производительности. Дополнительные сведения см. в разделе .NET Framework 4.7.1 Runtime and Compiler Features blog post.

Сетевой

Поддержка SHA-2 для сообщения.Хашалгоритм

В .NET Framework 4.7 и более ранних версиях это сообщение.Свойство HashAlgorithm поддерживает значения HashAlgorithm.Md5 и HashAlgorithm.Только Ша. Начиная с .NET Framework 4.7.1, также поддерживаются HashAlgorithm.Sha256, HashAlgorithm.Sha384и HashAlgorithm.Sha512. Используется ли это значение на самом деле. Зависит от MSMQ. Поскольку сам экземпляр сообщения не выполняет хэширования. А просто передает значения в MSMQ. Дополнительные сведения см. в разделе Раздел .NET Framework 4.7.1 ASP.NET и Конфигурационные особенности записи в блоге.

ASP.NET

Этапы выполнения в ASP.NET приложения

ASP.NET обрабатывает запросы в заранее определенном конвейере. Включающем 23 события. ASP.NET выполняет каждый обработчик событий как шаг выполнения. В версиях ASP.NET до .NET Framework 4.7, ASP.NET не удается обработать контекст выполнения из-за переключения между собственными и управляемыми потоками. Вместо этого ASP.NET выборочно течет только HttpContext. Начиная с .NET Framework 4.7.1, HttpApplication. метод также позволяет модулям восстанавливать окружающие данные. Эта функция предназначена, например. Для библиотек. Занимающихся трассировкой. Профилированием. Диагностикой или транзакциями. Которые заботятся о потоке выполнения приложения. Для получения дополнительной информации см. .NET Framework 4.7.1 ASP.NET и особенности конфигурации блога.

ASP.NET Синтаксический анализ HttpCookie

.NET Framework 4.7.1 включает в себя новый метод HttpCookie.TryParse, который предоставляет стандартизированный способ создания объекта HttpCookie из строки и точного назначения значений файлов cookie. Таких как дата истечения срока действия и путь. Для получения дополнительной информации см. .NET Framework 4.7.1 ASP.NET и Конфигурационные особенности записи в блоге.

Параметры хэширования SHA-2 для ASP.NET учетные данные для проверки подлинности форм

В .NET Framework 4.7 и более ранних версиях ASP.NET разрешено разработчикам хранить учетные данные пользователя с хэшированными паролями в файлах конфигурации с помощью MD5 или SHA1. Начиная с .NET Framework 4.7.1, ASP.NET также поддерживаются новые безопасные параметры хэширования SHA-2, такие как SHA256, SHA384 и SHA512. SHA1 остается по умолчанию. И нестандартный алгоритм хэширования может быть определен в файле веб-конфигурации. Например:

 

Что нового в .NET Framework 4.7

.NET Framework 4.7 включает в себя новые функции в следующих областях:

Список новых API. Добавленных в .NET Framework 4.7, см. в разделе Изменения API .NET Framework 4.7 на GitHub. Список улучшений функций и исправлений ошибок в .NET Framework 4.7 см. в разделе Список изменений .NET Framework 4.7 на GitHub. Дополнительные сведения см. в разделе Объявление .NET Framework 4.7 в разделе .СЕТЕВОЙ блог.

Базовые классы

.NET Framework 4.7 улучшает сериализацию с помощью DataContractJsonSerializer:

Расширенная функциональность с криптографией эллиптических кривых (ECC)*

В .NET Framework 4.7 ImportParameters(ECParameters)методы были добавлены в классы ECDsa и ECDiffieHellman, чтобы объект представлял уже установленный ключ. Также был ExportParameters(Boolean)добавлен метод экспорта ключа с использованием явных параметров кривой.

.NET Framework 4.7 также добавляет поддержку дополнительных кривых (включая набор кривых Brainpool) и добавляет предопределенные определения для простоты создания с помощью новых методов Create и Create factory.

Вы можете увидеть пример улучшений криптографии .NET Framework 4.7 на GitHub.

Лучшая поддержка управляющих символов DataContractJsonSerializer

В .NET Framework 4.7 класс DataContractJsonSerializer сериализует управляющие символы в соответствии со стандартом ECMAScript 6. Это поведение включено по умолчанию для приложений. Предназначенных для .NET Framework 4.7, и является опцией для приложений. Работающих под управлением .NET Framework 4.7, но предназначенных для предыдущей версии .NET Framework. Дополнительные сведения см. в разделе Совместимость приложений.

Сетевой

.NET Framework 4.7 добавляет следующую функцию. Связанную с сетью:

Поддержка протоколов TLS операционной системой по умолчанию*

Стек TLS, который используется System.Net.Security.SslStream и up-stack компоненты. Такие как HTTP. FTP и SMTP. Позволяют разработчикам использовать протоколы TLS по умолчанию. Поддерживаемые операционной системой. Разработчикам больше не нужно жестко кодировать версию TLS.

ASP.NET

В .NET Framework 4.7, ASP.NET включает в себя следующие новые функции:

Расширяемость кэша объектов

Начиная с .NET Framework 4.7, ASP.NET добавляет новый набор API. Которые позволяют разработчикам заменять стандартные ASP.NET реализации для кэширования объектов в памяти и мониторинга памяти. Разработчики теперь могут заменить любой из следующих трех компонентов, если ASP.NET реализация не является адекватной:

  • Хранилище кэша объектов. Используя раздел конфигурации новых поставщиков кэша. Разработчики могут подключать новые реализации объектного кэша для ASP.NET приложение с помощью нового интерфейса ICacheStoreProvider.

  • Мониторинг памяти. Монитор памяти по умолчанию в ASP.NET уведомляет приложения. Когда они работают близко к настроенному пределу частных байт для процесса или когда на компьютере мало доступной физической оперативной памяти. При приближении этих пределов срабатывают уведомления. Для некоторых приложений уведомления запускаются слишком близко к заданным пределам. Чтобы обеспечить полезные реакции. Теперь разработчики могут написать собственные мониторы памяти. Чтобы заменить значение по умолчанию с помощью свойства ApplicationMonitors.MemoryMonitor.

  • Реакции Ограничения Памяти. По умолчанию ASP.NET пытается обрезать кэш объектов и периодически вызывать GC.Collect, когда предел процесса частного байта приближается. Для некоторых приложений частота вызовов GC.Collect или объем кэша. Который обрезается. Неэффективны. Теперь разработчики могут заменить или дополнить поведение по умолчанию. Подписав реализации IObserver на монитор памяти приложения.

Windows Communication Foundation (WCF)

Windows Communication Foundation (WCF) добавляет следующие функции и изменения:

Возможность настройки параметров безопасности сообщений по умолчанию на TLS 1.1 или TLS 1.2

Начиная с .NET Framework 4.7, WCF позволяет настроить TLS 1.1 или TLS 1.2 в дополнение к SSL 3.0 и TLS 1.0 в качестве протокола безопасности сообщений по умолчанию. Это параметр opt-in; чтобы включить его. Необходимо добавить следующую запись в файл конфигурации приложения:

Повышенная надежность приложений WCF и сериализация WCF 

WCF включает в себя ряд изменений кода. Которые устраняют условия гонки. Тем самым повышая производительность и надежность вариантов сериализации. К ним относятся:

  • Улучшена поддержка смешивания асинхронного и синхронного кода в вызовах socketConnection.BeginRead и socketConnection.Читайте.
  • Повышена надежность при прерывании соединения с SharedConnectionListener и DuplexChannelBinder.
  • Повышена надежность операций сериализации при вызове FormatterServices.Метод GetSerializableMembers(Type).
  • Повышена надежность при удалении официанта путем вызова метода ChannelSynchronizer.RemoveWaiter.

Формы Windows

В .NET Framework 4.7 Windows Forms улучшает поддержку мониторов с высоким разрешением DPI.

Высокая поддержка DPI

Начиная с приложений. Предназначенных для .NET Framework 4.7, платформа .NET Framework имеет высокий DPI и динамическую поддержку DPI для приложений Windows Forms. Поддержка высокого разрешения улучшает макет и внешний вид форм и элементов управления на мониторах с высоким разрешением. Динамический DPI изменяет макет и внешний вид форм и элементов управления. Когда пользователь изменяет DPI или коэффициент масштабирования дисплея запущенного приложения.

Высокая поддержка DPI-это опция. Которую вы настраиваете. ОпределяяWindows.Формы. в файле конфигурации приложения. Дополнительные сведения о добавлении поддержки high DPI и динамической поддержки DPI в приложение Windows Forms см. в разделе Поддержка High DPI в Windows Forms.

Windows Presentation Foundation (WPF)

В .NET Framework 4.7 WPF включает следующие усовершенствования:

Поддержка стека touch/stylus на основе сообщений Windows WM_POINTER

Теперь у вас есть возможность использовать стек touch/stylus на основе сообщений WM_POINTER вместо платформы Windows Ink Services Platform (WISP). Это функция opt-in в .NET Framework. Дополнительные сведения см. в разделе Совместимость приложений.

Новая реализация API печати WPF

API-интерфейсы печати WPF в системе.Печатание.Класс PrintQueue вызывает API пакета документов печати Windows вместо устаревшего API печати XPS. О влиянии этого изменения на совместимость приложений см. раздел Совместимость приложений.

Что нового в .NET Framework 4.6.2

.NET Framework 4.6.2 включает в себя новые функции в следующих областях:

Список новых API. Добавленных в .NET Framework 4.6.2, см. в разделе Изменения API .NET Framework 4.6.2 на GitHub. Список улучшений функций и исправлений ошибок в .NET Framework 4.6.2 см. в разделе Список изменений .NET Framework 4.6.2 на GitHub. Дополнительные сведения см. в разделе Объявление .NET Framework 4.6.2 в разделе .СЕТЕВОЙ блог.

ASP.NET

В .NET Framework 4.6.2, ASP.NET включает в себя следующие усовершенствования:

Улучшена поддержка локализованных сообщений об ошибках в валидаторах аннотаций данных

Валидаторы аннотаций данных позволяют выполнять валидацию путем добавления одного или нескольких атрибутов к свойству класса. Атрибут ValidationAttribute.Элемент ErrorMessage определяет текст сообщения об ошибке в случае сбоя проверки. Начиная с .NET Framework 4.6.2, ASP.NET позволяет легко локализовать сообщения об ошибках. Сообщения об ошибках будут локализованы, если:

  1. Атрибут ValidationAttribute.ErrorMessage предоставляется в атрибуте validation.

  2. Файл ресурсов хранится в папке App_LocalResources.

  3. Имя файла локализованных ресурсов имеет форму DataAnnotation.Localization.{name}.resx, где name-это имя культуры в формате LanguageCode-country/regionCode или LanguageCode.

  4. Ключевое имя ресурса - это строка. Присвоенная атрибуту ValidationAttribute.Атрибут ErrorMessage. А его значением является локализованное сообщение об ошибке.

Например, следующий атрибут аннотации данных определяет сообщение об ошибке культуры по умолчанию для недопустимого рейтинга.

public class RatingInfo { [Required(ErrorMessage = "The rating must be between 1 and 10.")] [Display(Name = "Your Rating")] public int Rating { get; set; } }