OperationContractAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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 false
wartość , (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 |
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) |