<webMessageEncoding>
Consente alle codifiche di messaggi XML di testo normale e JSON (JavaScript Object Notation) e al contenuto binario "non elaborato" di essere letti e scritti quando vengono usati in un'associazione Windows Communication Foundation (WCF).
<Configurazione>
<system.serviceModel>
<Associazioni>
<Custombinding>
<Associazione>
<webMessageEncoding>
Sintassi
<webMessageEncoding maxReadPoolSize="Integer"
maxWritePoolSize="Integer"
writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" />
Attributi ed elementi
Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.
Attributi
Attributo | Descrizione |
---|---|
maxReadPoolSize |
Numero di messaggi che è possibile leggere contemporaneamente senza allocare nuovi lettori. Dimensioni maggiori del pool rendono il sistema più tollerante ai picchi di attività al costo di un working set superiore. L'impostazione predefinita è 64 lettori per ogni codificatore interno (testo, JSON e "non elaborato"). Sebbene l'aumento di questo numero determini un maggiore consumo di memoria, in questo modo il codificatore sarà in grado di gestire picchi improvvisi di messaggi in arrivo usando i lettori del pool già creati anziché crearne di nuovi. |
maxWritePoolSize |
Numero di messaggi che è possibile inviare contemporaneamente senza allocare nuovi writer. Dimensioni maggiori del pool rendono il sistema più tollerante ai picchi di attività al costo di un working set superiore. L'impostazione predefinita è 16 writer per ogni codificatore interno (testo, JSON e "non elaborato"). Sebbene l'aumento di questo numero determini un maggiore consumo di memoria, in questo modo il codificatore sarà in grado di gestire picchi improvvisi di messaggi in uscita usando i writer del pool già creati anziché crearne di nuovi. |
writeEncoding |
Specifica la codifica del set di caratteri da usare per l'emissione dei messaggi dell'associazione. I valori validi sono: - UnicodeFffeTextEncoding: codifica Big Endian Unicode. - Utf16TextEncoding: codifica Unicode. - Utf8TextEncoding: codifica a 8 bit. L'impostazione predefinita è Utf8TextEncoding. L'attributo è di tipo Encoding. |
Elementi figlio
Elemento | Descrizione |
---|---|
<readerQuotas> | Definisce i vincoli sulla complessità dei messaggi SOAP che possono essere elaborati dagli endpoint configurati con questa associazione. L'elemento è di tipo XmlDictionaryReaderQuotasElement. |
Elementi padre
Elemento | Descrizione |
---|---|
<Associazione> | Definisce tutte le funzionalità di associazione dell'associazione personalizzata. |
Commenti
La codifica è il processo di trasformazione di un messaggio in una sequenza di byte. La decodifica è il processo inverso. Questi processi richiedono la specifica di una codifica caratteri.
L'elemento webMessageEncoding
delega a una serie di codificatori interni la gestione di codifiche XML di testo normale e JSON e dati binari non elaborati. Questa delega viene eseguita mediante un codificatore di messaggi composto.
Questo elemento di associazione e il relativo codificatore composto vengono usati per controllare la codifica in scenari che non usano la messaggistica SOAP usata dall'elemento webHttpBinding
. Questi scenari includono POX (Plain Old XML), REST (Representational State Transfer), RSS (Really Simple Syndication ) e AJAX (Atom syndication and Asynchronous JavaScript and XML). Il codificatore di messaggi composto non supporta SOAP o WS-Addressing.
L'elemento di associazione può essere configurato con una codifica dei caratteri di scrittura mediante l'attributo writeEncoding
. Il valore Encoding fornito specifica il comportamento in scrittura per le codifiche JSON e XML di testo. In lettura viene interpretata qualsiasi codifica di messaggi e codifica di testo valida.
Le proprietà maxReadPoolSize
e maxWritePoolSize
possono inoltre essere usate per impostare rispettivamente il numero massimo di lettori e il numero massimo di writer da allocare. Per impostazione predefinita vengono allocati 64 lettori e 16 writer.
I vincoli di complessità predefiniti vengono impostati anche usando l'elemento <readerQuotas> per proteggere da una classe di attacchi DOS (Denial of Service) che tentano di usare la complessità del messaggio per collegare le risorse di elaborazione degli endpoint.
Esempio
<webMessageEncoding maxReadPoolSize="256"
maxWritePoolSize="128"
messageVersion="None"
textEncoding="utf-8" />