OperationContractAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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í |
| 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) |