Udostępnij za pośrednictwem


OperationContractAttribute Klasa

Definicja

Wskazuje, że metoda definiuje operację, która jest częścią kontraktu usługi w aplikacji Windows Communication Foundation (WCF).

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
Dziedziczenie
OperationContractAttribute
Atrybuty

Przykłady

Poniższy przykład kodu przedstawia prosty kontrakt usługi z jedną operacją.

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

Poniższy przykład to usługa, która implementuje niejawny kontrakt usługi, który określa trzy operacje. Dwie operacje to operacje dwukierunkowe, które zwracają bazowe komunikaty odpowiedzi do obiektu wywołującego bez względu na wartość zwracaną. Trzecia operacja odbiera wywołanie, podstawowy komunikat przychodzący, ale nie zwraca podstawowego komunikatu odpowiedzi.

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

Uwagi

Zastosuj metodę OperationContractAttribute do metody, aby wskazać, że metoda implementuje operację usługi w ramach kontraktu usługi (określonego ServiceContractAttribute przez atrybut).

OperationContractAttribute Użyj właściwości, aby kontrolować strukturę operacji i wartości wyrażone w metadanych:

  • Właściwość Action określa akcję, która jednoznacznie identyfikuje tę operację. Program WCF wysyła komunikaty żądań do metod na podstawie ich akcji.

  • Właściwość AsyncPattern wskazuje, że operacja jest implementowana lub może być wywoływana asynchronicznie przy użyciu pary metody Begin/End.

  • Właściwość HasProtectionLevel wskazuje, czy ProtectionLevel właściwość została jawnie ustawiona.

  • Właściwość IsOneWay wskazuje, że operacja składa się tylko z jednego komunikatu wejściowego. Operacja nie ma skojarzonego komunikatu wyjściowego.

  • Właściwość IsInitiating określa, czy ta operacja może być operacją początkową w sesji.

  • Właściwość IsTerminating określa, czy program WCF próbuje zakończyć bieżącą sesję po zakończeniu operacji.

  • Właściwość ProtectionLevel określa zabezpieczenia na poziomie komunikatu, których operacja wymaga w czasie wykonywania.

  • Właściwość ReplyAction określa akcję komunikatu odpowiedzi dla operacji.

Atrybut OperationContractAttribute deklaruje, że metoda jest operacją w kontrakcie usługi. Tylko metody przypisane z elementem OperationContractAttribute są uwidocznione jako operacje usługi. Kontrakt usługi bez żadnych metod oznaczonych bez uwidacznia OperationContractAttribute żadnych operacji.

Właściwość AsyncPattern wskazuje, że para Begin<methodName> metod i End<methodName> tworzy pojedynczą operację zaimplementowaną asynchronicznie (zarówno na kliencie, jak i usłudze). Możliwość implementacji operacji asynchronicznie przez usługę jest szczegółem implementacji usługi i nie jest uwidaczniona w metadanych (takich jak Język opisu usług sieci Web (WSDL).

Podobnie klienci mogą wywoływać operacje asynchronicznie niezależnie od sposobu implementacji metody usługi. Wywoływanie operacji usługi asynchronicznie w kliencie jest zalecane, gdy metoda usługi zajmuje trochę czasu, ale musi zwrócić informacje bezpośrednio do klienta. Aby uzyskać szczegółowe informacje, zobacz AsyncPattern.

Właściwość IsOneWay wskazuje, że metoda w ogóle nie zwraca żadnej wartości, w tym pusty komunikat odpowiedzi bazowej. Ten typ metody jest przydatny w przypadku powiadomień lub komunikacji w stylu zdarzenia. Metody tego rodzaju nie mogą zwrócić komunikatu odpowiedzi, więc deklaracja metody musi zwrócić wartość void.

Ważne

Podczas programowego pobierania magazynu informacji w tym atrybucie należy użyć ContractDescription klasy zamiast odbicia.

Uwaga

IsOneWay Jeśli właściwość jest ustawiona na falsewartość , (wartość domyślna), nawet metody zwracane void są metodami dwukierunkowym na poziomie komunikatu bazowego. W takim przypadku infrastruktura tworzy i wysyła pusty komunikat wskazujący obiekt wywołujący zwrócony przez metodę. Użycie tego podejścia umożliwia aplikacji i infrastrukturze wysyłanie informacji o błędach (takich jak błąd protokołu SOAP) z powrotem do klienta. Ustawienie wartości to IsOneWay true jedyny sposób zapobiegania tworzeniu i wysyłaniu wiadomości odpowiedzi. Aby uzyskać więcej informacji, zobacz Usługi jednokierunkowe.

Właściwości Action i ReplyAction mogą służyć nie tylko do modyfikowania domyślnej akcji komunikatów SOAP, ale także do tworzenia procedur obsługi nierozpoznanych komunikatów lub wyłączenia dodawania akcji do programowania bezpośredniego komunikatów. IsInitiating Użyj właściwości , aby uniemożliwić klientom wywoływanie określonej operacji usługi przed innymi operacjami. IsTerminating Użyj właściwości , aby w programie WCF zamknąć kanał po wywołaniu określonej operacji usługi przez klientów. Aby uzyskać więcej informacji, zobacz Korzystanie z sesji.

Właściwość ProtectionLevel umożliwia określenie kontraktu operacji, czy komunikaty operacji są podpisane, zaszyfrowane, czy podpisane i zaszyfrowane. Jeśli powiązanie nie może zapewnić poziomu zabezpieczeń wymaganego przez umowę, zgłaszany jest wyjątek w czasie wykonywania. Aby uzyskać więcej informacji, zobacz ProtectionLevel i Understanding Protection Level (Poziom ochrony).

Konstruktory

OperationContractAttribute()

Inicjuje nowe wystąpienie klasy OperationContractAttribute.

Właściwości

Action

Pobiera lub ustawia akcję WS-Addressing komunikatu żądania.

AsyncPattern

Wskazuje, że operacja jest implementowana asynchronicznie przy użyciu Begin< pary metody MethodName> i End<methodName> w kontrakcie usługi.

HasProtectionLevel

Pobiera wartość wskazującą, czy komunikaty dla tej operacji muszą być szyfrowane, podpisane, czy oba.

IsInitiating

Pobiera lub ustawia wartość wskazującą, czy metoda implementuje operację, która może zainicjować sesję na serwerze (jeśli taka sesja istnieje).

IsOneWay

Pobiera lub ustawia wartość wskazującą, czy operacja zwraca komunikat odpowiedzi.

IsTerminating

Pobiera lub ustawia wartość wskazującą, czy operacja usługi powoduje zamknięcie sesji przez serwer po wysłaniu komunikatu odpowiedzi.

Name

Pobiera lub ustawia nazwę operacji.

ProtectionLevel

Pobiera lub ustawia wartość określającą, czy komunikaty operacji muszą być szyfrowane, podpisane, czy oba.

ReplyAction

Pobiera lub ustawia wartość akcji SOAP dla komunikatu odpowiedzi operacji.

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy