OperationContractAttribute OperationContractAttribute OperationContractAttribute OperationContractAttribute Class

Definition

Indica che un metodo implementa un'operazione come parte di un contratto di servizio di un'applicazione Windows Communication Foundation (WCF). Indicates that a method defines an operation that is part of a service contract in a Windows Communication Foundation (WCF) application.

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Inheritance
OperationContractAttributeOperationContractAttributeOperationContractAttributeOperationContractAttribute
Attributes

Examples

Nell'esempio di codice seguente viene illustrato un semplice contratto di servizio avente una sola operazione.The following code example shows a simple service contract with one operation.

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

L'esempio seguente illustra un servizio che implementa un contratto di servizio implicito in cui sono specificate tre operazioni.The following example is a service that implements an implicit service contract that specifies three operations. Le prime due sono operazioni bidirezionali che restituiscono al chiamante messaggi di risposta sottostanti indipendentemente dal valore restituito.Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. La terza operazione riceve una chiamata, ovvero un messaggio in ingresso sottostante, ma non restituisce alcun messaggio di risposta sottostante.The third operation receives a call, an underlying inbound message, but returns no underlying response message.

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

Remarks

L'attributo OperationContractAttribute può essere applicato a un metodo per indicare che quest'ultimo implementa un'operazione di servizio come parte di un contratto di servizio specificato mediante un attributo ServiceContractAttribute.Apply the OperationContractAttribute to a method to indicate that the method implements a service operation as part of a service contract (specified by a ServiceContractAttribute attribute).

Le proprietà OperationContractAttribute consentono di controllare la struttura dell'operazione e i valori espressi nei metadati:Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • La proprietà Action indica l'azione che identifica in modo univoco questa operazione.The Action property specifies the action that uniquely identifies this operation. WCF invia messaggi di richiesta a metodi in base all'azione.WCF dispatches request messages to methods based on their action.

  • La proprietà AsyncPattern indica che l'operazione è implementata o può essere chiamata in modo asincrono tramite una coppia di metodi Begin/End.The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • La proprietà HasProtectionLevel indica se la proprietà ProtectionLevel è stata impostata in modo esplicito.The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • La proprietà IsOneWay indica che l'operazione è costituita esclusivamente da un solo messaggio di input.The IsOneWay property indicates that the operation only consists of a single input message. All'operazione non è stato associato alcun messaggio di output.The operation has no associated output message.

  • La proprietà IsInitiating specifica se questa operazione può essere l'operazione iniziale di una sessione.The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • Il IsTerminating proprietà specifica se i tentativi di WCF terminare la sessione corrente dopo il completamento dell'operazione.The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • La proprietà ProtectionLevel indica la sicurezza a livello di messaggio che occorre fornire a un'operazione in fase di esecuzione.The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • La proprietà ReplyAction indica l'azione del messaggio di risposta dell'operazione.The ReplyAction property specifies the action of the reply message for the operation.

L'attributo OperationContractAttribute dichiara che un metodo è un'operazione di un contratto di servizio.The OperationContractAttribute attribute declares that a method is an operation in a service contract. Solo i metodi dotati dell'attributo OperationContractAttribute sono esposti come operazioni di servizio.Only methods attributed with the OperationContractAttribute are exposed as service operations. Un contratto di servizio privo di metodi contrassegnati con l'attributo OperationContractAttribute non espone alcuna operazione.A service contract without any methods marked with the OperationContractAttribute exposes no operations.

Il AsyncPattern proprietà indica che una coppia di Begin < methodName> e End < methodName> metodi costituiscono un singolo operazione implementata in modo asincrono (sia nel client o il servizio).The AsyncPattern property indicates that a pair of Begin<methodName> and End<methodName> methods form a single operation implemented asynchronously (whether on the client or the service). La possibilità di un servizio di implementare operazioni in modo asincrono è un dettaglio di implementazione del servizio e non è esposto nei metadati, ad esempio WSDL (Web Services Description Language).The ability of a service to implement operations asynchronously is a service implementation detail and is not exposed in metadata (such as Web Services Description Language (WSDL)).

Analogamente, i client possono scegliere di richiamare le operazioni in modo asincrono indipendentemente dalla modalità di implementazione del metodo del servizio.Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. Quando un metodo di servizio, anche se richiede un certo tempo di esecuzione, deve restituire le informazioni direttamente al client è consigliabile impostare i client in modo che le operazioni di servizio vengano chiamate in modo asincrono.Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. Per informazioni dettagliate, vedere AsyncPattern.For details, see AsyncPattern.

La proprietà IsOneWay indica che un metodo non restituisce alcun valore, nemmeno un messaggio di risposta sottostante vuoto.The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. Questo tipo di metodo è utile per le notifiche o per le comunicazioni in stile evento.This type of method is useful for notifications or event-style communication. Poiché i metodi di questo tipo non possono restituire alcun messaggio di risposta, il metodo deve essere dichiarato in modo da restituire void.Methods of this kind cannot return a reply message so the method's declaration must return void.

Importante

Durante il recupero a livello di programmazione il servizio Archivio informazioni in questo attributo, usare il ContractDescription classe invece di reflection.When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

Nota

Se la proprietà IsOneWay viene impostata su false (ovvero l'impostazione predefinita), anche i metodi che restituiscono void sono metodi bidirezionali a livello di messaggio sottostante.If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. In questo caso, l'infrastruttura crea e invia un messaggio vuoto per segnalare al chiamante il termine dell'esecuzione del metodo chiamato.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. L'utilizzo di questo approccio consente all'applicazione e all'infrastruttura di inviare al client le informazioni sull'errore, ad esempio per indicare che si tratta di un errore SOAP.Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. L'unico modo per impedire la creazione e l'invio di un messaggio di risposta è impostare la proprietà IsOneWay su true.Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. Per altre informazioni, vedere unidirezionale servizi.For more information, see One-Way Services.

Oltre a consentire la modifica dell'azione predefinita dei messaggi SOAP, le proprietà Action e ReplyAction possono essere utilizzate per creare gestori per i messaggi non riconosciuti o per disabilitare l'aggiunta di azioni durante la programmazione diretta dei messaggi.The Action and ReplyAction properties can be used not only to modify the default action of SOAP messages but also to create handlers for unrecognized messages or to disable adding actions for direct message programming. Utilizzare la proprietà IsInitiating per impedire ai client di chiamare una determinata operazione di servizio prima delle altre operazioni.Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. Usare il IsTerminating proprietà per impostare WCF in chiuda il canale dopo che i client chiamano una determinata operazione di servizio.Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. Per altre informazioni, vedere utilizzando le sessioni.For more information, see Using Sessions.

La proprietà ProtectionLevel consente di specificare nel contratto dell'operazione se i relativi messaggi sono firmati o crittografati, oppure se presentano entrambi i meccanismi di sicurezza.The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. Se un'associazione non è in grado di fornire il livello di sicurezza richiesto dal contratto, l'infrastruttura genera un'eccezione in fase di esecuzione.If a binding cannot provide the security level required by the contract, an exception is thrown at run time. Per altre informazioni, vedere ProtectionLevel e livello di protezione delle informazioni sulle.For more information, see ProtectionLevel and Understanding Protection Level.

Constructors

OperationContractAttribute() OperationContractAttribute() OperationContractAttribute() OperationContractAttribute()

Inizializza una nuova istanza della classe OperationContractAttribute. Initializes a new instance of the OperationContractAttribute class.

Properties

Action Action Action Action

Consente di ottenere o impostare l'azione WS-Addressing del messaggio di richiesta. Gets or sets the WS-Addressing action of the request message.

AsyncPattern AsyncPattern AsyncPattern AsyncPattern

Indica che un'operazione è implementata in modo asincrono usando una coppia costituita dai metodi Begin<methodName> e End<methodName> in un contratto di servizio. Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel HasProtectionLevel HasProtectionLevel HasProtectionLevel

Ottiene un valore che indica se i messaggi di questa operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di protezione. Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating IsInitiating IsInitiating IsInitiating

Ottiene o imposta un valore che indica se il metodo implementa un'operazione in grado di avviare una sessione nel server (se tale sessione esiste). Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server (if such a session exists).

IsOneWay IsOneWay IsOneWay IsOneWay

Ottiene o imposta un valore che indica se l'operazione restituisce un messaggio di risposta. Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating IsTerminating IsTerminating IsTerminating

Ottiene o imposta un valore che indica se l'operazione di servizio causa la chiusura della sessione da parte del server dopo l'invio di un eventuale messaggio di risposta. Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent.

Name Name Name Name

Ottiene o imposta il nome dell'operazione. Gets or sets the name of the operation.

ProtectionLevel ProtectionLevel ProtectionLevel ProtectionLevel

Ottiene o imposta un valore che specifica se i messaggi di un'operazione devono essere crittografati o firmati o se devono presentare entrambi i meccanismi di sicurezza. Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction ReplyAction ReplyAction ReplyAction

Ottiene o imposta il valore dell'azione SOAP del messaggio di risposta dell'operazione. Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Methods

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Restituisce il codice hash per l'istanza. Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente. Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente. Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente. Returns a string that represents the current object.

(Inherited from Object)

Explicit Interface Implementations

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia. Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto. Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Applies to