OperationContractAttribute OperationContractAttribute OperationContractAttribute OperationContractAttribute Class

Définition

Indique qu’une méthode définit une opération qui fait partie d’un contrat de service dans une application 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
Héritage
OperationContractAttributeOperationContractAttributeOperationContractAttributeOperationContractAttribute
Attributs

Exemples

L'exemple de code suivant présente un contrat de service simple avec une opération.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'exemple suivant est un service qui implémente un contrat de service implicite qui spécifie trois opérations.The following example is a service that implements an implicit service contract that specifies three operations. Deux des opérations sont des opérations bidirectionnelles, qui retournent des messages de réponse sous-jacents à l'appelant, quelle que soit la valeur de retour.Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. La troisième opération reçoit un appel, un message entrant sous-jacent, mais ne retourne aucun message de réponse sous-jacent.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;  
  }  
}  

Remarques

Appliquez l'OperationContractAttribute à une méthode pour indiquer que la méthode implémente une opération de service dans le cadre d'un contrat de service (spécifié par un attribut 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).

Utilisez les propriétés OperationContractAttribute pour contrôler la structure de l'opération et les valeurs exprimées dans les métadonnées :Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • La propriété Action spécifie l'action qui identifie cette opération de façon unique.The Action property specifies the action that uniquely identifies this operation. WCF distribue des messages de demande aux méthodes basées sur leur action.WCF dispatches request messages to methods based on their action.

  • La propriété AsyncPattern indique que l'opération est implémentée ou peut être appelée de façon asynchrone à l'aide d'une paire de méthodes Begin/End.The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • La propriété HasProtectionLevel indique si la propriété ProtectionLevel a été explicitement définie.The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • La propriété IsOneWay indique que l'opération se compose uniquement d'un message d'entrée.The IsOneWay property indicates that the operation only consists of a single input message. Aucun message de sortie n'est associé à l'opération.The operation has no associated output message.

  • La propriété IsInitiating spécifie si cette opération peut être l'opération initiale dans une session.The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • Le IsTerminating propriété spécifie si WCF essaie de mettre fin à la session active, une fois l’opération terminée.The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • La propriété ProtectionLevel spécifie la sécurité au niveau du message qu'une opération requiert au moment de l'exécution.The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • La propriété ReplyAction spécifie l'action du message de réponse pour l'opération.The ReplyAction property specifies the action of the reply message for the operation.

L'attribut OperationContractAttribute déclare qu'une méthode est une opération dans un contrat de service.The OperationContractAttribute attribute declares that a method is an operation in a service contract. Seules les méthodes qui possèdent l'attribut OperationContractAttribute sont exposées comme opérations de service.Only methods attributed with the OperationContractAttribute are exposed as service operations. Un contrat de service sans méthode marquée avec l'OperationContractAttribute n'expose aucune opération.A service contract without any methods marked with the OperationContractAttribute exposes no operations.

Le AsyncPattern propriété indique qu’une paire de Begin < Nom_méthode> et End < Nom_méthode> méthodes forment une seule opération implémentée de façon asynchrone (sur le client ou le service).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 capacité d'un service à implémenter des opérations de façon asynchrone est un détail d'implémentation du service et n'est pas exposée dans les métadonnées (comme 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)).

De même, les clients peuvent choisir d'appeler des opérations de façon asynchrone indépendantes de la façon dont la méthode de service est implémentée.Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. Appeler des opérations de service de façon asynchrone dans le client est recommandé lorsqu'une méthode de service prend du temps mais qu'elle doit retourner directement des informations au client.Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. Pour plus d'informations, consultez AsyncPattern.For details, see AsyncPattern.

La propriété IsOneWay indique qu'une méthode ne retourne pas de valeur du tout, y compris un message de réponse sous-jacent vide.The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. Ce type de méthode est utile pour les notifications ou la communication de style événement.This type of method is useful for notifications or event-style communication. Les méthodes de ce type ne peuvent pas retourner de message de réponse. La déclaration de la méthode doit donc retourner void.Methods of this kind cannot return a reply message so the method's declaration must return void.

Important

Lorsque vous récupérez par programmation la banque d’informations dans cet attribut, utilisez la ContractDescription classe au lieu de la réflexion.When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

Notes

Si la propriété IsOneWay a la valeur false (valeur par défaut), même les méthodes qui retournent void sont des méthodes bidirectionnelles au niveau de messages sous-jacents.If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. Dans ce cas, l'infrastructure crée et envoie un message vide pour indiquer à l'appelant que la méthode a été retournée.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. Cette approche permet à l'application et à l'infrastructure de retourner des informations sur l'erreur (comme une erreur SOAP) au client.Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. Affecter IsOneWay à true est la seule méthode pour éviter la création et la distribution d'un message de réponse.Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. Pour plus d’informations, consultez unidirectionnel Services.For more information, see One-Way Services.

Les propriétés Action et ReplyAction peuvent être utilisées non seulement pour modifier l'action par défaut des messages SOAP, mais également pour créer des gestionnaires pour les messages non reconnus ou désactiver les actions d'ajout pour la programmation de message directe.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. Utilisez la propriété IsInitiating pour éviter que les clients appellent une opération de service particulière avant d'autres opérations.Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. Utilisez le IsTerminating propriété dispose à WCF de fermer le canal une fois que les clients appeler une opération de service particulier.Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. Pour plus d’informations, consultez à l’aide de Sessions.For more information, see Using Sessions.

La propriété ProtectionLevel vous permet de spécifier sur le contrat d'opération si les messages d'opération sont signés, chiffrés ou signés et chiffrés.The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. Si une liaison ne peut pas fournir le niveau de sécurité requis par le contrat, une exception est levée au moment de l’exécution.If a binding cannot provide the security level required by the contract, an exception is thrown at run time. Pour plus d’informations, consultez ProtectionLevel et niveau de Protection de présentation.For more information, see ProtectionLevel and Understanding Protection Level.

Constructeurs

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

Initialise une nouvelle instance de la classe OperationContractAttribute.Initializes a new instance of the OperationContractAttribute class.

Propriétés

Action Action Action Action

Obtient ou définit l'action WS-Addressing du message de demande.Gets or sets the WS-Addressing action of the request message.

AsyncPattern AsyncPattern AsyncPattern AsyncPattern

Indique qu’une opération est implémentée de façon asynchrone à l’aide d’une paire de méthodes Begin<NomMéthode> et End<NomMéthode> dans un contrat de service.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel HasProtectionLevel HasProtectionLevel HasProtectionLevel

Obtient une valeur qui indique si les messages pour cette opération doivent être chiffrés, signés ou les deux.Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating IsInitiating IsInitiating IsInitiating

Obtient ou définit une valeur qui indique si la méthode implémente une opération qui peut initialiser une session sur le serveur (si une telle session existe).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

Obtient ou définit une valeur qui indique si une opération retourne un message de réponse.Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating IsTerminating IsTerminating IsTerminating

Obtient ou définit une valeur qui indique si l'opération de service conduit le serveur à fermer la session après l'envoi du message de réponse (le cas échéant).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

Obtient ou définit le nom de l'opération.Gets or sets the name of the operation.

ProtectionLevel ProtectionLevel ProtectionLevel ProtectionLevel

Obtient ou définit une valeur qui spécifie si les messages d'une opération doivent être chiffrés, signés ou les deux.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction ReplyAction ReplyAction ReplyAction

Obtient ou définit la valeur de l'action SOAP pour le message de réponse de l'opération.Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId TypeId TypeId TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Méthodes

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

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.Returns a value that indicates whether this instance is equal to a specified object.

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

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

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

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

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

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.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)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.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()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

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

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

Implémentations d’interfaces explicites

_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)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de 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)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.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)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 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)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

S’applique à