Scelta di un canale
Questo argomento è specifico di una tecnologia legacy mantenuta per una questione di compatibilità con le applicazioni esistenti di versioni precedenti e non è consigliato per il nuovo sviluppo. Le applicazioni distribuite devono ora essere sviluppate utilizzando Windows Communication Foundation (WCF).
L'infrastruttura dei servizi remoti di .NET Framework fornisce le implementazioni di canale seguenti:
IpcChannel
La classe IpcChannel utilizza named pipe per fornire una veloce comunicazione interprocesso per applicazioni a più processi sullo stesso computer. Classe IpcChannel:
Comunica con mittente e destinatario utilizzando named pipe.
Supporta la codifica di payload in formato binario e il formato di serializzazione standard SOAP.
Genera e utilizza ChannelDataStore per i riferimenti all'oggetto.
Supporta la rappresentazione e la delega.
Supporta elenchi di controllo di accesso (ACL) sul named pipe per un controllo di accesso avanzato.
Utilizzare un IpcChannel quando un'applicazione deve comunicare con un'altra applicazione che è in esecuzione in un processo diverso sullo stesso computer. Dal momento che IpcChannel utilizza named pipe, di norma le applicazioni possono ottenere le migliori prestazioni di comunicazione migliore e utilizzare rappresentazione e delega per controllare l'accesso all'oggetto remoto. Questa funzionalità è particolarmente utile tra il secondo e il terzo livello di un'applicazione a tre livelli che deve funzionare bene sotto carico.
TcpChannel
La classe TcpChannel utilizza un formattatore binario per serializzare tutti i messaggi in un flusso binario e trasportare il flusso all'URI (Uniform Resource Identifier) di destinazione utilizzando il protocollo TCP. Un TcpChannel esegue le funzioni seguenti:
Comunica con mittente e destinatario utilizzando socket TCP.
Supporta la codifica di payload in formato binario e il formato di serializzazione standard SOAP.
Genera e utilizza ChannelDataStore per i riferimenti all'oggetto.
Supporta la rappresentazione e la delega.
Supporta la crittografia SSPI.
Un TcpChannel apre e memorizza nella cache tante connessioni quanti sono i thread a eseguire richieste a un altro server in quel momento. Le connessioni socket vengono chiuse sul client dopo 15-20 secondi di inattività.
Se si stanno compilando molte applicazioni che utilizzano .NET Framework Remoting, si potrebbe utilizzare erroneamente un HttpChannel per connettersi a un dominio dell'applicazione server in attesa con un TcpChannel. Se si effettua questa connessione, il client riceve l'eccezione seguente: "Connessione sottostante chiusa: si è verificato un errore imprevisto in un'operazione di ricezione." Se si ha un client che riceve questa eccezione, sarà necessario esaminare client e server alla ricerca dei canali non corrispondenti.
HttpChannel
La classe HttpChannel trasporta messaggi da e verso gli oggetti remoti utilizzando il protocollo SOAP. Tutti i messaggi passano da un SoapFormatter, dove il messaggio viene modificato in XML e serializzato, e le intestazioni SOAP obbligatorie vengono aggiunte al flusso. Se è specificato anche il formattatore binario, viene creato un flusso di dati binario. Il flusso di dati viene quindi trasportato all'URI di destinazione utilizzando il protocollo HTTP. Un HttpChannel è conforme a SOAP 1.1 ed esegue le funzioni seguenti:
Comunica con mittente e destinatario utilizzando il protocollo HTTP come trasporto.
Supporta la codifica di payload in SOAP, uno standard di codifica XML, e in formato binario.
Imposta il destinatario per ricevere richieste HTTP e inviare risposte HTTP in ASP.NET e su un socket TCP.
Genera e utilizza ChannelDataStore per i riferimenti all'oggetto.
Supporta la rappresentazione e la delega.
Supporta la crittografia SSPI.
Nota: |
---|
Per utilizzare un HttpChannel sul client con Microsoft Internet Explorer, non è possibile impostare la configurazione automatica delle impostazioni proxy in Internet Explorer. Le impostazioni proxy devono invece essere impostate in modo esplicito in Internet Explorer. |
Un HttpChannel apre contemporaneamente solo un numero specificato di connessioni a un server specificato. L'impostazione predefinita è due, ma è possibile utilizzare l'attributo clientConnectionLimit in un file di configurazione dell'applicazione per modificare l'impostazione predefinita.
Se si stanno compilando molte applicazioni che utilizzano .NET Framework Remoting, si potrebbe utilizzare erroneamente un HttpChannel per connettersi a un dominio dell'applicazione server in attesa con un TcpChannel. Se si effettua questa connessione, il client riceve l'eccezione seguente: "Connessione sottostante chiusa: si è verificato un errore imprevisto in un'operazione di ricezione." Se si ha un client che riceve questa eccezione, sarà necessario esaminare client e server alla ricerca dei canali non corrispondenti.
Vedere anche
Riferimento
HttpChannel
TcpChannel
IpcChannel