Vorgehensweise: Erstellen eines unidirektionalen VertragsHow to: Create a One-Way Contract

Dieses Thema zeigt die grundlegenden Schritte zum Erstellen von Methoden, die einen unidirektionalen Vertrag verwenden.This topic shows the basic steps to create methods that use a one-way contract. Solche Methoden rufen Vorgänge in einem Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienst von einem Client auf, erwarten aber keine Antwort.Such methods invoke operations on a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service from a client but do not expect a reply. Dieser Vertragstyp kann verwendet werden, um z. B. Benachrichtigungen für viele Abonnenten zu veröffentlichen.This type of contract can be used, for example, to publish notifications to many subscribers. 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.You can also use one-way contracts when creating a duplex (two-way) contract, which allows clients and servers to communicate with each other independently so that either can initiate calls to the other. So wird insbesondere dem Server ermöglicht, unidirektionale Aufrufe an den Client durchzuführen, die der Client als Ereignisse behandeln kann.This can allow, in particular, the server to make one-way calls to the client that the client can treat as events. Ausführliche Informationen zum Angeben von unidirektionalen Methoden finden Sie in der Beschreibung zur IsOneWay-Methode und zur OperationContractAttribute-Klasse.For detailed information about specifying one-way methods, see the IsOneWay property and the OperationContractAttribute class.

Weitere Informationen finden Sie unterFor more information aboutErstellen eine Clientanwendung für einen Duplexvertrag finden Sie unter Vorgehensweise: Access Services mit unidirektionalen und Anforderung-Antwort-Verträgen. creating a client application for a duplex contract, see How to: Access Services with One-Way and Request-Reply Contracts. Ein funktionierendes Beispiel finden Sie unter der unidirektionale Beispiel.For a working sample, see the One-Way sample.

So erstellen Sie einen unidirektionalen VertragTo create a one-way contract

  1. Erstellen Sie einen Dienstvertrag, indem Sie die ServiceContractAttribute-Klasse auf die Schnittstelle anwenden, die die Methoden definiert, die der Dienst implementieren soll.Create the service contract by applying the ServiceContractAttribute class to the interface that defines the methods the service is to implement.

  2. Geben Sie an, welche Methoden in der Schnittstelle ein Client aufrufen kann, indem Sie die OperationContractAttribute-Klasse auf die Methoden anwenden.Indicate which methods in the interface a client can invoked by applying the OperationContractAttribute class to them.

  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.Designate operations that must have no output (no return value and no out or ref parameters) as one-way by setting the IsOneWay property to true. 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.Note that the operations that carry the OperationContractAttribute class satisfy a request-reply contract by default because the IsOneWay property is false by default. Wenn Sie einen unidirektionalen Vertrag für die Methode definieren möchten, müssen Sie den Wert der Attributeigenschaft folglich explizit auf true festlegen.So you must explicitly specify the value of the attribute property to be true if you want a one-way contract for the method.

BeispielExample

Im folgenden Codebeispiel wird ein Vertrag für einen Dienst definiert, der mehrere unidirektionale Methoden besitzt.The following code example defines a contract for a service that includes several one-way methods. Alle diese Methoden haben unidirektionale Verträge mit Ausnahme von Equals, das standardmäßig auf Anforderung-Antwort festgelegt ist und ein Ergebnis zurückgibt.All of the methods have one-way contracts except Equals, which defaults to request-reply and returns a result.

[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

Siehe auchSee Also

ServiceContractAttribute
OperationContractAttribute
Entwerfen und Implementieren von DienstenDesigning and Implementing Services
Vorgehensweise: Definieren eines DienstvertragsHow to: Define a Service Contract
SitzungSession
Vorgehensweise: Erstellen eines DuplexvertragsHow to: Create a Duplex Contract