Condividi tramite


<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 utilizzati in un'associazione Windows Communication Foundation (WCF).

<system.serviceModel>
  <bindings>
    <associazionePersonalizzata>
      <associazione>
        <webMessageEncoding>

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

Attributi ed elementi

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 utilizzando 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 utilizzando i writer del pool già creati anziché crearne di nuovi.

writeEncoding

Specifica la codifica del set di caratteri da utilizzare per l'emissione dei messaggi dell'associazione. I valori validi sono:

  • UnicodeFffeTextEncoding: codifica Unicode Big Endian.
  • Utf16TextEncoding: codifica Unicode.
  • Utf8TextEncoding: codifica a 8 bit.

L'impostazione predefinita è Utf8TextEncoding. Questo attributo è di tipo Encoding.

Elementi figlio

Elemento Descrizione

<quoteReader>

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.

Osservazioni

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 utilizzati per controllare la codifica in scenari che non utilizzano la messaggistica SOAP utilizzata 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 utilizzate 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 inoltre impostati utilizzando l'elemento <quoteReader> al fine di realizzare la protezione contro una classe di attacchi di tipo Denial of Service (DoS) che tentano di utilizzare la complessità dei messaggi per bloccare le risorse di elaborazione dell'endpoint.

Esempio

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

Vedere anche

Riferimenti

<associazionePersonalizzata>
WebMessageEncodingElement
CustomBinding
MessageEncodingBindingElement
WebMessageEncodingBindingElement

Concetti

Codifica dei messaggi

Altre risorse

Choosing a Message Encoder
Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings