Gewusst wie: Erstellen eines Anforderung-Antwort-VertragsHow to: Create a Request-Reply Contract

Ein Anforderung-Antwort-Vertrag gibt eine Methode an, die eine Antwort zurückgibt.A request-reply contract specifies a method that returns a reply. Die Antwort muss gesendet und unter den Bedingungen dieses Vertrags mit der Anforderung in Beziehung gesetzt werden.The reply must be sent and correlated to the request under the terms of this contract. Selbst wenn die Methode keine Antwort (void in C# oder Sub in Visual Basic) zurückgibt, wird von der Infrastruktur eine leere Nachricht erstellt und gesendet, um dem Aufrufer mitzuteilen, dass die Methode einen Wert zurückgegeben hat.Even if the method returns no reply (void in C#, or a Sub in Visual Basic), the infrastructure creates and sends an empty message to the caller. Verwenden Sie einen unidirektionalen Vertrag für die Operation, um das Senden einer leeren Mitteilung zu unterbinden.To prevent the sending of an empty reply message, use a one-way contract for the operation.

So erstellen Sie einen Anforderung-Antwort-VertragTo create a request-reply contract

  1. Erstellen Sie in der Programmiersprache Ihrer Wahl eine Schnittstelle.Create an interface in the programming language of your choice.

  2. Fügen Sie das ServiceContractAttribute-Attribut der Schnittstelle hinzu.Apply the ServiceContractAttribute attribute to the interface.

  3. Fügen Sie das OperationContractAttribute-Attribut jeder von Clients aufrufbaren Methode hinzu.Apply the OperationContractAttribute attribute to each method that clients can invoke.

  4. Dies ist optional.Optional. Legen Sie den Wert der IsOneWay-Eigenschaft auf true fest, um das Senden einer leeren Mitteilung zu verhindern.Set the value of the IsOneWay property to true to prevent the sending of an empty reply message. Standardmäßig sind alle Operationen Anforderung-Antwort-Verträge.By default, all operations are request-reply contracts.

BeispielExample

Im folgenden Beispiel wird ein Vertrag für einen Rechnerdienst definiert, der die Add-Methode und die Subtract-Methode bereitstellt.The following sample defines a contract for a calculator service that provides Add and Subtract methods. Die Multiply-Methode ist nicht Teil des Vertrags, weil sie von der OperationContractAttribute-Klasse nicht gekennzeichnet wurde und somit nicht für Clients verfügbar ist.The Multiply method is not part of the contract because it is not marked by the OperationContractAttribute class and so it is not accessible to clients.

using System.ServiceModel;

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    // It would be equivalent to write explicitly:
    // [OperationContract(IsOneWay=false)]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);

    int Multiply(int a, int b)
}
  • Weitere Informationen zum Angeben von vorgangsverträgen finden Sie unter der OperationContractAttribute Klasse und die IsOneWay Eigenschaft.For more information about how to specify operation contracts, see the OperationContractAttribute class and the IsOneWay property.

  • Durch Anwenden des ServiceContractAttribute-Attributs und des OperationContractAttribute-Attributs wird die automatische Generierung von Dienstvertragsdefinitionen in einem WSDL (Web Services Description Language)-Dokument ermöglicht, sobald der Dienst bereitgestellt wird.Applying the ServiceContractAttribute and OperationContractAttribute attributes causes the automatic generation of service contract definitions in a Web Services Description Language (WSDL) document once the service is deployed. Das Dokument wird durch Anfügen von ?wsdl an die HTTP-Basisadresse des Diensts heruntergeladen.The document is downloaded by appending ?wsdl to the HTTP base address for the service. Beispiel: http://microsoft/CalculatorService?wsdlFor example, http://microsoft/CalculatorService?wsdl

Siehe auchSee Also

OperationContractAttribute
Entwerfen von DienstverträgenDesigning Service Contracts
Vorgehensweise: Erstellen eines DuplexvertragsHow to: Create a Duplex Contract