Procedura: creare un contratto request/reply
Un contratto di tipo request/reply specifica un metodo che restituisce una risposta La replica deve essere inviata e correlata alla richiesta in base ai termini di questo contratto. Anche se il metodo non restituisce alcuna risposta (void
in C# o Sub
in Visual Basic), nell'infrastruttura viene creato e inviato un messaggio vuoto al chiamante. Per impedire l'invio di un messaggio di risposta vuoto, utilizzare un contratto unidirezionale per l'operazione.
Per creare un contratto request/reply
Creare un'interfaccia nel linguaggio di programmazione desiderato.
Applicare l'attributo ServiceContractAttribute all'interfaccia.
Applicare l'attributo OperationContractAttribute a ciascun metodo che i client possono richiamare.
Facoltativo. Impostare il valore della proprietà IsOneWay su
true
per impedire l'invio di un messaggio di risposta vuoto. Per impostazione predefinita, tutte le operazioni sono contratti di tipo request/reply.
Esempio
Nell'esempio seguente è definito un contratto per un servizio calcolatrice che fornisce metodi Add
e Subtract
. 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)
}
Per altre informazioni su come specificare i contratti di operazione, vedere la classe OperationContractAttribute e la proprietà IsOneWay.
L'applicazione degli attributi ServiceContractAttribute e OperationContractAttribute determina la generazione automatica delle definizioni del contratto di servizio in un documento del linguaggio di descrizione dei servizi Web (WSDL, Web Services Description Language) dopo la distribuzione del servizio. Il documento viene scaricato aggiungendo l'elemento
?wsdl
all'indirizzo di base HTTP per il servizio, Ad esempio,http://microsoft/CalculatorService?wsdl