Condividi tramite


Introduzione all'estendibilità

Il modello di applicazione Windows Communication Foundation (WCF) è progettato per risolvere la maggior parte dei requisiti di comunicazione di qualsiasi applicazione distribuita. Tuttavia, esistono sempre scenari che il modello di applicazione predefinito e le implementazioni fornite dal sistema non supportano. 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 illustrate altre informazioni su ognuna di esse.

Aree da ampliare

È possibile estendere:

  • Runtime dell'applicazione. Ciò estende l'invio e l'elaborazione dei messaggi per l'applicazione. Questa area include anche l'estensione del sistema di sicurezza, del sistema di metadati, del sistema di serializzazione e delle associazioni e degli elementi di associazione che connettono l'applicazione al sistema di canali sottostante.

  • Il canale e il runtime del canale. Questo estende il sistema che funziona a livello di messaggio, fornendo il protocollo, il trasporto e il supporto della codifica.

  • Runtime dell'host. In questo modo si estende la relazione del dominio dell'applicazione di hosting al canale e al runtime dell'applicazione.

Estensione del runtime dell'applicazione

Nelle applicazioni WCF esiste una distinzione tra i messaggi destinati a un canale e messaggi corrispondenti destinati all'applicazione stessa. I messaggi del canale supportano alcune funzionalità correlate al canale, ad esempio stabilire una conversazione sicura o stabilire una sessione affidabile. Questi messaggi non sono disponibili per il runtime 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 dall'utente o dal cliente. Questi messaggi sono disponibili per il sistema di estensione a livello di applicazione in formato messaggio o oggetto, a seconda delle esigenze.

Tutti i messaggi passano attraverso il sistema di canali; solo i messaggi dell'applicazione vengono passati dal sistema del canale all'applicazione. Per creare nuove funzionalità a livello di canale, è necessario estendere il sistema di canali. Per creare nuove funzionalità a livello di applicazione, è necessario estendere il servizio o il runtime client (rispettivamente dispatcher e channel factory). Per altre informazioni sull'estensione del runtime dell'applicazione, vedere Estensione di ServiceHost e del livello del modello di servizio.

Estensione della sicurezza

Per creare meccanismi di sicurezza personalizzati, ad esempio token e credenziali, è necessario estendere il sistema di sicurezza. Per altre informazioni, vedere Estensione della sicurezza.

Estensione dei metadati

Per esporre i metadati in modo diverso da quello predefinito, è necessario estendere il sistema di metadati. Per altre informazioni, vedere Estensione del sistema di metadati.

Estensione della serializzazione

Per creare codificatori personalizzati, fornire surrogati di dati o altri lavori che coinvolgono la personalizzazione dei dati trasferiti, è necessario estendere il sistema di serializzazione. Per altre informazioni, vedere Estensione di codificatori e serializzatori.

Estensione delle associazioni

Per associare i canali di trasporto o protocollo al livello dell'applicazione, è necessario estendere il sistema di associazione. Per altre informazioni, vedere Estensione delle associazioni.

Estensione del sistema dei canali

Per creare canali che supportano i trasporti personalizzati o la funzionalità del protocollo, vedere Estensione del livello canale.

Estensione del sistema di hosting dei servizi

Per modificare il modello applicativo a livello di servizio, è necessario estendere System.ServiceModel.ServiceHostBase la classe . Per altre informazioni, vedere Estensione di ServiceHost e del livello del modello di servizio.

Per modificare la relazione tra il dominio applicazione di hosting e l'host del servizio, è necessario estendere la System.ServiceModel.Activation.ServiceHostFactory classe . Per altre informazioni, vedere Estensione dell'hosting tramite ServiceHostFactory.

Vedere anche