OperationContractAttribute Klasse

Definition

Gibt an, dass eine Methode einen Vorgang definiert, der Bestandteil eines Dienstvertrags in einer Windows Communication Foundation-Anwendung (WCF) ist.Indicates that a method defines an operation that is part of a service contract in a Windows Communication Foundation (WCF) application.

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Vererbung
OperationContractAttribute
Attribute

Beispiele

Im folgenden Codebeispiel ist ein einfacher Dienstvertrag mit einem Vorgang dargestellt.The following code example shows a simple service contract with one operation.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
      return "The service greets you: " + msg;
  }

  #endregion
  }
}
Imports System.Net.Security
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="Microsoft.WCF.Documentation")> _
  Public Interface ISampleService
    ' This operation specifies an explicit protection level requirement.
    <OperationContract(ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Called with: {0}", msg)
       Return "The service greets you: " & msg
  End Function

  #End Region
  End Class
End Namespace

Das folgende Beispiel enthält einen Dienst, der einen impliziten Dienstvertrag implementiert, mit dem drei Vorgänge angegeben werden.The following example is a service that implements an implicit service contract that specifies three operations. Zwei der Vorgänge sind bidirektionale Vorgänge, die zugrunde liegende Antworten an den Aufrufer zurückgeben, und zwar unabhängig davon, wie der Rückgabewert lautet.Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. Der dritte Vorgang empfängt einen Aufruf, eine zugrunde liegende eingehende Nachricht, gibt aber keine zugrunde liegende Antwortnachricht zurück.The third operation receives a call, an underlying inbound message, but returns no underlying response message.

[ServiceContractAttribute]  
public class OneAndTwoWay  
{  
  // The client waits until a response message appears.  
  [OperationContractAttribute]  
  public int MethodOne (int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  
  
  // The client waits until an empty response message appears.  
  [OperationContractAttribute]  
  public void MethodTwo (int x)  
  {  
    return;  
  }  
  
  // The client returns as soon as an outbound message  
  // is dispatched to the service; no response  
  // message is generated or sent from the service.  
  [OperationContractAttribute(IsOneWay=true)]  
  public void MethodThree (int x)  
  {  
    return;  
  }  
}  

Hinweise

Wenden Sie den OperationContractAttribute auf eine Methode an, um anzugeben, dass mit einer Methode ein Dienstvorgang als Bestandteil eines Dienstvertrags (angegeben mit einem ServiceContractAttribute-Attribut) implementiert wird.Apply the OperationContractAttribute to a method to indicate that the method implements a service operation as part of a service contract (specified by a ServiceContractAttribute attribute).

Verwenden Sie die OperationContractAttribute-Eigenschaften, um die Struktur des Vorgangs und die in Metadaten ausgedrückten Werte zu steuern:Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • Die Action-Eigenschaft gibt die Aktion an, die diesen Vorgang eindeutig identifiziert.The Action property specifies the action that uniquely identifies this operation. WCF sendet Anforderungs Nachrichten auf der Grundlage ihrer Aktion an Methoden.WCF dispatches request messages to methods based on their action.

  • Mit der AsyncPattern-Eigenschaft wird angegeben, dass der Vorgang implementiert wird oder asynchron mit einem Begin/End-Methodenpaar aufgerufen werden kann.The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • Die HasProtectionLevel-Eigenschaft gibt an, ob die ProtectionLevel-Eigenschaft ausdrücklich festgelegt wurde.The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • Die IsOneWay-Eigenschaft gibt an, dass der Vorgang nur aus einer einzelnen Eingabenachricht besteht.The IsOneWay property indicates that the operation only consists of a single input message. Der Vorgang verfügt über keine zugeordnete Ausgabenachricht.The operation has no associated output message.

  • Die IsInitiating-Eigenschaft gibt an, ob dieser Vorgang der anfängliche Vorgang in einer Sitzung sein kann.The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • Die IsTerminating-Eigenschaft gibt an, ob WCF versucht, die aktuelle Sitzung zu beenden, nachdem der Vorgang abgeschlossen wurde.The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • Die ProtectionLevel-Eigenschaft gibt die Sicherheit auf Nachrichtenebene an, die ein Vorgang während der Laufzeit erfordert.The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • Die ReplyAction-Eigenschaft gibt die Aktion der Antwortnachricht für den Vorgang an.The ReplyAction property specifies the action of the reply message for the operation.

Das OperationContractAttribute-Attribut deklariert, dass eine Methode ein Vorgang in einem Dienstvertrag ist.The OperationContractAttribute attribute declares that a method is an operation in a service contract. Nur Methoden, die dem OperationContractAttribute attributiert werden, werden als Dienstvorgänge verfügbar gemacht.Only methods attributed with the OperationContractAttribute are exposed as service operations. Mit einem Dienstvertrag ohne mit OperationContractAttribute markierte Methoden werden keine Vorgänge verfügbar gemacht.A service contract without any methods marked with the OperationContractAttribute exposes no operations.

Die AsyncPattern-Eigenschaft gibt an, dass ein paar von Begin<MethodName-> und End<MethodName>-Methoden einen einzelnen, asynchron implementierten Vorgang (auf dem Client oder dem Dienst) bilden.The AsyncPattern property indicates that a pair of Begin<methodName> and End<methodName> methods form a single operation implemented asynchronously (whether on the client or the service). Die Fähigkeit eines Diensts, Vorgänge asynchron zu implementieren, ist ein Dienstimplementierungsdetail und wird nicht in den Metadaten (wie z. B. WSDL (Web Services Description Language)) verfügbar gemacht.The ability of a service to implement operations asynchronously is a service implementation detail and is not exposed in metadata (such as Web Services Description Language (WSDL)).

Ähnlich können Clients Vorgänge unabhängig von der Implementierung der Dienstmethode asynchron aufrufen.Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. Der asynchrone Aufruf von Dienstvorgängen auf dem Client wird empfohlen, wenn eine Dienstmethode einige Zeit beansprucht, jedoch Informationen direkt an den Client zurückgeben muss.Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. Ausführliche Informationen finden Sie unter AsyncPattern.For details, see AsyncPattern.

Die IsOneWay-Eigenschaft gibt an, dass eine Methode überhaupt keinen Wert zurückgibt. Dies bezieht sich auch auf eine leere zugrunde liegende Antwortnachricht.The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. Dieser Methodentyp ist für Benachrichtigungen oder ereignisbezogene Kommunikation nützlich.This type of method is useful for notifications or event-style communication. Methoden dieser Art können keine Antwortnachricht zurückgeben. Folglich muss die Deklaration der Methode void zurückgeben.Methods of this kind cannot return a reply message so the method's declaration must return void.

Wichtig

Wenn Sie den Informationsspeicher Programm gesteuert in diesem Attribut abrufen, verwenden Sie die ContractDescription-Klasse anstelle der Reflektion.When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

Hinweis

Wenn für die IsOneWay-Eigenschaft false festgelegt wird (Standardeinstellung), liegen auch bei Methoden, die void zurückgeben, bidirektionale Methoden auf der zugrunde liegenden Nachrichtenebene vor.If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. In diesem Fall erzeugt und sendet die Infrastruktur eine leere Nachricht, um dem Aufrufer anzuzeigen, dass die Methode ein Ergebnis zurückgegeben hat.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. Mit dieser Vorgehensweise können die Anwendung und die Infrastruktur Fehlerinformationen (wie z. B. einen SOAP-Fehler) an den Client zurücksenden.Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. Die Festlegung von IsOneWay auf true ist die einzige Möglichkeit, die Erstellung und Versendung einer Antwortnachricht zu verhindern.Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. Weitere Informationen finden Sie unter unidirektionale Dienste.For more information, see One-Way Services.

Mit der Action-Eigenschaft und der ReplyAction-Eigenschaft können nicht nur die Standardaktion von SOAP-Nachrichten geändert werden, sondern können auch Handler für unerkannte Nachrichten erstellt oder das Hinzufügen von Aktionen für die direkte Nachrichtenprogrammierung deaktiviert werden.The Action and ReplyAction properties can be used not only to modify the default action of SOAP messages but also to create handlers for unrecognized messages or to disable adding actions for direct message programming. Verhindern Sie mit der IsInitiating-Eigenschaft, dass Clients vor anderen Vorgängen einen besonderen Dienstvorgang aufrufen.Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. Verwenden Sie die IsTerminating-Eigenschaft, damit WCF den Kanal schließt, nachdem Clients einen bestimmten Dienst Vorgang aufgerufen haben.Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. Weitere Informationen finden Sie unter Verwenden von Sitzungen.For more information, see Using Sessions.

Mit der ProtectionLevel-Eigenschaft können Sie für den Dienstvertrag angeben, ob die Vorgangsnachrichten signiert, verschlüsselt oder signiert und verschlüsselt werden sollen.The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. Kann von einer Bindung die vom Vertrag geforderte Sicherheitsebene nicht bereitgestellt werden, wird während der Laufzeit eine Ausnahme ausgelöst.If a binding cannot provide the security level required by the contract, an exception is thrown at run time. Weitere Informationen finden Sie unter ProtectionLevel und Grundlegendes zu Schutz Ebenen.For more information, see ProtectionLevel and Understanding Protection Level.

Konstruktoren

OperationContractAttribute()

Initialisiert eine neue Instanz der OperationContractAttribute-Klasse.Initializes a new instance of the OperationContractAttribute class.

Eigenschaften

Action

Ruft ab oder legt die WS-Adressierungsaktion der Anforderungsnachricht fest.Gets or sets the WS-Addressing action of the request message.

AsyncPattern

Gib an, dass ein Vorgang mit dem Methodenpaar Begin<Methodenname> und End<Methodenname> in einem Dienstvertrag asynchron implementiert wird.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel

Ruft einen Wert ab, der angibt, ob die Nachrichten für diesen Vorgang verschlüsselt oder signiert werden müssen oder beides.Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating

Ruft einen Wert ab, der angibt, ob die Methode einen Vorgang implementiert, der eine Sitzung auf dem Server initiieren kann (wenn eine solche Sitzung vorhanden ist), oder legt diesen fest.Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server (if such a session exists).

IsOneWay

Ruft einen Wert ab, der angibt, ob ein Vorgang eine Antwortnachricht zurückgibt, oder legt diesen fest.Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating

Ruft einen Wert ab, der angibt, ob der Dienstvorgang bewirkt, dass der Server die Sitzung schließt, nachdem die Antwortnachricht gesendet wurde.Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent.

Name

Ruft den Namen des Vorgangs ab oder legt diesen fest.Gets or sets the name of the operation.

ProtectionLevel

Ruft einen Wert ab, der angibt, ob die Nachrichten eines Vorgangs verschlüsselt oder signiert werden müssen oder beides beziehungsweise legt ihn fest.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction

Ruft ab oder legt den Wert der SOAP-Aktion für die Antwortnachricht des Vorgangs fest.Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Geerbt von Attribute)

Gilt für: