Proprietà di configurazione di formattatori e canali

In questo argomento vengono elencate e descritte tutte le proprietà di configurazione che è possibile specificare per le implementazioni di IChannel nel sistema .NET Remoting. Tutti i valori sono rappresentati da stringhe quando sono dichiarati nel file di configurazione, ma quando si genera la proprietà IDictionary a livello di codice, i valori integer possono essere specificati come integer (senza virgolette) o come stringhe (valori tra virgolette) e i valori boolean come boolean. Tutti gli altri valori sono specificati come stringhe. Nell'esempio di codice riportato di seguito viene illustrato come sono rappresentati i valori in un file di configurazione in un elemento <channel>. Se si desidera specificare un template in cui si utilizzi un tipo presente nella cache dell'assembly globale, per consentire l'associazione al tipo corretto è necessario includere tutte le informazioni sul controllo delle versioni e sui nomi sicuri.

<channel 
   name="MyCustomChannel"  
   priority="2"
   type="CustomChannelName, CustomAssembly, Version=1.0.6940.0, Culture=neutral, PublicKeyToken=somepublickeystring" 
/>

Nell'esempio di codice riportato di seguito viene mostrato come sono rappresentati i valori se specificati a livello di codice per un dominio applicazione server. In questo caso, il server specifica che dal sistema remoto deve essere utilizzato un oggetto HttpChannel per il trasporto, ma un oggetto BinaryFormatter per la serializzazione e la deserializzazione.

Dim props = New Hashtable() As IDictionary
props("name") = "ChannelName1" 
Dim channel As New HttpChannel( _
   props, _
   Nothing, _
   New BinaryServerFormatterSinkProvider() _
)
ChannelServices.RegisterChannel(channel)

[C#]
IDictionary props = new Hashtable();
props["name"] = "MyHttpChannel";
HttpChannel channel = new HttpChannel(
   props, 
   null, 
   new BinaryServerFormatterSinkProvider()
);
ChannelServices.RegisterChannel(channel);

Nella tabella riportata di seguito vengono illustrate le proprietà di canale generale che è possibile specificare.

Proprietà Descrizione Tipi che supportano la proprietà
name Il nome del canale. Se non si specificano proprietà name, l'impostazione predefinita del sistema sarà "http" o "tcp". Se si desidera registrare più HttpChannel o TcpChannel, assegnare un nome univoco a ciascuno. Impostare questa proprietà su una stringa vuota ("" o String.Empty) per ignorare i nomi evitando conflitti. Il sistema accetta qualsiasi numero di canale con la proprietà name impostata su String.Empty. Tale proprietà viene utilizzata per recuperare un canale specifico quando si chiama ChannelServices.GetChannel(). Per informazioni dettagliate, vedere Canali. HttpChannel
HttpServerChannel
HttpClientChannel
TcpChannel
TcpClientChannel
TcpServerChannel
priority Qualunque valore integer che rappresenta la priorità assegnata al canale. Il numero è direttamente proporzionale alla probabilità che il canale venga scelto per primo per la connessione. La priorità predefinita è 1 e non sono consentiti numeri negativi. HttpChannel
HttpServerChannel
HttpClientChannel
TcpChannel
TcpClientChannel
TcpServerChannel

Nella tabella riportata di seguito vengono illustrate le proprietà di canale client che è possibile specificare.

Proprietà Descrizione Tipi che supportano la proprietà
clientConnectionLimit Valore integer che indica il numero di connessioni contemporanee consentite su un dato server. Il valore predefinito è 2. HttpChannel
HttpClientChannel
proxyName Il nome del computer proxy. HttpChannel
HttpClientChannel
proxyPort Valore integer che indica la porta proxy. HttpChannel
HttpClientChannel
timeout Numero di millisecondi da attendere prima che si verifichi il timeout di una richiesta. -1 indica un tempo di attesa infinito. HttpChannel
HttpClientChannel
machineName Stringa che specifica il nome del computer utilizzato con il canale corrente. Consente di eseguire l'override del nome del computer specificato nell'oggetto dati del canale.

Utilizzare il nome DNS (Domain Name System) del computer è in genere una buona soluzione, ma quando l'indirizzo IP di una particolare scheda di interfaccia di rete (Network Interface Card, NIC), di solito senza fili, cambia rapidamente, è necessario configurare l'applicazione in modo che per attivare la comunicazione remota, per trovare il computer tramite DNS, venga utilizzato machineName.

Quando però il nome del computer non viene risolto rapidamente, o non viene risolto affatto, e quando il computer dispone di più NIC, fisiche o virtuali, come spesso avviene per le connessioni remote o per le schede di rete VPN, è necessario impostare la proprietà machineName sull'indirizzo IP della NIC correntemente utilizzata per la specifica connessione.

HttpChannel
HttpClientChannel
TcpChannel
TcpClientChannel
allowAutoRedirect Ottiene o imposta un valore che indica se la gestione automatica dei reindirizzamenti del server è attivata. HttpChannel
HttpClientChannel
credentials Ottiene o imposta un'implementazione di ICredentials che rappresenta l'identità del client. HttpChannel
HttpClientChannel
useAuthenticatedConnectionSharing Valore booleano che indica che nel canale server non verrà autenticata ogni chiamata in entrata, ma verranno riutilizzate le connessioni autenticate. Per impostazione predefinita il valore viene impostato su true se anche il valore useDefaultCredentials è impostato su true; in caso contrario, il valore verrà impostato su false e, qualora il server richieda l'autenticazione, verrà autenticata ogni singola chiamata. Lo stesso vale anche per l'equivalente a livello di codice, che si ottiene creando un oggetto che implementi IDictionary, impostando il valore "credentials" su CredentialCache.DefaultCredentials e passandolo al sink del canale, oppure utilizzando IDictionary restituito dal metodo ChannelServices.GetChannelSinkProperties.

La coppia nome/valore in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Microsoft Windows 98, Windows NT 4.0, Windows Millennium Edition (Windows Me), Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

HttpChannel
HttpClientChannel
unsafeAuthenticatedConnectionSharing Valore booleano che indica che il client fornirà le proprie credenziali e il nome del gruppo di connessioni che il server dovrebbe utilizzare per creare un gruppo di connessioni autenticate. Se il valore è impostato su true, il valore connectionGroupName dovrà essere mappato a un solo utente autenticato. Questa coppia nome/valore verrà ignorata se il valore useAuthenticatedConnectionSharing è impostato su true.

La coppia nome/valore in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

HttpChannel
HttpClientChannel
connectionGroupName Nome che verrà utilizzato come nome del gruppo di connessioni sul server se è specificato anche il valore unsafeAuthenticatedConnectionSharing. Questa coppia nome/valore verrà ignorata se il valore unsafeAuthenticatedConnectionSharing non è impostato su true. Se specificato, verificare che il nome sia mappato a un solo utente autenticato.

La coppia nome/valore in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

HttpChannel
HttpClientChannel

Nota   In Windows 98 e Windows Me non è previsto alcun ID di protezione per identificare il nome del gruppo di connessioni di autenticazione. Su queste piattaforme il nome del gruppo di connessioni è quindi unico.

Se si desidera che, mediante l'applicazione, vengano passati l'implementazione di ICredentials o valori username, password e domain espliciti nelle proprietà HttpClientChannel, è possibile attivare la condivisione della connessione di autenticazione passando anche le coppie nome/valore unsafeAuthenticatedConnectionSharing e connectionGroupName, assicurandosi che tramite il valore connectionGroupName venga eseguito il mapping a un solo utente autenticato.

Nella tabella riportata di seguito vengono illustrate le proprietà di canale server che è possibile specificare.

Proprietà Descrizione Tipi che supportano la proprietà
port Valore integer che specifica la porta su cui attenderà il canale. HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel
suppressChannelData Valore booleano che specifica se il canale contribuirà ai dati del canale. HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel
useIpAddress Valore booleano che specifica se nell'URL di pubblicazione verrà utilizzato l'indirizzo IP in luogo del nome del computer. Nelle reti senza fili, ad esempio, l'indirizzo IP di un computer portatile che si sposta nella rete viene spesso modificato. Se si specifica false per questo valore, invece dell'indirizzo verrà utilizzato il nome del computer, in modo che le comunicazioni remote non vengano disconnesse nel corso del roaming. L'impostazione predefinita è true. HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel
bindTo Stringa che specifica l'indirizzo IP della scheda di interfaccia di rete (Network Interface Card, NIC) alla quale deve collegarsi il canale server. HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel
machineName Stringa che consente di eseguire l'override del nome del computer inserito nei dati del canale. Specificando questo valore, si esegue l'override di useIpAddress. HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel
listen Valore booleano che specifica se consentire l'attivazione per l'hook in IChannelReceiverHook.WantsToListen. HttpChannel
HttpServerChannel
rejectRemoteRequests Valore booleano che specifica se rifiutare le richieste provenienti da altri computer. Se si specifica true, saranno consentite solo le chiamate remote effettuate dal computer locale. TcpChannel
TcpServerChannel
exclusiveAddressUse Valore booleano che specifica se il canale impedirà che la combinazione indirizzo/porta IP venga riutilizzata in altre applicazioni. Se impostata sul valore predefinito true, questa proprietà imposterà l'opzione del socket server SocketOptionName su SocketOptionName.ExclusiveAddressUse.

La proprietà in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows NT 4.0 con Service Pack 4.0 o successivo, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

Nelle piattaforme precedenti di Windows Server 2003 family la proprietà richiede privilegi di amministratore.

HttpChannel
HttpServerChannel
TcpChannel
TcpServerChannel

Nella tabella riportata di seguito vengono illustrate le proprietà di sink di canale che è possibile specificare.

Proprietà Descrizione Tipi che supportano la proprietà
includeVersions Valore booleano che specifica se nel formattatore devono essere incluse le informazioni sul controllo delle versioni. BinaryClientFormatterSink
BinaryServerFormatterSink
SoapClientFormatterSink
SoapServerFormatterSink
strictBinding Indica che, mediante un formattatore ricevente, si tenterà in primo luogo di identificare il tipo utilizzando le eventuali informazioni complete sulla versione; altrimenti, verranno utilizzati solo il nome del tipo e il nome dell'assembly, senza le informazioni sulla versione. Il valore predefinito per entrambi i formattatori forniti dal sistema è false. Per informazioni dettagliate, vedere Elemento <formatter> (modello). BinaryServerFormatterSink, SoapServerFormatterSink
metadataEnabled Valore booleano che specifica se rispettare le richieste che terminano con "?wsdl" qualora il sink corrente si trovi nella catena dei sink di canale. L'impostazione predefinita è true. Se il sink è impostato su false, verrà generata un'eccezione in tutti i casi in cui saranno richiesti metadati per qualsiasi oggetto del dominio applicazione.

La proprietà in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

SdlChannelSink
remoteApplicationMetadataEnabled Valore booleano che specifica se rispettare le richieste per l'oggetto URI (Uniform Resource Identifier) "RemoteApplicationMetadata?wsdl", che restituisce il linguaggio di descrizione dei servizi Web (WSDL) mediante il quale sono descritti tutti gli oggetti pubblicati dal dominio applicazione. Se è impostato su false, per ogni richiesta a "RemoteApplicationMetadata.rem" sarà generata un'eccezione. Tutte le altre richieste "?wsdl" per specifici URI di oggetto verranno rispettate. Se è impostato su true, la richiesta di metadati globale verrà rispettata. L'impostazione predefinita è false.

La proprietà in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

SdlChannelSink
typeFilterLevel Valore stringa che specifica il livello di deserializzazione automatica tentata da un canale server. I valori supportati sono Low (predefinito) e Full. Per informazioni dettagliate sui livelli di deserializzazione, vedere Deserializzazione automatica in .NET Remoting.

La proprietà in questione è supportata solo nella versione 1.1 di .NET Framework per le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Me, Windows 2000, Windows XP Home Edition, Windows XP Professional e Windows Server 2003 family.

BinaryServerFormatterSink
SoapServerFormatterSink

Vedere anche

Configurazione | Configurazione di oggetti remoti | Schema delle impostazioni remote