Проблема с производительностью при отправке сообщений XML SOAP в 4.6 платформа.NET Framework с помощью WCF

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 3076436
Проблема
Предположим, что после обновления до Microsoft платформа.NET Framework 4.6 на вашем компьютере. При использовании приложения, использующего Windows Framework(WCF) связи для передачи сообщений XML SOAP кодировки может занять немного больше времени. В некоторых случаях это может повлиять на скорость, с которой приложение-сервер может обрабатывать запросы.
Причина
Эта проблема возникает из-за новый Just-In-Time (JIT) компилятор с именем RyuJIT. Этот компилятор использует различные оптимизации, чем прежних версий компилятора JIT64. Метод на пути кода горячей для кодирования строк вXmlDictionaryWriter не оптимизирован JIT-компилятора новый созданный инструкций машинного кода работает медленнее и кодировку занимает больше времени. Когда сообщение SOAP содержит большое количество строк для кодирования, этот код медленнее, более часто используется и может повлиять на время кодирования.
Решение
Чтобы обойти эту проблему, настройте приложение для отключения использования ngen сборки System.Runtime.Serialization.dll и устаревший модуль JIT. Для этого воспользуйтесь одним из следующих способов:
  • Задайте следующие переменные среды:

    COMPLUS_useLegacyJit = 1
    COMPLUS_DisableNativeImageLoadList=System.Runtime.Serialization
  • В реестре можно создайте один из следующих подразделов:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\. NETFramework

    Затем добавьте следующие значения:
    • Имя ключа: useLegacyJit
      Тип: REG_WORD
      Значение: 1
    • Имя ключа: DisableNativeImageLoadList
      Тип: REG_SZ
      Значение: System.Runtime.Serialization
  • Добавьте следующий текст для <app>. файл exe.config. Создание указанным разделам, если они еще не существуют.</app>
    <configuration>         <runtime>              <useLegacyJit enabled="1">             <disableNativeImageLoad>                 <assemblyIdentity name="System.Runtime.Serialization" />             </disableNativeImageLoad>          </runtime>     </configuration>


Дополнительные сведения об известных проблемах в 4.6 платформа.NET Framework см. Известные проблемы с 4.6 платформа.NET Framework.
Дополнительная информация
Дополнительные сведения об изменениях управление версиями продуктов и их влияние в 4.6 платформа.NET Framework см.Совместимость приложений в платформа.NET Framework 4.6.

Свойства

Номер статьи: 3076436 — последний просмотр: 07/22/2015 17:54:00 — редакция: 1.0

Microsoft .NET Framework 4.6

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3076436 KbMtru
Отзывы и предложения