Gör så här: Skapa ett enkelriktade kontrakt
Det här avsnittet visar de grundläggande stegen för att skapa metoder som använder ett enkelriktade kontrakt. Sådana metoder anropar åtgärder på en WCF-tjänst (Windows Communication Foundation) från en klient men förväntar sig inget svar. Den här typen av kontrakt kan till exempel användas för att publicera meddelanden till många prenumeranter. Du kan också använda enkelriktade kontrakt när du skapar ett dubbelriktade (dubbelriktade) kontrakt som gör att klienter och servrar kan kommunicera med varandra oberoende av varandra så att de kan initiera anrop till varandra. Detta kan särskilt göra det möjligt för servern att göra enkelriktade anrop till klienten som klienten kan behandla som händelser. Detaljerad information om hur du anger envägsmetoder finns i IsOneWay egenskapen och OperationContractAttribute klassen.
Mer information om hur du skapar ett klientprogram för ett duplex-kontrakt finns i How to: Access Services with One-Way and Request-Reply Contracts (Åtkomsttjänster med enkelriktade och begärandesvarskontrakt). Ett arbetsexempel finns i One-Way-exemplet .
Så här skapar du ett envägskontrakt
Skapa tjänstkontraktet genom att tillämpa ServiceContractAttribute klassen på det gränssnitt som definierar de metoder som tjänsten ska implementera.
Ange vilka metoder i gränssnittet som en klient kan anropa genom att tillämpa klassen på OperationContractAttribute dem.
Ange åtgärder som inte får ha några utdata (inget returvärde och inga ut- eller referensparametrar) som enkelriktade genom att ange IsOneWay egenskapen till
true
. Observera att de åtgärder som bär OperationContractAttribute klassen uppfyller ett begäran-svar-kontrakt som standard eftersom egenskapen IsOneWay ärfalse
som standard. Därför måste du uttryckligen ange värdet för attributegenskapen omtrue
du vill ha ett enkelriktat kontrakt för metoden.
Exempel
I följande kodexempel definieras ett kontrakt för en tjänst som innehåller flera enkelriktade metoder. Alla metoder har enkelriktade kontrakt utom Equals
, som standard för att begära svar och returnerar ett resultat.
[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