Share via


Introduzione all'estendibilità

Il modello dell'applicazione Windows Communication Foundation (WCF) è progettato per soddisfare la maggior 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 deve 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 protezione, 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 viene fatta distinzione tra i messaggi destinati a un canale corrispondente e quelli 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 ulteriori informazioni sull'estensione della fase di esecuzione dell'applicazione, vedere Estensione di ServiceHost e del livello del modello di servizi.

Estensione della protezione

Per creare meccanismi di protezione personalizzati, quali token e credenziali, è necessario estendere il sistema di protezione. Per ulteriori informazioni, vedere Estensione della protezione.

Estensione di metadati

Per esporre i metadati diversamente dall'impostazione predefinita, è necessario estendere il sistema dei metadati. Per ulteriori 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 ulteriori 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 ulteriori informazioni, vedere Estensione delle associazioni.

Estensione del sistema di canali

Per creare canali che supportino funzionalità di trasporto o di protocollo personalizzate, vedere Estensione del livello del 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 ulteriori informazioni, vedere Estensione di ServiceHost e del livello del modello di servizi.

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

Vedere anche

Altre risorse

Estensione di WCF