Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento vengono illustrati i criteri per la scelta tra i tre trasporti principali inclusi in Windows Communication Foundation (WCF): HTTP, TCP e named pipe. WCF include anche un trasporto di accodamento messaggi (noto anche come MSMQ), ma questo documento non tratta l'accodamento messaggi.
Il modello di programmazione WCF separa le operazioni degli endpoint, espresse in un contratto di servizio, dal meccanismo di trasporto che connette due endpoint. Ciò offre la flessibilità necessaria per decidere come esporre i servizi alla rete.
In WCF si specifica come trasferire i dati in una rete tra endpoint usando un'associazione costituita da una sequenza di elementi di associazione. Un trasporto è rappresentato da un elemento di associazione di trasporto, che fa parte dell'associazione. Un'associazione include elementi facoltativi di associazione del protocollo, ad esempio la sicurezza, un elemento di associazione del codificatore di messaggi obbligatorio e un elemento di associazione di trasporto obbligatorio. Un trasporto invia o riceve la forma serializzata di un messaggio da o verso un'altra applicazione.
Se è necessario connettersi a un client o a un server esistente, potrebbe non essere possibile scegliere di utilizzare un trasporto specifico. Tuttavia, i servizi WCF possono essere resi accessibili tramite più endpoint, ognuno con un trasporto diverso. Quando un singolo trasporto non copre i destinatari previsti per il servizio, valutare la possibilità di esporre il servizio su più endpoint. Le applicazioni client possono quindi usare l'endpoint più adatto.
Dopo aver scelto un trasporto, è necessario selezionare un'associazione che lo utilizza. È possibile scegliere un'associazione fornita dal sistema (vedere associazioniSystem-Provided) oppure è possibile creare un'associazione personalizzata (vedere Associazioni personalizzate). È anche possibile creare un proprio collegamento. Per ulteriori dettagli, vedere Creazione di associazioni User-Defined.
Vantaggi di ogni trasporto
Questa sezione descrive i motivi principali per scegliere uno dei tre trasporti principali, incluso un grafico decisionale dettagliato per la scelta tra di essi.
Quando usare il trasporto HTTP
HTTP è un protocollo di richiesta/risposta tra client e server. L'applicazione più comune è costituita da client Web browser che comunicano con un server Web. Il client invia una richiesta a un server, in ascolto dei messaggi di richiesta client. Quando il server riceve una richiesta, restituisce una risposta che contiene lo stato della richiesta. In caso di esito positivo, vengono restituiti dati facoltativi, ad esempio una pagina Web, un messaggio di errore o altre informazioni. Per altre informazioni sul protocollo HTTP, vedere HTTP - Hypertext Transfer Protocol.
Il protocollo HTTP non è basato sulla connessione. Una volta inviata la risposta, non viene mantenuto alcuno stato. Per gestire le transazioni a più pagine, l'applicazione deve mantenere qualsiasi stato necessario.
In WCF, l'associazione di trasporto HTTP è ottimizzata per l'interoperabilità con sistemi non WCF legacy. Se tutte le parti di comunicazione usano WCF, le associazioni basate su TCP o basate su named pipe sono più veloci. Per altre informazioni, vedere NetTcpBinding e NetNamedPipeBinding.
Quando usare il trasporto TCP
TCP è un servizio di distribuzione orientato ai flussi basato sulla connessione con rilevamento e correzione degli errori end-to-end. In base alla connessione viene stabilita una sessione di comunicazione tra host prima di scambiare dati. Un host è qualsiasi dispositivo in una rete TCP/IP identificata da un indirizzo IP logico.
TCP offre un recapito affidabile dei dati e una facilità d'uso. In particolare, TCP invia una notifica al mittente del recapito dei pacchetti, garantisce che i pacchetti vengano recapitati nello stesso ordine in cui vengono inviati, ritrasmetta i pacchetti persi e garantisce che i pacchetti di dati non vengano duplicati. Si noti che questo recapito affidabile si applica tra due nodi TCP/IP e non è la stessa cosa di WS-ReliableMessaging, che si applica tra endpoint, indipendentemente dal numero di nodi intermedi che possono includere.
Il trasporto TCP WCF è ottimizzato per lo scenario in cui entrambe le estremità della comunicazione usano WCF. Questa associazione è l'associazione WCF più veloce per gli scenari che comportano la comunicazione tra computer diversi. Gli scambi di messaggi utilizzano il BinaryMessageEncodingBindingElement per il trasferimento ottimizzato dei messaggi. TCP fornisce comunicazione duplex e quindi può essere usato per implementare contratti duplex, anche se il client si trova dietro NAT (Network Address Translation).
Quando utilizzare il trasporto named pipe
Una named pipe è un oggetto nel kernel del sistema operativo Windows, ad esempio una sezione della memoria condivisa che i processi possono usare per la comunicazione. Una named pipe ha un nome e può essere usata per la comunicazione unidirezionale o duplex tra processi in un singolo computer.
Quando è necessaria la comunicazione tra diverse applicazioni WCF su un singolo computer e si desidera impedire qualsiasi comunicazione da altri computer, è consigliabile usare il trasporto tramite pipe nominate. Una restrizione aggiuntiva consiste nel fatto che i processi in esecuzione da Desktop remoto di Windows possono essere limitati alla stessa sessione di Desktop remoto di Windows, a meno che non dispongano di privilegi elevati.
Avvertimento
Quando si usa il trasporto a pipe nominate con una prenotazione di URL con wildcard debole in più siti ospitati in IIS, è possibile che si verifichi il seguente errore: si è verificato un errore nel servizio di attivazione 'NetPipeActivator' del protocollo 'net.pipe' mentre si tenta di ascoltare il sito '2', quindi il protocollo è disabilitato temporaneamente per il sito. Per altri dettagli, vedere il messaggio di eccezione. URL: WeakWildcard:net.pipe:/<nome macchina>/ Stato: Registrazione conflittuale Eccezione: Nome processo: SMSvcHost ID processo: 1076\
Punti decisionali per la scelta di un trasporto
Nella tabella seguente vengono descritti i punti decisionali comuni utilizzati per scegliere un trasporto. È consigliabile prendere in considerazione eventuali attributi e trasporti aggiuntivi applicabili all'applicazione. Identificare gli attributi importanti per l'applicazione, identificare i trasporti che associano favorevolmente a ognuno degli attributi e quindi selezionare i trasporti che funzionano meglio con il set di attributi.
| Attributo | Descrizione | Trasporti preferiti |
|---|---|---|
| Diagnostica | La diagnostica consente di rilevare automaticamente i problemi di connettività del trasporto. Tutti i trasporti supportano la possibilità di inviare informazioni sugli errori che descrivono la connettività. WCF non include tuttavia strumenti di diagnostica per l'analisi dei problemi di rete. | Nessuno |
| Servizi di hosting | Tutti gli endpoint WCF devono essere ospitati all'interno di un'applicazione. IIS 6.0 e versioni precedenti supportano solo applicazioni che usano il trasporto HTTP. In Windows Vista viene aggiunto il supporto per l'hosting di tutti i trasporti WCF, incluse tcp e named pipe. Per altre informazioni, vedere Hosting in Internet Information Services and Hosting in Windows Process Activation Service. | Protocollo 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 controllo dai dati, semplificando la compilazione di strumenti che controllano e analizzano i messaggi. Anche i trasporti facili da controllare possono richiedere una minore potenza di elaborazione nelle appliance di rete. Il livello di sicurezza usato influisce sul fatto che i messaggi possano essere controllati. | Protocollo HTTP |
| Latenza | La latenza è la quantità minima di tempo necessaria per completare uno scambio di messaggi. Tutte le operazioni di rete hanno una latenza maggiore o minore a seconda della scelta del trasporto. L'uso di comunicazioni duplex o unidirezionale con un trasporto il cui modello di scambio di messaggi nativo è request-reply, ad esempio HTTP, può causare una latenza aggiuntiva a causa della correlazione forzata dei messaggi. In questo caso, prendere in considerazione l'uso di un trasporto il cui modello di scambio di messaggi nativo è duplex, ad esempio TCP. | TCP, denominato Pipa |
| Raggio d'azione | La portata di un trasporto riflette il modo in cui il trasporto è in grado di connettersi con altri sistemi. Il trasporto con pipe denominata ha pochissimo raggio; può connettersi solo ai servizi in esecuzione nello stesso computer. I trasporti TCP e HTTP hanno una copertura eccellente e possono penetrare alcune configurazioni NAT e firewall. Per altre informazioni, vedere Uso di nat e firewall. | HTTP, TCP |
| Sicurezza | La sicurezza è la possibilità di proteggere i messaggi durante il trasferimento fornendo riservatezza, integrità o autenticazione. La riservatezza protegge un messaggio dall'esame, l'integrità protegge un messaggio dall'essere modificato e l'autenticazione garantisce il mittente o il destinatario del messaggio. WCF supporta la sicurezza del trasferimento sia a livello di messaggio che a livello di trasporto. La sicurezza dei messaggi si integra con un trasporto se il trasporto supporta una modalità di trasferimento bufferizzato. Il supporto per la sicurezza del trasporto varia a seconda del trasporto scelto. I trasporti HTTP, TCP e named pipe hanno una parità ragionevole nel supporto per la sicurezza del trasporto. |
Tutti |
| Capacità di produzione | La velocità effettiva misura la quantità di dati che possono essere trasmessi ed elaborati in un periodo di tempo specificato. Analogamente alla latenza, il trasporto scelto può influire sulla velocità effettiva per le operazioni del servizio. Per ottimizzare la velocità effettiva per un trasporto è necessario ridurre al minimo il sovraccarico di trasmissione del contenuto e ridurre al minimo il tempo impiegato in attesa del completamento degli scambi di messaggi. I trasporti TCP e named pipe aggiungono un sovraccarico minimo al corpo del messaggio e supportano una forma duplex nativa che riduce l'attesa delle risposte del messaggio. | TCP, pipe nominata |
| Strumentazione | Gli strumenti rappresentano il supporto di applicazioni di terze parti per un protocollo per lo sviluppo, la diagnosi, l'hosting e altre attività. Lo sviluppo di strumenti e software per lavorare con il protocollo HTTP implica un investimento particolarmente elevato. | Protocollo HTTP |