Glossario di Windows Communication Foundation

Di seguito sono elencate le definizioni dei termini utilizzati in Windows Communication Foundation (WCF).

Termini

Termine Definizione

indirizzo

Un indirizzo specifica il percorso dove i messaggi vengono ricevuti. Viene specificato come Uniform Resource Identifier (URI). La parte relativa allo schema URI denomina il meccanismo di trasporto da utilizzare per raggiungere l'indirizzo, ad esempio HTTP e TCP. La parte gerarchica dell'URI contiene un percorso univoco il cui formato dipende dal meccanismo di trasporto. L'indirizzo endpoint consente di creare indirizzi endpoint univoci per ogni endpoint in un servizio o, a determinate condizioni, di condividere un indirizzo tra gli endpoint.

endpoint applicazione

Endpoint esposto dall'applicazione che corrisponde a un contratto di servizio implementato dall'applicazione.

comportamento

Un comportamento è un componente che controlla vari aspetti in fase di esecuzione di un servizio, di un endpoint, di una particolare operazione o di un client. I comportamenti sono raggruppati in base allo scopo. I comportamenti comuni influiscono globalmente su tutti gli endpoint, i comportamenti del servizio influiscono solo sugli aspetti relativi al servizio, i comportamenti dell'endpoint influiscono solo sulle proprietà relative all'endpoint e i comportamenti a livello di operazione influiscono su particolari operazioni.

associazione

Un'associazione definisce come avviene la comunicazione da parte di un endpoint. È costituita da un insieme di componenti denominati elementi di associazione "impilati" uno sopra l'altro per creare l'infrastruttura di comunicazione. Un'associazione definisce almeno il trasporto (ad esempio HTTP o TCP) e la codifica (ad esempio testo o binaria) utilizzati. Un'associazione può contenere elementi di associazione che specificano dettagli come i meccanismi di protezione utilizzati per proteggere i messaggi o il modello del messaggio utilizzato da un endpoint.

elemento di associazione

Un elemento di associazione rappresenta una particolare parte dell'associazione, ad esempio un trasporto, una codifica, un'implementazione di un protocollo a livello di infrastruttura (ad esempio WS-ReliableMessaging) o qualsiasi altro componente dello stack di comunicazione.

canale

Un canale è un'implementazione concreta di un elemento di associazione. L'associazione rappresenta la configurazione e il canale è l'implementazione associata a tale configurazione. Per ogni elemento di associazione è pertanto presente un canale associato. I canali si dispongono uno sopra l'altro per creare l'implementazione concreta dell'associazione, ovvero lo stack dei canali.

applicazione client

Un'applicazione client è un programma che scambia messaggi con uno o più endpoint. L'applicazione client inizia creando un'istanza di un client WCF e chiamando metodi del client WCF. È importante notare che una stessa applicazione può essere sia un client sia server.

codifica

Consente allo sviluppatore di mantenere uno stretto controllo su tutti i componenti del servizio o del client ed eventuali impostazioni eseguite tramite la configurazione possono essere controllate e se necessario sottoposte a override dal codice. Il controllo di un'applicazione può essere eseguito tramite codifica, tramite configurazione o tramite una combinazione di entrambe.

configurazione

La configurazione presenta il vantaggio di consentire a qualcun altro oltre allo sviluppatore, ad esempio a un amministratore di rete, di impostare parametri del client e del servizio dopo che il codice è stato scritto e senza doverlo ricompilare. La configurazione non solo consente di impostare valori come gli indirizzi endpoint ma fornisce anche un maggior controllo consentendo di aggiungere endpoint, associazioni e comportamenti. Il controllo di un'applicazione può essere eseguito tramite configurazione, tramite codifica o tramite una combinazione di entrambe.

contratto

Un contratto è una specifica di supporto per un determinato tipo di contratto. Un contratto di servizio, ad esempio, è una specifica per un gruppo di operazioni. In WCF, i contratti presentano una gerarchia che rispecchia gli oggetti descrizione appartenenti allo spazio dei nomi System.ServiceModel.Description. Un contratto di servizio è l'ambito di contratto più esteso di WCF. Ogni operazione di servizio di un contratto di servizio presenta un contratto di operazione che specifica i messaggi, compresi i messaggi di errore, che l'operazione è in grado di scambiare nonché la direzione dello scambio. Ogni messaggio di un'operazione presenta un contratto di messaggio, ovvero una specifica della struttura della SOAP envelope del messaggio. Inoltre, ogni contratto di messaggio presenta un contratto di dati che specifica le strutture di dati contenute nei messaggi.

contratto dati

I tipi di dati utilizzati da un servizio devono essere descritti nei metadati per consentire ad altri di interagire con il servizio. Le descrizioni dei tipi di dati sono note come contratto dati e i tipi possono essere utilizzati in qualsiasi parte di un messaggio, ad esempio come parametri o tipi restituiti. Se il servizio utilizza solo tipi semplici, non è necessario utilizzare esplicitamente i contratti dati.

endpoint

Un endpoint è un costrutto a cui vengono inviati o da cui vengono ricevuti (o entrambe le cose) i messaggi. Comprende un percorso (un indirizzo) che definisce dove i messaggi possono essere inviati, una specifica del meccanismo di comunicazione (un'associazione) che descrive come i messaggi devono essere inviati e una definizione per un insieme di messaggi che possono essere inviati o ricevuti (o entrambe le cose) da quel percorso (un contratto di servizio) che descrive quale messaggio può essere inviato. Un servizio WCF viene esposto come un insieme di endpoint.

contratto di errore

Un contratto di errore può essere associato a un'operazione del servizio per individuare errori che possono essere restituiti al chiamante. Un'operazione può avere zero o più errori associati. Si tratta di errori SOAP modellati come eccezioni nel modello di programmazione. L'eccezione viene convertita in un errore SOAP che può quindi essere inviato al client.

hosting

Un servizio deve essere ospitato in un processo. Un host è un'applicazione che controlla la durata del servizio. I servizi possono essere indipendenti o gestiti da un processo di hosting esistente.

processo di hosting

Un processo di hosting è un'applicazione progettata per ospitare servizi, inclusi Internet Information Services (IIS), Windows Activation Services (WAS) e servizi per Windows. In questi scenari di hosting, l'host controlla la durata del servizio. Ad esempio, tramite IIS è possibile configurare una directory virtuale che contiene l'assembly del servizio e il file di configurazione. Quando un messaggio viene ricevuto, IIS avvia il servizio e ne controlla la durata.

operazione di avvio

Operazione chiamata come prima operazione di una nuova sessione. Le operazioni non di avvio possono essere chiamate solo dopo che è stata chiamata almeno un'operazione di avvio.

modello di istanze

Un servizio è dotato di un modello di istanze. Sono presenti tre modelli di istanze: "singolo," nel quale un solo oggetto CLR provvede a tutti i client, "per chiamata," nel quale viene creato un nuovo oggetto CLR per gestire ogni chiamata del client e "per sessione," nel quale viene creato un insieme di oggetti CLR, uno per ogni sessione separata. La scelta di un modello di istanze dipende dai requisiti dell'applicazione e dal modello di utilizzo previsto del servizio.

messaggio

Un messaggio è un'unità autonoma di dati che può essere costituita da varie parti, incluso corpo e intestazioni.

contratto di messaggio

Un contratto di messaggio descrive il formato di un messaggio. Dichiara, ad esempio, se gli elementi del messaggio devono andare nelle intestazioni invece che nel corpo, quale livello di protezione deve essere applicato e a quali elementi del messaggio e così via.

modalità di protezione a livello di messaggio

La modalità di protezione a livello di messaggio specifica che la protezione viene fornita mediante l'implementazione di una o più specifiche di protezione. Ogni messaggio contiene i meccanismi necessari a fornire protezione durante il transito e a consentire ai destinatari di rilevare manomissioni e decrittografare i messaggi. A tale scopo, la protezione viene incapsulata all'interno di ogni messaggio, fornendo protezione end-to-end tra più hop. Poiché le informazioni sulla protezione diventano parte del messaggio, è inoltre possibile includere più tipi di credenziali nel messaggio, denominati attestazioni. Questo approccio presenta inoltre il vantaggio di consentire al messaggio di viaggiare in modo protetto su qualsiasi trasporto, anche se tra l'origine e la destinazione ne esistono diversi. Lo svantaggio di questo approccio consiste nella complessità dei meccanismi di crittografia adottati, con conseguenti implicazioni sulle prestazioni.

metadati

I metadati di un servizio descrivono le caratteristiche del servizio che devono essere comprese da un'entità esterna per comunicare con il servizio. I metadati possono essere utilizzati dallo strumento ServiceModel Metadata Utility Tool (Svcutil.exe) per generare un client WCF e una configurazione abbinata, che possono essere utilizzati da un'applicazione client per interagire con il servizio. I metadati esposti dal servizio includono documenti dello schema XML che definiscono il contratto di dati del servizio e documenti WSDL che descrivono i metodi del servizio. Se attivati, i metadati del servizio vengono generati automaticamente da WCF tramite il controllo del servizio e dei relativi endpoint. Per pubblicare i metadati associati a un servizio occorre attivare esplicitamente il comportamento dei metadati.

contratto dell'operazione

Un contratto dell'operazione definisce i parametri e il tipo restituito di un'operazione. Quando si crea un'interfaccia che definisce il contratto di servizio, si indica un contratto dell'operazione applicando l'attributo T:System.ServiceModel.OperationContractAttribute a ogni definizione del metodo che fa parte del contratto. Le operazioni possono essere modellate in modo da accettare un solo messaggio e restituire un solo messaggio o in modo da prendere un insieme di tipi e restituire un tipo. Nel secondo caso, il sistema determina il formato dei messaggi che vengono scambiati per quell'operazione.

protezione

La protezione in WCF include riservatezza (crittografia dei messaggi per impedire l'intercettazione), integrità (mezzi per il rilevamento di manomissioni del messaggio), autenticazione (mezzi per la convalida di server e client) e autorizzazione (controllo di accesso alle risorse). Queste funzioni vengono fornite basandosi sui meccanismi di protezione esistenti, ad esempio TLS su HTTP (anche noto come HTTPS) o implementando una o più delle varie specifiche di protezione WS-*.

servizio indipendente

Un servizio indipendente è un servizio in esecuzione all'interno di un'applicazione di processo creata dallo sviluppatore. Lo sviluppatore ne controlla la durata, imposta le proprietà del servizio, apre il servizio (impostandolo in modalità di ascolto) e chiude il servizio.

servizio

Un servizio è un costrutto che espone uno o più endpoint che a loro volta espongono una o più operazioni del servizio.

contratto di servizio

Il contratto di servizio unisce più operazioni correlate in una sola unità funzionale. Il contratto può definire impostazioni a livello di servizio, ad esempio lo spazio dei nomi del servizio, un contratto callback corrispondente e altre impostazioni simili. Nella maggior parte dei casi, il contratto viene definito creando un'interfaccia nel linguaggio di programmazione selezionato e applicando l'attributo T:System.ServiceModel.ServiceContractAttribute all'interfaccia. Il codice del servizio effettivo viene determinato implementando l'interfaccia.

operazione del servizio

Un'operazione del servizio è una procedura definita nel codice di un servizio che implementa la funzionalità per un'operazione. Questa operazione viene esposta ai client come metodi in un client WCF. Il metodo può restituire un valore e può accettare zero, uno o più argomenti e può non restituire alcuna risposta. Ad esempio, un'operazione che funziona come saluto ("Hello") può essere utilizzata come notifica della presenza di un client e per iniziare una serie di operazioni.

associazioni fornite dal sistema

WCF include numerose associazioni fornite dal sistema. Si tratta di insiemi di elementi di associazione ottimizzati per scenari specifici. Ad esempio, l'associazione T:System.ServiceModel.WSHttpBinding è progettata per l'interoperabilità con servizi che implementano varie specifiche WS-*. Queste associazioni consentono di risparmiare tempo presentando solo quelle opzioni che possono essere applicate correttamente allo scenario specifico. Se una di queste associazioni non soddisfa i requisiti, è possibile crearne una personalizzata.

operazione di chiusura

Operazione chiamata come ultimo messaggio di una sessione esistente. Nel caso predefinito, WCF ricicla l'oggetto servizio e il relativo contesto dopo la chiusura della sessione a cui è associato il servizio.

modalità di protezione del trasporto

La protezione può essere fornita in una delle tre modalità seguenti: a livello di trasporto ("Transport"), a livello di messaggio ("Message") e "Trasporto con credenziale a livello di messaggio" ("TransportWithMessageCredential"). La modalità di protezione a livello di trasporto specifica che la riservatezza, l'integrità e l'autenticazione vengono fornite da meccanismi a livello del trasporto (ad esempio HTTPS). In caso di utilizzo di un trasporto come HTTPS, questa modalità presenta il vantaggio di essere efficiente in termini di prestazioni e di essere ben compresa grazie alla sua prevalenza su Internet. Lo svantaggio consiste nel fatto che questo tipo di protezione viene applicato separatamente su ogni hop nel percorso di comunicazione, rendendo quest'ultima vulnerabile a un attacco di tipo "man in the middle".

modalità di protezione Trasporto con credenziale a livello di messaggio

Questa modalità utilizza il livello del trasporto per fornire riservatezza, autenticazione e integrità dei messaggi, mentre ogni messaggio può contenere più credenziali (attestazioni) richieste dai destinatari del messaggio.

client WCF

Un client WCF è un costrutto dell'applicazione client che espone le operazioni del servizio come metodi (nel linguaggio di programmazione .NET Framework scelto, ad esempio Visual Basic o Visual C#). Qualsiasi applicazione può ospitare un client WCF, inclusa un'applicazione che ospita un servizio. È pertanto possibile creare un servizio che include client WCF di altri servizi. Un client WCF può essere generato automaticamente utilizzando lo strumento ServiceModel Metadata Utility Tool (Svcutil.exe) e puntandolo a un servizio in esecuzione che pubblica metadati.

WS-*

Abbreviazione per l'insieme in continua crescita di specifiche Web Service (WS), ad esempio WS-Security, WS-ReliableMessaging e così via, che sono implementate in WCF.