<webMessageEncoding>
Обеспечивает чтение и запись сообщений в виде обычного текста XML, сообщений в кодировке JSON (нотация объектов JavaScript), а также необработанного двоичного содержимого, используемого в привязке Windows Communication Foundation (WCF).
<Конфигурации>
<system.serviceModel>
<Привязки>
<Custombinding>
<Привязки>
<webMessageEncoding>
Синтаксис
<webMessageEncoding maxReadPoolSize="Integer"
maxWritePoolSize="Integer"
writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" />
Атрибуты и элементы
В следующих разделах описаны атрибуты, дочерние и родительские элементы.
Атрибуты
Атрибут | Описание |
---|---|
maxReadPoolSize |
Количество сообщений, которые можно читать одновременно, не выделяя памяти для новых обработчиков чтения. Пул больших размеров повышает устойчивость системы при всплесках активности за счет большего рабочего набора. Значение по умолчанию - 64 обработчика чтения для каждого из внутренних кодировщиков (простой текст, JSON, двоичное содержимое). Увеличение этого числа увеличивает объем используемой памяти, однако подготавливает кодировщик к резким увеличениям количества входящих сообщений, позволяя использовать уже созданные обработчики чтения из пула, а не создавать новые. |
maxWritePoolSize |
Количество сообщений, которые можно отправить одновременно, не выделяя памяти для новых обработчиков записи. Пул больших размеров повышает устойчивость системы при всплесках активности за счет большего рабочего набора. Значение по умолчанию - 16 обработчиков записи для каждого из внутренних кодировщиков (простой текст, JSON, двоичное содержимое). Увеличение этого числа увеличивает объем используемой памяти, однако подготавливает кодировщик к резким увеличениям количества исходящих сообщений, позволяя использовать уже созданные обработчики записи из пула, а не создавать новые. |
writeEncoding |
Задает кодировку, используемую при отправке сообщений через привязку. Допустимые значения: — UnicodeFffeTextEncoding: кодировка Юникода Big Endian. — Utf16TextEncoding: кодировка Юникода. — Utf8TextEncoding: 8-битное кодирование. Значение по умолчанию - Utf8TextEncoding. Это атрибут типа Encoding. |
Дочерние элементы
Элемент | Описание |
---|---|
<readerQuotas> | Определяет ограничения по сложности сообщений SOAP, которые могут обрабатываться конечными точками, настроенными с использованием этой привязки. Это элемент типа XmlDictionaryReaderQuotasElement. |
Родительские элементы
Элемент | Описание |
---|---|
<Привязки> | Определяет все возможности пользовательской привязки. |
Комментарии
Кодирование — это процесс преобразования сообщения в последовательность байтов. Декодирование представляет собой обратный процесс. Эти процессы требуют определения кодировки символов.
Элемент webMessageEncoding
работает путем делегирования набору внутренних кодировщиков обработки кодировок XML (в формате обычного текста), JSON и двоичных данных. Делегирование выполняется с помощью составного кодировщика сообщений.
Этот элемент привязки и его составной кодировщик используются для управления кодировкой в тех сценариях, где не применяется обмен сообщениями по протоколу SOAP, используемый элементом webHttpBinding
. К таким сценариям относятся: Plain Old XML (POX), REST (Representational State Transfer), RSS (Really Simple Syndication), синдикация Atom и AJAX (Asynchronous JavaScript and XML). Составной кодировщик сообщений не поддерживает SOAP и WS-Addressing.
В элементе привязки можно задать кодировку записи с помощью атрибута writeEncoding
. Предоставленное значение Encoding задает поведение при записи для форматов JSON и XML в текстовом виде. Для чтения поддерживается любая допустимая кодировка сообщений и кодировка текста.
Атрибуты maxReadPoolSize
и maxWritePoolSize
также могут использоваться для установки максимального количества выделяемых обработчиков чтения и записи соответственно. По умолчанию выделяется 64 обработчика чтения и 16 обработчиков записи.
Ограничения сложности по умолчанию также задаются с помощью <элемента readerQuotas> для защиты от атак типа "отказ в обслуживании" (DOS), которые пытаются использовать сложность сообщений для привязки ресурсов обработки конечных точек.
Пример
<webMessageEncoding maxReadPoolSize="256"
maxWritePoolSize="128"
messageVersion="None"
textEncoding="utf-8" />