Partager via


OperationContractAttribute Classe

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

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
Héritage
OperationContractAttribute
Attributs

Exemples

L’exemple de code suivant montre un contrat de service simple avec une seule opération.

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. Deux des opérations sont des opérations bidirectionnelles, qui retournent les messages de réponse sous-jacents à l’appelant, quelle que soit la valeur de retour. La troisième opération reçoit un appel, un message entrant sous-jacent, mais ne retourne aucun message de réponse sous-jacent.

[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 la OperationContractAttribute méthode à 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 ServiceContractAttribute attribut).

Utilisez les OperationContractAttribute propriétés pour contrôler la structure de l’opération et les valeurs exprimées dans les métadonnées :

  • La Action propriété spécifie l’action qui identifie de façon unique cette opération. WCF distribue les messages de requête aux méthodes en fonction de leur action.

  • La AsyncPattern propriété 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.

  • La HasProtectionLevel propriété indique si la ProtectionLevel propriété a été définie explicitement.

  • La IsOneWay propriété indique que l’opération se compose uniquement d’un seul message d’entrée. L’opération n’a pas de message de sortie associé.

  • La IsInitiating propriété spécifie si cette opération peut être l’opération initiale dans une session.

  • La IsTerminating propriété spécifie si WCF tente d’arrêter la session active une fois l’opération terminée.

  • La ProtectionLevel propriété spécifie la sécurité au niveau du message qu’une opération nécessite au moment de l’exécution.

  • La ReplyAction propriété spécifie l’action du message de réponse pour l’opération.

L’attribut OperationContractAttribute déclare qu’une méthode est une opération dans un contrat de service. Seules les méthodes attribuées avec les OperationContractAttribute opérations de service sont exposées en tant qu’opérations de service. Un contrat de service sans aucune méthode marquée avec l’exposition OperationContractAttribute n’effectue aucune opération.

La AsyncPattern propriété indique qu’une paire de Begin<méthodes methodName et End<methodName>> forme une seule opération implémentée de manière asynchrone (sur le client ou le service). La capacité d’un service à implémenter des opérations de manière asynchrone est un détail d’implémentation de service et n’est pas exposée dans les métadonnées (par exemple, Web Services Description Language (WSDL)).

De même, les clients peuvent choisir d’appeler des opérations de manière asynchrone indépendamment de la façon dont la méthode de service est implémentée. L’appel d’opérations de service de manière asynchrone dans le client est recommandé lorsqu’une méthode de service prend un certain temps, mais doit retourner des informations directement au client. Pour plus d’informations, consultez AsyncPattern.

La IsOneWay propriété indique qu’une méthode ne retourne aucune valeur du tout, y compris un message de réponse sous-jacent vide. Ce type de méthode est utile pour les notifications ou la communication de style événement. Les méthodes de ce type ne peuvent pas retourner un message de réponse, de sorte que la déclaration de la méthode doit retourner void.

Important

Lorsque vous récupérez par programme le magasin d’informations dans cet attribut, utilisez la ContractDescription classe au lieu de la réflexion.

Note

Si la IsOneWay propriété est définie falsesur , (valeur par défaut), même les méthodes retournées void sont des méthodes bidirectionnel au niveau du message sous-jacent. Dans ce cas, l’infrastructure crée et envoie un message vide pour indiquer à l’appelant que la méthode a retournée. Cette approche permet à l’application et à l’infrastructure d’envoyer des informations d’erreur (telles qu’une erreur SOAP) au client. true La définition IsOneWay est la seule façon d’empêcher la création et la distribution d’un message de réponse. Pour plus d’informations, consultez One-Way Services.

Les Action propriétés peuvent ReplyAction ê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 pour désactiver l’ajout d’actions pour la programmation de messages directs. Utilisez la IsInitiating propriété pour empêcher les clients d’appeler une opération de service particulière avant d’autres opérations. Utilisez la IsTerminating propriété pour que WCF ferme le canal une fois que les clients appellent une opération de service particulière. Pour plus d’informations, consultez Utilisation de sessions.

La ProtectionLevel propriété 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. 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. Pour plus d’informations, consultez ProtectionLevel et Présentation du niveau de protection.

Constructeurs

Nom Description
OperationContractAttribute()

Initialise une nouvelle instance de la classe OperationContractAttribute.

Propriétés

Nom Description
Action

Obtient ou définit l'action WS-Addressing du message de demande.

AsyncPattern

Indique qu’une opération est implémentée de façon asynchrone à l’aide d’une Begin< paire de méthodes methodName> et End<methodName> dans un contrat de service.

HasProtectionLevel

Obtient une valeur qui indique si les messages pour cette opération doivent être chiffrés, signés ou les deux.

IsInitiating

Obtient ou définit une valeur qui indique si la méthode implémente une opération qui peut lancer une session sur le serveur (si une telle session existe).

IsOneWay

Obtient ou définit une valeur qui indique si une opération retourne un message de réponse.

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

Name

Obtient ou définit le nom de l'opération.

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.

ReplyAction

Obtient ou définit la valeur de l'action SOAP pour le message de réponse de l'opération.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à