Udostępnij za pośrednictwem


<webMessageEncoding>

Umożliwia kodowanie komunikatów w formacie XML w postaci zwykłego tekstu, kodowanie komunikatów JavaScript Object Notation (JSON) i "nieprzetworzoną" zawartość binarną do odczytu i zapisu w przypadku użycia w powiązaniu programu Windows Communication Foundation (WCF).

<Konfiguracji>
  <System.servicemodel>
    <Powiązania>
      <Custombinding>
        <Wiązania>
          <webMessageEncoding>

Składnia

<webMessageEncoding maxReadPoolSize="Integer"
                    maxWritePoolSize="Integer"
                    writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" />

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
maxReadPoolSize Ilość komunikatów, które można odczytywać jednocześnie bez przydzielania nowych czytelników. Większe rozmiary puli sprawiają, że system jest bardziej odporny na wzrost aktywności kosztem większego zestawu roboczego. Wartość domyślna to 64 czytniki dla każdego z koderów wewnętrznych (tekst, JSON i "nieprzetworzone").

Zwiększenie tej liczby zwiększa zużycie pamięci, ale przygotowuje koder do radzenia sobie z nagłymi wybuchami przychodzących komunikatów, ponieważ jest w stanie używać czytników z puli, które zostały już utworzone, zamiast tworzyć nowe.
maxWritePoolSize Ilość wiadomości, które można wysyłać jednocześnie bez przydzielania nowych pisarzy. Większe rozmiary puli sprawiają, że system jest bardziej odporny na wzrost aktywności kosztem większego zestawu roboczego. Wartość domyślna to 16 zapisów dla każdego z koderów wewnętrznych (tekst, JSON i "nieprzetworzone").

Zwiększenie tej liczby zwiększa zużycie pamięci, ale przygotowuje koder do radzenia sobie z nagłymi wybuchami wychodzących komunikatów, ponieważ jest w stanie używać pisarzy z puli, która została już utworzona, zamiast tworzyć nowe.
writeEncoding Określa kodowanie zestawu znaków, które ma być używane do emitowania komunikatów w powiązaniu. Prawidłowe wartości:

- UnicodeFffeTextEncoding: kodowanie Unicode Big Endian.
- Utf16TextEncoding: kodowanie Unicode.
- Utf8TextEncoding: kodowanie 8-bitowe.

Wartość domyślna to Utf8TextEncoding. Ten atrybut jest typu Encoding.

Elementy podrzędne

Element Opis
<Readerquotas> Definiuje ograniczenia dotyczące złożoności komunikatów PROTOKOŁU SOAP, które mogą być przetwarzane przez punkty końcowe skonfigurowane za pomocą tego powiązania. Ten element jest typu XmlDictionaryReaderQuotasElement.

Elementy nadrzędne

Element Opis
<Wiązania> Definiuje wszystkie możliwości powiązania niestandardowego.

Uwagi

Kodowanie to proces przekształcania komunikatu w sekwencję bajtów. Dekodowanie jest procesem odwrotnym. Te procesy wymagają specyfikacji kodowania znaków.

Element webMessageEncoding działa przez delegowanie do serii koderów wewnętrznych w celu obsługi kodowań XML i JSON w postaci zwykłego tekstu oraz "nieprzetworzonych" danych binarnych. To delegowanie jest wykonywane przez koder komunikatów złożonych.

Ten element powiązania i koder złożony służą do kontrolowania kodowania w scenariuszach, które nie używają komunikatów SOAP używanych przez webHttpBinding element. Te scenariusze obejmują "Zwykły stary kod XML" (POX), reprezentacjowy transfer stanu (REST), naprawdę proste syndykację (RSS) i syndykację atomów oraz asynchroniczne javaScript i XML (AJAX). Koder komunikatów złożonych nie obsługuje protokołu SOAP ani adresowania WS.

Element powiązania można skonfigurować przy użyciu kodowania znaków zapisu przy użyciu atrybutu writeEncoding . W podanej Encoding wartości określono zachowanie zapisu dla przypadków JSON i Textual XML. Podczas odczytywania wszystkie prawidłowe kodowanie komunikatów i kodowanie tekstu są zrozumiałe.

maxReadPoolSizemaxWritePoolSize można również użyć do ustawienia maksymalnej liczby czytelników i pisarzy do przydzielenia odpowiednio. Domyślnie przydzielane są 64 czytniki i 16 pisarzy.

Domyślne ograniczenia złożoności są również ustawiane przy użyciu <elementu readerQuotas> w celu ochrony przed atakami typu "odmowa usługi" (DOS), które próbują wykorzystać złożoność komunikatu w celu powiązania zasobów przetwarzania punktu końcowego.

Przykład

<webMessageEncoding maxReadPoolSize="256"
                    maxWritePoolSize="128"
                    messageVersion="None"
                    textEncoding="utf-8" />

Zobacz także