Vorgehensweise: Erstellen eines unidirektionalen Vertrags

Dieses Thema zeigt die grundlegenden Schritte zum Erstellen von Methoden, die einen unidirektionalen Vertrag verwenden. Solche Methoden rufen Vorgänge in einem Windows Communication Foundation (WCF)-Dienst von einem Client auf, erwarten aber keine Antwort. Dieser Vertragstyp kann verwendet werden, um z. B. Benachrichtigungen für viele Abonnenten zu veröffentlichen. Sie können unidirektionale Verträge auch beim Erstellen eines Duplexvertrags (bidirektionalen Vertrags) verwenden. Dies ermöglicht eine unabhängige Kommunikation zwischen Clients und Servern, sodass beide Aufrufe des jeweils anderen initiieren können. So wird insbesondere dem Server ermöglicht, unidirektionale Aufrufe an den Client durchzuführen, die der Client als Ereignisse behandeln kann. Ausführliche Informationen zum Angeben von unidirektionalen Methoden finden Sie in der Beschreibung zur IsOneWay-Methode und zur OperationContractAttribute-Klasse.

Weitere Informationen über zum Erstellen einer Clientanwendung für einen Duplexvertrag finden Sie unter Vorgehensweise: Zugreifen auf WCF-Dienste mit unidirektionalen und Anforderung-Antwort-Verträgen. Ein Arbeitsbeispiel finden Sie im Beispiel Unidirektional.

So erstellen Sie einen unidirektionalen Vertrag

  1. Erstellen Sie einen Dienstvertrag, indem Sie die ServiceContractAttribute-Klasse auf die Schnittstelle anwenden, die die Methoden definiert, die der Dienst implementieren soll.

  2. Geben Sie an, welche Methoden in der Schnittstelle ein Client aufrufen kann, indem Sie die OperationContractAttribute-Klasse auf die Methoden anwenden.

  3. Definieren Sie die Vorgänge, die keine unidirektionale Ausgabe (keinen Rückgabewert und keine out- oder ref-Parameter) haben dürfen, indem Sie die IsOneWay-Eigenschaft auf true festlegen. Beachten Sie, dass alle Vorgänge mit der OperationContractAttribute-Klasse standardmäßig einen Anforderung-Antwort-Vertrag erfüllen, weil die IsOneWay-Eigenschaft standardmäßig false lautet. Wenn Sie einen unidirektionalen Vertrag für die Methode definieren möchten, müssen Sie den Wert der Attributeigenschaft folglich explizit auf true festlegen.

Beispiel

Im folgenden Codebeispiel wird ein Vertrag für einen Dienst definiert, der mehrere unidirektionale Methoden besitzt. Alle diese Methoden haben unidirektionale Verträge mit Ausnahme von Equals, das standardmäßig auf Anforderung-Antwort festgelegt ist und ein Ergebnis zurückgibt.

<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
[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();
}

Siehe auch

Aufgaben

Gewusst wie: Definieren eines Windows Communication Foundation-Dienstvertrags
Sitzung
Vorgehensweise: Erstellen eines Duplexvertrags

Verweis

ServiceContractAttribute
OperationContractAttribute

Konzepte

Entwerfen und Implementieren von Diensten