Procedure: Een eenrichtingscontract maken
In dit onderwerp worden de basisstappen beschreven voor het maken van methoden die gebruikmaken van een eenrichtingscontract. Dergelijke methoden roepen bewerkingen aan op een WCF-service (Windows Communication Foundation) van een client, maar verwachten geen antwoord. Dit type contract kan bijvoorbeeld worden gebruikt om meldingen te publiceren naar veel abonnees. U kunt ook eenrichtingscontracten gebruiken bij het maken van een dubbelzijdig (tweerichtingscontract), zodat clients en servers onafhankelijk met elkaar kunnen communiceren, zodat beide aanroepen naar de andere kunnen initiëren. Dit kan met name de server toestaan om in één richting aan te roepen naar de client die de client als gebeurtenissen kan behandelen. Zie de IsOneWay eigenschap en de OperationContractAttribute klasse voor gedetailleerde informatie over het opgeven van methoden in één richting.
Zie How to: Access Services with One-Way and Request-Reply Contracts (Services openen met Eenrichtings- en Request-Reply Contracts) voor meer informatie over het maken van een clienttoepassing voor een dubbelzijdig contract. Zie het one-way-voorbeeld voor een werkend voorbeeld.
Een eenrichtingscontract maken
Maak het servicecontract door de ServiceContractAttribute klasse toe te passen op de interface die de methoden definieert die de service moet implementeren.
Geef aan welke methoden in de interface een client kan worden aangeroepen door de OperationContractAttribute klasse erop toe te passen.
Geef bewerkingen op die geen uitvoer mogen hebben (geen retourwaarde en geen out- of ref-parameters) als eenrichting door de IsOneWay eigenschap in te stellen op
true
. Houd er rekening mee dat de bewerkingen met de OperationContractAttribute klasse standaard voldoen aan een aanvraag-antwoordcontract omdat de IsOneWay eigenschap standaard isfalse
. U moet dus expliciet de waarde van de kenmerkeigenschap opgeven alstrue
u een eenrichtingscontract voor de methode wilt.
Opmerking
In het volgende codevoorbeeld wordt een contract gedefinieerd voor een service met verschillende methoden in één richting. Alle methoden hebben contracten in één richting, behalve Equals
, die standaard een aanvraag-antwoord geven en een resultaat retourneert.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
[OperationContract(IsOneWay=true)]
void Clear();
[OperationContract(IsOneWay = true)]
void AddTo(double n);
[OperationContract(IsOneWay = true)]
void SubtractFrom(double n);
[OperationContract(IsOneWay = true)]
void MultiplyBy(double n);
[OperationContract(IsOneWay = true)]
void DivideBy(double n);
[OperationContract]
double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession
<OperationContract(IsOneWay:=True)> _
Sub Clear()
<OperationContract(IsOneWay:=True)> _
Sub AddTo(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub SubtractFrom(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub MultiplyBy(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub DivideBy(ByVal n As Double)
<OperationContract()> _
Function Equal() As Double
End Interface