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ě z těchto operací jsou dvoucestné operace, které volajícímu vrací základní zprávy odpovědi bez ohledu na to, jaká 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

Použití na OperationContractAttribute metodu k označení, že metoda implementuje operaci služby jako součást servisního kontraktu (určeného atributem ServiceContractAttribute ).

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

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

  • Vlastnost AsyncPattern označuje, že operace je implementována nebo může být volána asynchronně pomocí dvojice metod Begin/End.

  • Vlastnost HasProtectionLevel označuje, jestli 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 žádnou výstupní zprávu.

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

  • Vlastnost IsTerminating určuje, jestli se WCF 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 v kontraktu služby. Jako operace služby jsou zpřístupněny pouze metody s atributem OperationContractAttribute . Kontrakt služby bez jakýchkoli metod označených znakem OperationContractAttribute nezpřístupňuje žádné operace.

Vlastnost AsyncPattern označuje, že dvojice<Begin metod methodName> a End<methodName> tvoří jednu operaci implementovanou asynchronně (ať už na klientovi nebo ve 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. Asynchronní volání operací služby v klientovi se doporučuje, když metoda služby nějakou dobu trvá, ale musí vracet informace přímo klientovi. Podrobnosti najdete v tématu AsyncPattern.

Vlastnost IsOneWay označuje, že metoda nevrací vůbec žádnou hodnotu, 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 ContractDescription použijte místo reflexe třídu .

Poznámka

IsOneWay Pokud je vlastnost nastavena na false, (výchozí), jsou i metody, které vracívoid, obousměrné metody na úrovni podkladové zprávy. V takovém 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 chybu PROTOKOLU SOAP) zpět do klienta. Nastavení IsOneWay na je true jediný způsob, jak zabránit vytvoření a odeslání zprávy s odpovědí. Další informace najdete v tématu Jednosměrné služby.

Vlastnosti Action a ReplyAction lze použít nejen ke změně výchozí akce zpráv SOAP, ale také k vytvoř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 zabráníte klientům volat určitou operaci služby před jinými operacemi. IsTerminating Vlastnost použijte k tomu, aby WCF zavřel kanál poté, co klienti volají konkrétní operaci služby. Další informace najdete v tématu Použití relací.

Vlastnost ProtectionLevel umožňuje určit ve smlouvě o operaci, 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 za běhu výjimka. Další informace najdete v tématech ProtectionLevel a Principy úrovně ochrany.

Konstruktory

OperationContractAttribute()

Inicializuje novou instanci OperationContractAttribute třídy .

Vlastnosti

Action

Získá nebo nastaví WS-Addressing akci zprávy požadavku.

AsyncPattern

Označuje, že operace je implementována asynchronně pomocí Begin< dvojice methodName> a End<methodName> 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á označuje, zda metoda implementuje operaci, která může zahájit relaci na serveru (pokud taková relace existuje).

IsOneWay

Získá nebo nastaví hodnotu, která označuje, zda operace vrátí zprávu odpovědi.

IsTerminating

Získá nebo nastaví hodnotu, která označuje, zda operace služby způsobí, že server zavře relaci 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 zprávu odpovědi operace.

TypeId

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

(Zděděno od Attribute)

Metody

Equals(Object)

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

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

Vrátí hodnotu hash pro tuto instanci.

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

Type Získá z aktuální instance.

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

Při přepsání v odvozené třídě označuje, zda je hodnota této instance 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á označuje, zda se tato instance rovná zadanému objektu.

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

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

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

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

(Zděděno od Object)

Explicitní implementace rozhraní

_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