WCF - Architettura
WCF ha un'architettura a più livelli che offre ampio supporto per lo sviluppo di varie applicazioni distribuite. L'architettura è spiegata di seguito in dettaglio.
Contratti
Il livello dei contratti si trova proprio accanto al livello dell'applicazione e contiene informazioni simili a quelle di un contratto reale che specifica il funzionamento di un servizio e il tipo di informazioni accessibili che fornirà. I contratti sono fondamentalmente di quattro tipi discussi di seguito in breve:
Service contract - Questo contratto fornisce informazioni al cliente e al mondo esterno sulle offerte dell'endpoint e sui protocolli da utilizzare nel processo di comunicazione.
Data contract- I dati scambiati da un servizio sono definiti da un contratto dati. Sia il cliente che il servizio devono essere in accordo con il contratto dati.
Message contract- Un contratto dati è controllato da un contratto messaggio. Principalmente esegue la personalizzazione della formattazione del tipo dei parametri del messaggio SOAP. Qui, va menzionato che WCF utilizza il formato SOAP ai fini della comunicazione. SOAP è l'acronimo di Simple Object Access Protocol.
Policy and Binding- Esistono alcune condizioni preliminari per la comunicazione con un servizio e tali condizioni sono definite dalla politica e dal contratto vincolante. Un cliente deve seguire questo contratto.
Runtime del servizio
Il livello di runtime del servizio è appena sotto il livello dei contratti. Specifica i vari comportamenti del servizio che si verificano durante il runtime. Esistono molti tipi di comportamenti che possono essere configurati e rientrano nel runtime del servizio.
Throttling Behavior - Gestisce il numero di messaggi elaborati.
Error Behavior - Definisce il risultato di qualsiasi errore di servizio interno.
Metadata Behavior - Specifica la disponibilità dei metadati nel mondo esterno.
Instance Behavior - Definisce il numero di istanze che devono essere create per renderle disponibili per il client.
Transaction Behavior - Consente una modifica dello stato della transazione in caso di errore.
Dispatch Behavior - Controlla il modo in cui un messaggio viene elaborato dall'infrastruttura di WCF.
Concurrency Behavior - Controlla le funzioni che vengono eseguite in parallelo durante una comunicazione client-server.
Parameter Filtering - Presenta il processo di convalida dei parametri di un metodo prima che venga richiamato.
Messaggistica
Questo livello, composto da più canali, si occupa principalmente del contenuto del messaggio da comunicare tra due endpoint. Un insieme di canali forma uno stack di canali ei due principali tipi di canali che compongono lo stack di canali sono i seguenti:
Transport Channels - Questi canali sono presenti nella parte inferiore di uno stack e sono responsabili dell'invio e della ricezione di messaggi utilizzando protocolli di trasporto come HTTP, TCP, Peer-to-Peer, Named Pipes e MSMQ.
Protocol Channels - Presenti in cima a uno stack, questi canali noti anche come canali a strati, implementano protocolli a livello di filo modificando i messaggi.
Attivazione e hosting
L'ultimo livello dell'architettura WCF è il luogo in cui i servizi sono effettivamente ospitati o possono essere eseguiti per un facile accesso da parte del client. Questo viene fatto da vari meccanismi discussi di seguito in breve.
IIS- IIS sta per Internet Information Service. Offre una miriade di vantaggi utilizzando il protocollo HTTP da un servizio. Qui non è necessario disporre del codice host per l'attivazione del codice di servizio; invece, il codice di servizio viene attivato automaticamente.
Windows Activation Service- Questo è comunemente noto come WAS e viene fornito con IIS 7.0. Sia la comunicazione basata su HTTP che quella non HTTP è possibile qui utilizzando i protocolli TCP o Namedpipe.
Self-hosting- Questo è un meccanismo mediante il quale un servizio WCF viene ospitato autonomamente come applicazione console. Questo meccanismo offre una straordinaria flessibilità in termini di scelta dei protocolli desiderati e impostazione del proprio schema di indirizzamento.
Windows Service - Ospitare un servizio WCF con questo meccanismo è vantaggioso, in quanto i servizi rimangono quindi attivati e accessibili al client a causa della mancata attivazione del runtime.