OperationContractAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass eine Methode einen Vorgang definiert, der Bestandteil eines Dienstvertrags in einer Windows Communication Foundation-Anwendung (WCF) ist.
public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
- Vererbung
- Attribute
Beispiele
Im folgenden Codebeispiel ist ein einfacher Dienstvertrag mit einem Vorgang dargestellt.
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. 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. Der dritte Vorgang empfängt einen Aufruf, eine zugrunde liegende eingehende Nachricht, gibt aber keine zugrunde liegende Antwortnachricht zurück.
[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.
Verwenden Sie die OperationContractAttribute-Eigenschaften, um die Struktur des Vorgangs und die in Metadaten ausgedrückten Werte zu steuern:
Die Action-Eigenschaft gibt die Aktion an, die diesen Vorgang eindeutig identifiziert. WCF sendet Anforderungsmeldungen basierend auf ihrer Aktion an Methoden.
Mit der AsyncPattern-Eigenschaft wird angegeben, dass der Vorgang implementiert wird oder asynchron mit einem Begin/End-Methodenpaar aufgerufen werden kann.
Die HasProtectionLevel-Eigenschaft gibt an, ob die ProtectionLevel-Eigenschaft ausdrücklich festgelegt wurde.
Die IsOneWay-Eigenschaft gibt an, dass der Vorgang nur aus einer einzelnen Eingabenachricht besteht. Der Vorgang verfügt über keine zugeordnete Ausgabenachricht.
Die IsInitiating-Eigenschaft gibt an, ob dieser Vorgang der anfängliche Vorgang in einer Sitzung sein kann.
Die IsTerminating -Eigenschaft gibt an, ob WCF versucht, die aktuelle Sitzung nach Abschluss des Vorgangs zu beenden.
Die ProtectionLevel-Eigenschaft gibt die Sicherheit auf Nachrichtenebene an, die ein Vorgang während der Laufzeit erfordert.
Die ReplyAction-Eigenschaft gibt die Aktion der Antwortnachricht für den Vorgang an.
Das OperationContractAttribute-Attribut deklariert, dass eine Methode ein Vorgang in einem Dienstvertrag ist. Nur Methoden, die dem OperationContractAttribute attributiert werden, werden als Dienstvorgänge verfügbar gemacht. Mit einem Dienstvertrag ohne mit OperationContractAttribute markierte Methoden werden keine Vorgänge verfügbar gemacht.
Die AsyncPattern -Eigenschaft gibt an, dass ein Paar der<Begin
Methoden methodName> und End
<methodName> einen einzelnen Vorgang bilden, der asynchron implementiert wird (ob auf dem Client oder im Dienst). 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.
Ähnlich können Clients Vorgänge unabhängig von der Implementierung der Dienstmethode asynchron aufrufen. 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. Ausführliche Informationen finden Sie unter AsyncPattern.
Die IsOneWay-Eigenschaft gibt an, dass eine Methode überhaupt keinen Wert zurückgibt. Dies bezieht sich auch auf eine leere zugrunde liegende Antwortnachricht. Dieser Methodentyp ist für Benachrichtigungen oder ereignisbezogene Kommunikation nützlich. Methoden dieser Art können keine Antwortnachricht zurückgeben. Folglich muss die Deklaration der Methode void
zurückgeben.
Wichtig
Verwenden Sie beim programmgesteuerten Abrufen des Informationsspeichers in diesem Attribut die ContractDescription -Klasse anstelle der Reflektion.
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. In diesem Fall erstellt und sendet die Infrastruktur eine leere Nachricht, um dem Aufrufer mitzuteilen, dass die Methode einen Wert zurückgegeben hat. Mit dieser Vorgehensweise können die Anwendung und die Infrastruktur Fehlerinformationen (wie z. B. einen SOAP-Fehler) an den Client zurücksenden. Die Festlegung von IsOneWay auf true
ist die einzige Möglichkeit, die Erstellung und Versendung einer Antwortnachricht zu verhindern. Weitere Informationen finden Sie unter Unidirektionale Dienste.
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. Verhindern Sie mit der IsInitiating-Eigenschaft, dass Clients vor anderen Vorgängen einen besonderen Dienstvorgang aufrufen. Verwenden Sie die IsTerminating -Eigenschaft, damit WCF den Kanal schließt, nachdem Clients einen bestimmten Dienstvorgang aufgerufen haben. Weitere Informationen finden Sie unter Verwenden von Sitzungen.
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. Kann von einer Bindung die vom Vertrag geforderte Sicherheitsebene nicht bereitgestellt werden, wird während der Laufzeit eine Ausnahme ausgelöst. Weitere Informationen finden Sie unter ProtectionLevel und Grundlegendes zur Schutzebene.
Konstruktoren
OperationContractAttribute() |
Initialisiert eine neue Instanz der OperationContractAttribute-Klasse. |
Eigenschaften
Action |
Ruft ab oder legt die WS-Adressierungsaktion der Anforderungsnachricht fest. |
AsyncPattern |
Gib an, dass ein Vorgang mit dem Methodenpaar |
HasProtectionLevel |
Ruft einen Wert ab, der angibt, ob die Nachrichten für diesen Vorgang verschlüsselt oder signiert werden müssen oder beides. |
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. |
IsOneWay |
Ruft einen Wert ab, der angibt, ob ein Vorgang eine Antwortnachricht zurückgibt, oder legt diesen fest. |
IsTerminating |
Ruft einen Wert ab, der angibt, ob der Dienstvorgang bewirkt, dass der Server die Sitzung schließt, nachdem die Antwortnachricht gesendet wurde. |
Name |
Ruft den Namen des Vorgangs ab oder legt ihn fest. |
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. |
ReplyAction |
Ruft ab oder legt den Wert der SOAP-Aktion für die Antwortnachricht des Vorgangs fest. |
TypeId |
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
Methoden
Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (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. (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. (Geerbt von Attribute) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (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. (Geerbt von Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 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. (Geerbt von Attribute) |