Condividi tramite


Contratti

Questa sezione illustra come definire e implementare contratti Windows Communication Foundation (WCF). Un contratto di servizio specifica ciò che un endpoint comunica con l'esterno. A livello più concreto, si tratta di una dichiarazione su un insieme di messaggi specifici organizzati in schemi di scambio di messaggi di base (MEPs), come richiesta/risposta, unidirezionale e duplex. Se un contratto di servizio è un set logico di scambi di messaggi, un'operazione del servizio è un singolo scambio di messaggi. Ad esempio, un'operazione Hello deve ovviamente accettare un messaggio (in modo che il chiamante possa annunciare il saluto) e può o meno restituire un messaggio (a seconda della cortesia dell'operazione).

Per altre informazioni sui contratti e altri concetti di base di WCF, vedere Concetti fondamentali di Windows Communication Foundation. Questo argomento è incentrato sulla comprensione dei contratti di servizio. Per altre informazioni su come creare client che usano contratti di servizio per connettersi ai servizi, vedere Cenni preliminari sul client WCF. Per altre informazioni sui canali client, l'architettura client e altri problemi del client, vedere Client.

Informazioni generali

In questo argomento viene fornito un orientamento concettuale generale per la progettazione e l'implementazione di servizi WCF. Gli argomenti secondari forniscono informazioni più dettagliate sulle specifiche della progettazione e dell'implementazione. Prima di progettare e implementare l'applicazione WCF, è consigliabile:

  • Comprendere che cos'è un contratto di servizio, come funziona e come crearne uno.

  • Comprendere che i contratti stabiliscono i requisiti minimi che la configurazione di runtime o l'ambiente di hosting potrebbero non supportare.

Contratti di assistenza

Un contratto di servizio è una dichiarazione che fornisce informazioni su:

  • Raggruppamento di operazioni in un servizio.

  • Firma delle operazioni in termini di messaggi scambiati.

  • Tipi di dati di questi messaggi.

  • Posizione delle operazioni.

  • Protocolli e formati di serializzazione specifici usati per supportare la corretta comunicazione con il servizio.

Ad esempio, un contratto ordine di acquisto potrebbe avere un'operazione CreateOrder che accetta un input di tipi di informazioni sugli ordini e restituisce informazioni sull'esito positivo o negativo, incluso un identificatore dell'ordine. Potrebbe anche essere disponibile un'operazione GetOrderStatus che accetta un identificatore di ordine e restituisce informazioni sullo stato dell'ordine. Un contratto di servizio di questo tipo specifica:

  • Il contratto di ordine di acquisto è costituito da operazioni CreateOrder e GetOrderStatus.

  • Che le operazioni hanno specificato messaggi di input e messaggi di output.

  • Dati che questi messaggi possono trasportare.

  • Istruzioni categoriche sull'infrastruttura di comunicazione necessaria per elaborare correttamente i messaggi. Ad esempio, questi dettagli includono se e quali forme di sicurezza sono necessarie per stabilire una comunicazione corretta.

Per trasmettere queste informazioni alle applicazioni su altre piattaforme (incluse le piattaforme non Microsoft), i contratti di servizio XML vengono espressi pubblicamente in formati XML standard, ad esempio WSDL (Web Services Description Language) e XML Schema (XSD), tra gli altri. Gli sviluppatori per molte piattaforme possono usare queste informazioni sul contratto pubblico per creare applicazioni in grado di comunicare con il servizio, sia perché comprendono il linguaggio della specifica e perché tali linguaggi sono progettati per consentire l'interoperabilità descrivendo i moduli, i formati e i protocolli pubblici supportati dal servizio. Per altre informazioni su come WCF gestisce questo tipo di informazioni, vedere Metadati.

I contratti possono essere espressi in molti modi, tuttavia, e mentre WSDL e XSD sono linguaggi eccellenti per descrivere i servizi in modo accessibile, sono linguaggi difficili da usare direttamente, in ogni caso, sono semplicemente descrizioni di un servizio, non implementazioni del contratto di servizio. Pertanto, le applicazioni WCF usano attributi, interfacce e classi gestiti sia per definire la struttura di che per implementare un servizio.

Il contratto risultante definito nei tipi gestiti può essere convertito (detto anche esportato) come metadati, WSDL e XSD, quando necessario dai client o da altri implementatori di servizi, in particolare in altre piattaforme. Il risultato è un modello di programmazione semplice che può essere descritto usando metadati pubblici per qualsiasi applicazione client. I dettagli dei messaggi SOAP sottostanti, ad esempio le informazioni relative al trasporto e alla sicurezza, possono essere lasciati a WCF, che esegue automaticamente le conversioni necessarie in e dal sistema del tipo di contratto di servizio al sistema di tipi XML.

Per altre informazioni sulla progettazione di contratti, vedere Progettazione di contratti di servizio. Per altre informazioni sull'implementazione dei contratti, vedere Implementazione di contratti di servizio.

WCF offre inoltre la possibilità di sviluppare contratti di servizio interamente a livello di messaggio. Per altre informazioni sullo sviluppo di contratti di servizio a livello di messaggio, vedere Uso dei contratti messaggio. Per altre informazioni sullo sviluppo di servizi in XML non SOAP, vedere Interoperabilità con applicazioni POX.

Informazioni sulla gerarchia dei requisiti

Un contratto di servizio raggruppa le operazioni; specifica il MEP, i tipi di messaggio e i tipi di dati che questi messaggi contengono; e indica le categorie di comportamento di runtime che un'implementazione deve avere per supportare il contratto( ad esempio, potrebbe essere necessario che i messaggi siano crittografati e firmati). Il contratto di servizio stesso, tuttavia, non specifica esattamente il modo in cui questi requisiti sono soddisfatti, solo che devono essere. Tipo di crittografia o modalità di firma di un messaggio dipende dall'implementazione e dalla configurazione di un servizio conforme.

Si noti come il contratto richieda aspetti specifici dell'implementazione del contratto di servizio e della configurazione di runtime per aggiungere un comportamento. Set di requisiti che devono essere soddisfatti per esporre un servizio per l'uso si basa sul set di requisiti precedente. Se un contratto rende i requisiti dell'implementazione, un'implementazione può richiedere ancora più configurazioni e associazioni che consentono l'esecuzione del servizio. Infine, l'applicazione host deve supportare anche tutti i requisiti aggiunti dalla configurazione e dalle associazioni del servizio.

Questo processo di requisiti additivi è importante da tenere presente durante la progettazione, l'implementazione, la configurazione e l'hosting dell'applicazione di servizio Windows Communication Foundation (WCF). Ad esempio, il contratto può specificare che deve supportare una sessione. In tal caso, è necessario configurare l'associazione per supportare tale requisito contrattuale oppure l'implementazione del servizio non funzionerà. In alternativa, se il servizio richiede l'autenticazione integrata di Windows ed è ospitato in Internet Information Services (IIS), l'applicazione Web in cui risiede il servizio deve avere l'autenticazione integrata di Windows attivata e il supporto anonimo è disattivato. Per altre informazioni sulle funzionalità e sull'impatto dei diversi tipi di applicazione host del servizio, vedere Hosting.

Vedere anche