OperationContractAttribute Klas

Definitie

Geeft aan dat een methode een bewerking definieert die deel uitmaakt van een servicecontract in een WCF-toepassing (Windows Communication Foundation).

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
Overname
OperationContractAttribute
Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u een eenvoudig servicecontract met één bewerking.

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

Het volgende voorbeeld is een service waarmee een impliciet servicecontract wordt geïmplementeerd waarmee drie bewerkingen worden opgegeven. Twee van de bewerkingen zijn tweerichtingsbewerkingen, die onderliggende antwoordberichten retourneren aan de aanroeper, ongeacht wat de retourwaarde is. De derde bewerking ontvangt een aanroep, een onderliggend binnenkomend bericht, maar retourneert geen onderliggend antwoordbericht.

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

Opmerkingen

Pas de OperationContractAttribute methode toe op een methode om aan te geven dat de methode een servicebewerking implementeert als onderdeel van een servicecontract (opgegeven door een ServiceContractAttribute kenmerk).

Gebruik de OperationContractAttribute eigenschappen om de structuur van de bewerking en de waarden in metagegevens te beheren:

  • De Action eigenschap geeft de actie op die deze bewerking uniek identificeert. WCF verzendt aanvraagberichten naar methoden op basis van hun actie.

  • De AsyncPattern eigenschap geeft aan dat de bewerking is geïmplementeerd of asynchroon kan worden aangeroepen met behulp van een begin-/eindmethodepaar.

  • De HasProtectionLevel eigenschap geeft aan of de ProtectionLevel eigenschap expliciet is ingesteld.

  • De IsOneWay eigenschap geeft aan dat de bewerking slechts uit één invoerbericht bestaat. De bewerking heeft geen gekoppeld uitvoerbericht.

  • De IsInitiating eigenschap geeft aan of deze bewerking de eerste bewerking in een sessie kan zijn.

  • De IsTerminating eigenschap geeft aan of WCF de huidige sessie probeert te beëindigen nadat de bewerking is voltooid.

  • De ProtectionLevel eigenschap geeft de beveiliging op berichtniveau op die een bewerking tijdens runtime vereist.

  • De ReplyAction eigenschap geeft de actie van het antwoordbericht voor de bewerking op.

Het OperationContractAttribute kenmerk declareert dat een methode een bewerking in een servicecontract is. Alleen methoden die aan de OperationContractAttribute methode zijn toegewezen, worden weergegeven als servicebewerkingen. Een servicecontract zonder methoden die zijn gemarkeerd met de OperationContractAttribute methoden waarmee geen bewerkingen worden uitgevoerd.

De AsyncPattern eigenschap geeft aan dat een paar Begin<methodName> - en End<methodName-methoden> één bewerking vormen die asynchroon is geïmplementeerd (op de client of de service). De mogelijkheid van een service om bewerkingen asynchroon te implementeren, is een details van de serviceimplementatie en wordt niet weergegeven in metagegevens (zoals WSDL (Web Services Description Language).

Clients kunnen er ook voor kiezen om bewerkingen asynchroon aan te roepen, onafhankelijk van hoe de servicemethode wordt geïmplementeerd. Het aanroepen van servicebewerkingen asynchroon in de client wordt aanbevolen wanneer een servicemethode enige tijd in beslag neemt, maar gegevens rechtstreeks naar de client moet retourneren. Zie AsyncPatternvoor meer informatie.

De IsOneWay eigenschap geeft aan dat een methode helemaal geen waarde retourneert, inclusief een leeg onderliggend antwoordbericht. Dit type methode is handig voor meldingen of communicatie in gebeurtenisstijl. Methoden van dit type kunnen geen antwoordbericht retourneren, zodat de declaratie van de methode moet worden geretourneerd void.

Important

Wanneer u programmatisch het informatiearchief in dit kenmerk opvragen, gebruikt u de ContractDescription klasse in plaats van weerspiegeling.

Note

Als de IsOneWay eigenschap is ingesteld op false, (de standaardinstelling), zijn zelfs methoden die tweerichtingsmethoden retourneren void op het onderliggende berichtniveau. In dit geval maakt en verzendt de infrastructuur een leeg bericht om aan te geven aan de aanroeper dat de methode heeft geretourneerd. Met deze methode kunnen de toepassing en de infrastructuur foutinformatie (zoals een SOAP-fout) naar de client verzenden. Instelling IsOneWay is true de enige manier om te voorkomen dat een antwoordbericht wordt gemaakt en verzonden. Zie One-Way Services voor meer informatie.

De Action en ReplyAction eigenschappen kunnen niet alleen worden gebruikt om de standaardactie van SOAP-berichten te wijzigen, maar ook om handlers te maken voor niet-herkende berichten of om het toevoegen van acties voor het programmeren van direct berichten uit te schakelen. Gebruik de IsInitiating eigenschap om te voorkomen dat clients een bepaalde servicebewerking aanroepen voorafgaand aan andere bewerkingen. Gebruik de IsTerminating eigenschap om WCF het kanaal te laten sluiten nadat clients een bepaalde servicebewerking hebben aangeroepen. Zie Sessies gebruiken voor meer informatie.

Met de ProtectionLevel eigenschap kunt u in het bewerkingscontract opgeven of de bewerkingsberichten zijn ondertekend, versleuteld of ondertekend en versleuteld. Als een binding het beveiligingsniveau dat door het contract is vereist, niet kan worden opgegeven, wordt er tijdens runtime een uitzondering gegenereerd. Zie en Understanding Protection Level (Beveiligingsniveau) voor meer informatieProtectionLevel.

Constructors

Name Description
OperationContractAttribute()

Initialiseert een nieuw exemplaar van de OperationContractAttribute klasse.

Eigenschappen

Name Description
Action

Hiermee haalt u de WS-Adresseringsactie van het aanvraagbericht op of stelt u deze in.

AsyncPattern

Geeft aan dat een bewerking asynchroon wordt geïmplementeerd met behulp van een Begin<methodName> - en End<methodName-methodepaar> in een servicecontract.

HasProtectionLevel

Hiermee wordt een waarde opgehaald die aangeeft of de berichten voor deze bewerking moeten worden versleuteld, ondertekend of beide.

IsInitiating

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de methode een bewerking implementeert die een sessie op de server kan initiëren (als een dergelijke sessie bestaat).

IsOneWay

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of een bewerking een antwoordbericht retourneert.

IsTerminating

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de servicebewerking ervoor zorgt dat de server de sessie sluit na het antwoordbericht, indien van toepassing, wordt verzonden.

Name

Hiermee haalt u de naam van de bewerking op of stelt u deze in.

ProtectionLevel

Hiermee wordt een waarde opgehaald of ingesteld waarmee wordt aangegeven of de berichten van een bewerking moeten worden versleuteld, ondertekend of beide.

ReplyAction

Met deze functie wordt de waarde van de SOAP-actie opgehaald of ingesteld voor het antwoordbericht van de bewerking.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op