Scelta di un trasporto

In questo argomento vengono esaminati i criteri per la scelta fra i tre trasporti principali inclusi in Windows Communication Foundation (WCF): HTTP, TCP e named pipe. WCF include anche un trasporto di accodamento messaggi (anche noto come MSMQ), ma l'accodamento messaggi non verrà preso in esame nel presente documento.

Il modello di programmazione di WCF separa le operazioni dell'endpoint (come indicato in un contratto di servizio) dal meccanismo di trasporto che collega due endpoint. In questo modo è possibile decidere come esporre i servizi sulla rete.

In WCF è possibile specificare come trasferire i dati attraverso una rete tra endpoint mediante un'associazione, costituita da una sequenza di elementi di associazione. Per trasporto si intende un elemento di associazione del trasporto che fa parte dell'associazione. Un'associazione include elementi di associazione del protocollo facoltativi, ad esempio la protezione, un elemento di associazione del codificatore dei messaggi obbligatorio e un elemento di associazione del trasporto obbligatorio. Un trasporto invia o riceve il messaggio in formato serializzato da o verso un'altra applicazione.

Se è necessario connettersi a un client o un server esistente, la scelta di utilizzare un particolare trasporto potrebbe essere obbligata. Tuttavia, i servizi WCF possono essere resi accessibili tramite più endpoint, ognuno con un trasporto diverso. Quando un singolo trasporto non include i destinatari desiderati per il servizio, è consigliabile esporre il servizio su più endpoint. Le applicazioni client possono quindi utilizzare l'endpoint più appropriato.

Dopo avere scelto un trasporto, è necessario selezionare un'associazione che lo utilizzi. È possibile scegliere un'associazione fornita dal sistema (vedere Associazioni fornite dal sistema) o compilare un'associazione personalizzata (vedere Associazioni personalizzate). È inoltre possibile creare un'associazione. Per ulteriori informazioni, vedere Creazione di associazioni definite dall'utente.

Vantaggi di ogni trasporto

In questa sezione vengono illustrati i motivi principali per cui scegliere uno dei tre trasporti principali, incluso un grafico dettagliato per agevolare la scelta.

Quando utilizzare il trasporto HTTP

HTTP è un protocollo di richiesta/risposta tra client e server. L'ambito di applicazione più comune è costituito da client del browser Web che comunicano con un server Web. Il client invia una richiesta a un server che è in ascolto dei messaggi di richiesta del client. Quando il server riceve una richiesta, restituisce una risposta che contiene lo stato della richiesta. Se la richiesta ha esito positivo, vengono restituiti dati facoltativi, ad esempio una pagina Web, un messaggio di errore o altre informazioni. Per ulteriori informazioni sul protocollo HTTP, vedere HTTP (Hypertext Transfer Protocol) (la pagina potrebbe essere in inglese) .

Il protocollo HTTP non è basato sulla connessione; quando la risposta è stata inviata, lo stato non viene gestito. Per gestire transazioni a più pagine, l'applicazione deve rendere persistente lo stato necessario.

In WCF, l'associazione di trasporto HTTP è ottimizzata per l'interoperabilità con sistemi legacy diversi da WCF. Se tutte le parti in comunicazione utilizzano WCF, le associazioni basate su TCP o sulle named pipe sono più veloci. Per ulteriori informazioni, vedere NetTcpBinding e NetNamedPipeBinding.

Quando utilizzare il trasporto TCP

TCP è un servizio di recapito basato sulla connessione e orientato al flusso con rilevamento e correzione degli errori end-to-end. Per basato sulla connessione si intende che viene stabilita una sessione di comunicazione tra host prima di scambiare dati. Un host è qualsiasi dispositivo su una rete TCP/IP identificato da un indirizzo IP logico.

TCP garantisce affidabilità nel recapito dei dati e facilità d'uso. In particolare, TCP segnala al mittente il recapito del pacchetto, garantisce che i pacchetti vengano recapitati nello stesso ordine nel quale sono stati inviati, ritrasmette i pacchetti perduti e assicura che i pacchetti di dati non vengano duplicati. Il recapito affidabile si verifica tra due nodi TCP/IP e si differenzia da WS-ReliableMessaging, che si verifica tra endpoint, indipendentemente dai nodi intermedi inclusi.

Il trasporto TCP WCF è ottimizzato per lo scenario in cui entrambe le parti in comunicazione utilizzano WCF. Questa è l'associazione WCF più veloce per gli scenari che coinvolgono la comunicazione tra computer diversi. Gli scambi di messaggi utilizzano BinaryMessageEncodingBindingElement per ottimizzare il trasferimento del messaggio. TCP supporta la comunicazione duplex e pertanto può essere utilizzato per implementare contratti duplex, anche se il client è basato su NAT (Network Address Translation).

Quando utilizzare il trasporto di named pipe

Una named pipe è un oggetto nel kernel del sistema operativo Windows, ad esempio una sezione della memoria condivisa che i processi possono utilizzare per la comunicazione. Le named pipe hanno un nome e possono essere utilizzate per la comunicazione unidirezionale o duplex tra processi in un singolo computer.

Se è richiesta la comunicazione tra diverse applicazioni WCF in un singolo computer e si desidera impedire qualsiasi comunicazione da un altro computer, è consigliabile utilizzare il trasporto di named pipe. Un vincolo ulteriore consiste nella possibilità di limitare i processi in esecuzione dal desktop remoto di Windows alla stessa sessione di Connessione desktop remoto, a meno che dispongano di privilegi elevati.

Fattori essenziali per la scelta di un trasporto

Nella tabella seguente vengono illustrati i fattori essenziali utilizzati per scegliere un trasporto. È necessario considerare qualsiasi attributo e trasporto aggiuntivo applicabile all'applicazione. Identificare gli attributi che sono importanti per l'applicazione, identificare i trasporti che possono essere agevolmente associati a ognuno degli attributi e quindi selezionare i trasporti che funzionano meglio con gli attributi utilizzati.

Attributo Descrizione Trasporti consigliati

Diagnostica

La diagnostica consente di rilevare automaticamente problemi di connettività del trasporto. Tutti i trasporti supportano la possibilità di restituire informazioni sull'errore che descrivano le condizioni di connettività. Tuttavia, WCF non include strumenti di diagnostica per l'analisi dei problemi della rete.

None

Host

Tutti gli endpoint WCF devono essere ospitati in un'applicazione. IIS 6.0 e versioni precedenti supportano solo applicazioni host che utilizzano il trasporto HTTP. In Windows Vista è stato aggiunto il supporto che consente di ospitare tutti i trasporti WCF, incluso TCP e named pipe. Per ulteriori informazioni, vedere Host in Internet Information Services e Hosting nel servizio di attivazione dei processi di Windows.

HTTP

Ispezione

L'ispezione è la possibilità di estrarre ed elaborare informazioni dai messaggi durante la trasmissione. Il protocollo HTTP separa le informazioni di routing e di controllo dai dati, semplificando la creazione di strumenti in grado di ispezionare e analizzare i messaggi. I tipi di trasporto facilmente controllabili possono richiedere anche minore capacità di elaborazione nei dispositivi di rete. La possibilità di controllare i messaggi dipende dal livello di protezione utilizzato.

HTTP

Latenza

La latenza è il periodo minimo di tempo richiesto per completare un scambio di messaggi. Tutte le operazioni di rete sono caratterizzate da una latenza maggiore o minore a seconda del trasporto scelto. L'uso della comunicazione duplex o unidirezionale con un trasporto il cui modello di scambio messaggi nativo è richiesta-risposta, ad esempio HTTP, può provocare una latenza aggiuntiva a causa della correlazione forzata dei messaggi. In questa situazione, è consigliabile utilizzare un trasporto il cui modello di scambio messaggi nativo sia duplex, ad esempio TCP.

TCP, Named

Pipe

Portata

La portata di un trasporto indica la capacità di connessione del trasporto con altri sistemi. Il trasporto di named pipe ha una portata molto limitata, in quanto può connettersi solo a servizi che sono in esecuzione nello stesso computer. I trasporti TCP e HTTP hanno entrambi una portata eccellente e possono penetrare alcune configurazioni basate su NAT e firewall. Per ulteriori informazioni, vedere Utilizzo di conversioni NAT e firewall.

HTTP, TCP

Protezione

La protezione è la possibilità di proteggere i messaggi durante il trasferimento garantendo riservatezza, integrità o autenticazione. La riservatezza garantisce che un messaggio non possa essere esaminato, l'integrità protegge un messaggio dalle modifiche e l'autenticazione fornisce garanzie sul mittente o il destinatario del messaggio.

WCF supporta la protezione del trasferimento sia a livello di messaggio che a livello di trasporto. La protezione dei messaggi si integra con un trasporto se questo supporta una modalità di trasferimento con memorizzazione nel buffer. Il supporto della protezione del trasporto varia a seconda del trasporto scelto. I trasporti HTTP, TCP e named pipe sono a un livello di parità ragionevole nel supporto della protezione del trasporto.

Tutti

Velocità effettiva

La velocità effettiva misura la quantità di dati che possono essere trasmessi ed elaborati in uno specifico periodo di tempo. Analogamente alla latenza, il trasporto scelto può influire sulla velocità effettiva per le operazioni del servizio. Per ottimizzare la velocità effettiva di un trasporto, è necessario ottimizzare sia il sovraccarico legato alla trasmissione del contenuto che il tempo trascorso in attesa del completamento dello scambio del messaggio. Sia il trasporti TCP che named pipe aggiungono un sovraccarico minimo al corpo del messaggio e supportano una forma duplex nativa che riduce l'attesa per le risposte del messaggio.

TCP, named pipe

Strumenti

Gli strumenti rappresentano la possibilità che un protocollo supporti applicazioni di terze parti per lo sviluppo, la diagnosi, l'hosting e altre attività. Lo sviluppo di strumenti e software da utilizzare con il protocollo HTTP comporta un investimento notevole.

HTTP

Vedere anche

Riferimenti

BasicHttpBinding
WsHttpBinding
WsDualHttpBinding
WsFederationHttpBinding
HttpTransportBindingElement
NetTcpBinding
TcpTransportBindingElement
NetNamedPipeBinding
NamedPipeTransportBindingElement

Concetti

Associazioni fornite dal sistema
Creazione di associazioni definite dall'utente

Altre risorse

Associazioni di Windows Communication Foundation