Introduzione all'estendibilità
Il modello di applicazione Windows Communication Foundation (WCF) è progettato per risolvere gran parte dei requisiti di comunicazione di qualsiasi applicazione distribuita. Esistono tuttavia scenari che non sono supportati dal modello di applicazione predefinito né dalle implementazioni fornite dal sistema. Il modello di estendibilità WCF è progettato per supportare scenari personalizzati consentendo di modificare il comportamento del sistema a ogni livello, anche al punto di sostituire l'intero modello di applicazione. In questo argomento vengono illustrate le varie aree di estensione e vengono forniti i collegamenti alle informazioni aggiuntive relative a ogni area.
Aree da estendere
È possibile estendere:
La fase di esecuzione dell'applicazione. Estende la distribuzione e l'elaborazione di messaggi per l'applicazione. Quest'area include anche l'estensione del sistema di sicurezza, del sistema dei metadati, del sistema della serializzazione e delle associazioni ed elementi di associazione che connettono l'applicazione al sistema di canali sottostante.
Il canale e la fase di esecuzione del canale. Estende il sistema che funziona al livello del messaggio, fornendo protocollo, trasporto e supporto di codifica.
La fase di esecuzione dell'host. Estende la relazione del dominio dell'applicazione host alla fase di esecuzione del canale e dell'applicazione.
Estensione della fase di esecuzione dell'applicazione
Nelle applicazioni WCF esiste una distinzione tra i messaggi destinati a un canale corrispondente e i messaggi destinati all'applicazione stessa. I messaggi del canale supportano alcune funzionalità correlate al canale, ad esempio quella che consente di stabilire una conversazione protetta o una sessione affidabile. Questi messaggi non sono disponibili nella fase di esecuzione dell'applicazione. Vengono elaborati prima che venga coinvolto il livello dell'applicazione.
I messaggi dell'applicazione contengono dati destinati a un'operazione client o di servizio creata personalmente o dal cliente. Questi messaggi sono disponibili nel sistema di estensione al livello dell'applicazione in formato messaggio o oggetto, a seconda delle esigenze specifiche.
Tutti i messaggi passano attraverso il sistema di canali. Solo i messaggi dell'applicazione vengono passati dal sistema di canali nell'applicazione. Per creare una nuova funzionalità a livello di canale, è necessario estendere il sistema di canali. Per creare nuove funzionalità a livello di applicazione, è necessario estendere la fase di esecuzione del servizio o del client (dispatcher e channel factory rispettivamente). Per altre informazioni sull'estensione del runtime dell'applicazione, vedere Estensione di ServiceHost e del livello del modello di servizio.
Estensione della protezione
Per creare meccanismi di sicurezza personalizzati, quali token e credenziali, è necessario estendere il sistema di sicurezza. Per altre informazioni, vedere Estensione della sicurezza.
Estensione di metadati
Per esporre i metadati diversamente dall'impostazione predefinita, è necessario estendere il sistema dei metadati. Per altre informazioni, vedere Estensione del sistema di metadati.
Estensione della serializzazione
Per compilare codificatori personalizzati, fornire surrogati dei dati o eseguire altre operazioni che comportano la personalizzazione di dati trasferiti, è necessario estendere il sistema di serializzazione. Per altre informazioni, vedere Estensione di codificatori e serializzatori.
Estensione delle associazioni
Per associare canali del trasporto o del protocollo al livello dell'applicazione, è necessario estendere il sistema delle associazioni. Per altre informazioni, vedere Estensione dei binding.
Estensione del sistema di canali
Per creare canali che supportano i trasporti personalizzati o la funzionalità del protocollo, vedere Estensione del livello canale.
Estensione del sistema host del servizio
Per modificare il modello di applicazione a livello di servizio, è necessario estendere la classe System.ServiceModel.ServiceHostBase. Per altre informazioni, vedere Estensione di ServiceHost e del livello del modello di servizio.
Per modificare la relazione tra il dominio dell'applicazione host e l'host del servizio, è necessario estendere la classe System.ServiceModel.Activation.ServiceHostFactory. Per altre informazioni, vedere Estensione dell'hosting tramite ServiceHostFactory.