Procedura: creare un contratto request/reply

In questo argomento vengono illustrati i passaggi di base per creare metodi che utilizzano un contratto request/reply. Tali metodi richiamano operazioni in un servizio Windows Communication Foundation (WCF) e prevedono una risposta. La replica deve essere inviata e correlata alla richiesta in base ai termini di questo contratto. Anche se questo metodo restituisce void, l'infrastruttura crea e invia un messaggio vuoto per indicare al chiamante che il metodo è stato restituito. L'unico modo per annullare la creazione e l'invio di un messaggio di risposta è utilizzare un contratto unidirezionale per l'operazione.

Per ulteriori informazioni su come specificare contratti di operazione, vedere la classe OperationContractAttribute e, in particolare, la proprietà IsOneWay.

Per ulteriori informazioni sulla creazione di un'applicazione client per un contratto duplex, vedere Procedura: accedere a servizi WCF con un contratto unidirezionale o request/reply.

Per creare un contratto request/reply

  1. Creare il contratto di servizio applicando la classe ServiceContractAttribute all'interfaccia e che definisce i metodi del servizio da implementare.

  2. Indicare quali metodi nell'interfaccia possono essere chiamati dal client applicando loro la classe OperationContractAttribute.

  3. Il valore della proprietà IsOneWay indica se un'operazione restituisce un messaggio di risposta. Se un'operazione prevede un contratto request/reply, questa proprietà è impostata su false. Se l'operazione dispone di un contratto unidirezionale, la proprietà è impostata su true. Tutte le operazioni che contengono la classe OperationContractAttribute soddisfanno per impostazione predefinita un contratto request/reply perché la proprietà IsOneWay è false per impostazione predefinita. Pertanto è facoltativo specificare in modo esplicito il valore della proprietà dell'attributo in modo che sia false.

Esempio

Nell'esempio seguente è definito un contratto per un servizio calcolatrice che fornisce metodi Add e Subtract. Mediante questo contratto, un client chiama i metodi Add e Subtract e attende, rispettivamente, la restituzione della somma e della differenza. Il metodo Multiply privato non fa parte del contratto perché non è contrassegnato dalla classe OperationContractAttribute e quindi non è accessibile ai client.

using System.ServiceModel; 

[ServiceContract] 
public interface ICalculator 
{ 
[OperationContract] 
// It would be equivalent to write explicitly:
// [OperationContract(IsOneWay=false)] 
int Add(int a, int b); 

[OperationContract] 
int Subtract(int a, int b); 

int Multiply(int a, int b)
}
  • Il contrassegno dell'interfaccia di un contratto di servizio tramite la classe ServiceContractAttribute e dei relativi metodi tramite la classe OperationContractAttribute consente la generazione automatica di definizioni del contratto di servizio nel linguaggio di descrizione dei servizi Web (WSDL, Web Services Description Language), nei contatti client e nel codice dopo la distribuzione del servizio.
  • Una definizione visibile esternamente di un contratto di servizio WCF è accessibile dopo che il servizio è stato distribuito come documento WSDL standard che specifica le operazioni e i rispettivi input e output. WSDL viene visualizzato aggiungendo la query ?wsdl all'indirizzo base HTTP del servizio e puntando il browser sull'URI (Uniform Resource Identifier) risultante.

Vedere anche

Attività

Procedura: creare un contratto duplex

Riferimenti

OperationContractAttribute

Concetti

Progettazione dei contratti di servizio