Sdílet prostřednictvím


OperationContractAttribute Třída

Definice

Označuje, že metoda definuje operaci, která je součástí kontraktu služby v aplikaci 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
Dědičnost
OperationContractAttribute
Atributy

Příklady

Následující příklad kódu ukazuje jednoduchý kontrakt služby s jednou operací.

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

Následující příklad je služba, která implementuje implicitní kontrakt služby, který určuje tři operace. Dvě operace jsou obousměrné operace, které vrací základní zprávy odpovědí volajícímu bez ohledu na to, co je vrácená hodnota. Třetí operace přijme volání, podkladovou příchozí zprávu, ale nevrátí žádnou podkladovou zprávu odpovědi.

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

Poznámky

OperationContractAttribute Použijte na metodu, která označuje, že metoda implementuje operaci služby jako součást kontraktu služby (určená atributemServiceContractAttribute).

OperationContractAttribute Pomocí vlastností můžete řídit strukturu operace a hodnoty vyjádřené v metadatech:

  • Vlastnost Action určuje akci, která jednoznačně identifikuje tuto operaci. WCF odesílá žádosti o zprávy do metod na základě jejich akce.

  • Vlastnost AsyncPattern označuje, že operace je implementována nebo lze volat asynchronně pomocí dvojice Begin/End metody.

  • Tato HasProtectionLevel vlastnost označuje, zda ProtectionLevel byla vlastnost explicitně nastavena.

  • Vlastnost IsOneWay označuje, že operace se skládá pouze z jedné vstupní zprávy. Operace nemá přidruženou výstupní zprávu.

  • Vlastnost IsInitiating určuje, zda může být tato operace počáteční operací v relaci.

  • Vlastnost IsTerminating určuje, zda wcf se pokusí ukončit aktuální relaci po dokončení operace.

  • Vlastnost ProtectionLevel určuje zabezpečení na úrovni zpráv, které operace vyžaduje za běhu.

  • Vlastnost ReplyAction určuje akci zprávy odpovědi pro operaci.

Atribut OperationContractAttribute deklaruje, že metoda je operace ve kontraktu služby. Jako operace služby jsou vystaveny pouze metody přiřazené k sadě OperationContractAttribute . Kontrakt služby bez jakýchkoli metod označených OperationContractAttribute pomocí zpřístupňuje žádné operace.

Tato AsyncPattern vlastnost označuje, že dvojice<Beginmetod methodName> a End<methodName> metody tvoří jednu operaci implementovanou asynchronně (bez ohledu na to, zda na klientovi nebo službě). Schopnost služby implementovat operace asynchronně je podrobnosti implementace služby a není zpřístupněna v metadatech (například WSDL (Web Services Description Language).

Podobně se klienti mohou rozhodnout vyvolat operace asynchronně nezávisle na způsobu implementace metody služby. Volání operací služby asynchronně v klientovi se doporučuje, když metoda služby nějakou dobu trvá, ale musí vrátit informace přímo klientovi. Podrobnosti najdete v AsyncPattern.

Vlastnost IsOneWay označuje, že metoda nevrací žádnou hodnotu vůbec, včetně prázdné podkladové zprávy odpovědi. Tento typ metody je užitečný pro oznámení nebo komunikaci ve stylu událostí. Metody tohoto typu nemohou vrátit zprávu odpovědi, takže deklarace metody musí vrátit void.

Důležité

Při programovém načítání úložiště informací v tomto atributu použijte ContractDescription třídu místo reflexe.

Poznámka:

IsOneWay Pokud je vlastnost nastavena na false, (výchozí), sudé metody, které vracejívoid, jsou obousměrné metody na základní úrovni zprávy. V tomto případě infrastruktura vytvoří a odešle prázdnou zprávu, která volajícímu oznámí, že metoda vrátila. Tento přístup umožňuje aplikaci a infrastruktuře odesílat informace o chybách (například selhání PROTOKOLU SOAP) zpět klientovi. true Nastavení IsOneWay je jediný způsob, jak zabránit vytvoření a odeslání zprávy odpovědi. Další informace najdete v tématu One-Way Services.

ReplyAction Vlastnosti Action lze použít nejen k úpravě výchozí akce zpráv SOAP, ale také k vytváření obslužných rutin pro nerozpoznané zprávy nebo k zakázání přidávání akcí pro programování přímých zpráv. IsInitiating Pomocí vlastnosti můžete klientům zabránit v volání konkrétní operace služby před jinými operacemi. IsTerminating Vlastnost použijte k zavření kanálu WCF poté, co klienti volají konkrétní operaci služby. Další informace naleznete v tématu Použití relací.

Tato ProtectionLevel vlastnost umožňuje zadat kontrakt operace, zda jsou zprávy operace podepsány, zašifrovány nebo podepsány a zašifrovány. Pokud vazba nemůže poskytnout úroveň zabezpečení vyžadovanou kontraktem, vyvolá se výjimka za běhu. Další informace najdete v tématu ProtectionLevel a vysvětlení úrovně ochrany.

Konstruktory

Name Description
OperationContractAttribute()

Inicializuje novou instanci OperationContractAttribute třídy.

Vlastnosti

Name Description
Action

Získá nebo nastaví akci WS-Addressing ve zprávě požadavku.

AsyncPattern

Označuje, že operace je implementována asynchronně pomocí Begin<methodName> a End<methodName> dvojice metod v kontraktu služby.

HasProtectionLevel

Získá hodnotu, která označuje, zda zprávy pro tuto operaci musí být šifrované, podepsané nebo obojí.

IsInitiating

Získá nebo nastaví hodnotu, která určuje, zda metoda implementuje operaci, která může zahájit relaci na serveru (pokud taková relace existuje).

IsOneWay

Získá nebo nastaví hodnotu, která určuje, zda operace vrací zprávu odpovědi.

IsTerminating

Získá nebo nastaví hodnotu, která určuje, zda operace služby způsobí ukončení relace po odeslání zprávy odpovědi, pokud existuje.

Name

Získá nebo nastaví název operace.

ProtectionLevel

Získá nebo nastaví hodnotu, která určuje, zda zprávy operace musí být šifrované, podepsané nebo obojí.

ReplyAction

Získá nebo nastaví hodnotu akce SOAP pro odpověď zprávy operace.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro