Procedura: creare un contratto Windows Communication Foundation con una classe
Il modo preferito per creare un contratto Windows Communication Foundation (WCF) consiste nell'usare un'interfaccia. Per altre informazioni vedere Procedura: Definire un contratto di servizio. Un'alternativa, illustrata qui, consiste nel creare una classe e quindi nell'applicare l'attributo ServiceContractAttribute direttamente alla classe e l'attributo OperationContractAttribute a ognuno dei metodi nella classe che fanno parte del contratto.
Avviso
[ServiceContract]
e [ServiceContractAttribute]
eseguono la stessa operazione. La stessa situazione è valida per [OperationContract]
e [OperationContractAttribute]
. In ogni caso il primo è l'abbreviazione del secondo.
Per altre informazioni sui contratti di servizio, vedere Progettazione di contratti di servizio.
Creazione di un contratto Windows Communication Foundation con una classe
Creare una nuova classe utilizzando Visual Basic, C# o qualsiasi altro linguaggio Common Language Runtime.
Applicare la classe ServiceContractAttribute alla classe.
Creare metodi nella classe.
Applicare la classe OperationContractAttribute a ogni metodo che deve essere esposto come parte del contratto WCF pubblico.
Esempio
Nell'esempio di codice seguente viene illustrata una classe che definisce un contratto di servizio.
[ServiceContract]
public class CalculatorService
{
[OperationContract]
public double Add(double n1, double n2)
{
return n1 + n2;
}
[OperationContract]
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
[OperationContract]
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
[OperationContract]
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
<ServiceContract()> _
Public Class CalculatorService
<OperationContract()> _
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
Return n1 + n2
End Function
<OperationContract()> _
Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
Return n1 - n2
End Function
<OperationContract()> _
Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
Return n1 * n2
End Function
<OperationContract()> _
Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
Return n1 / n2
End Function
End Class
I metodi a cui è applicata la classe OperationContractAttribute usano per impostazione predefinita un modello di messaggio request/reply. Per altre informazioni su questo criterio di messaggio, vedere Procedura: Creare un contratto Request/Reply. È anche possibile creare e utilizzare altri modelli di messaggio impostando proprietà dell'attributo. Per altri esempi, vedere Procedura: Creare un contratto unidirezionale e Procedura: Creare un contratto duplex.