OperationContractAttribute Classe

Definição

Indica que um método define uma operação que faz parte de um contrato de serviço em um aplicativo WCF (Windows Communication Foundation).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
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Herança
OperationContractAttribute
Atributos

Exemplos

O exemplo de código a seguir mostra um contrato de serviço simples com uma operação.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

O exemplo a seguir é um serviço que implementa um contrato de serviço implícito que especifica três operações.The following example is a service that implements an implicit service contract that specifies three operations. Duas das operações são operações bidirecionais, que retornam mensagens de resposta subjacentes para o chamador, independentemente do valor retornado.Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. A terceira operação recebe uma chamada, uma mensagem de entrada subjacente, mas não retorna nenhuma mensagem de resposta subjacente.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;  
  }  
}  

Comentários

Aplique o OperationContractAttribute a um método para indicar que o método implementa uma operação de serviço como parte de um contrato de serviço (especificado por um ServiceContractAttribute atributo).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).

Use as OperationContractAttribute Propriedades para controlar a estrutura da operação e os valores expressos nos metadados:Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • A Action propriedade especifica a ação que identifica exclusivamente essa operação.The Action property specifies the action that uniquely identifies this operation. O WCF despacha mensagens de solicitação para métodos com base em sua ação.WCF dispatches request messages to methods based on their action.

  • A AsyncPattern propriedade indica que a operação é implementada ou pode ser chamada de forma assíncrona usando um par de métodos Begin/End.The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • A HasProtectionLevel propriedade indica se a ProtectionLevel propriedade foi definida explicitamente.The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • A IsOneWay propriedade indica que a operação consiste apenas em uma única mensagem de entrada.The IsOneWay property indicates that the operation only consists of a single input message. A operação não tem nenhuma mensagem de saída associada.The operation has no associated output message.

  • A IsInitiating propriedade especifica se essa operação pode ser a operação inicial em uma sessão.The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • A IsTerminating propriedade especifica se o WCF tenta encerrar a sessão atual após a conclusão da operação.The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • A ProtectionLevel propriedade especifica a segurança em nível de mensagem que uma operação requer em tempo de execução.The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • A ReplyAction propriedade especifica a ação da mensagem de resposta para a operação.The ReplyAction property specifies the action of the reply message for the operation.

O OperationContractAttribute atributo declara que um método é uma operação em um contrato de serviço.The OperationContractAttribute attribute declares that a method is an operation in a service contract. Somente os métodos atribuídos ao OperationContractAttribute são expostos como operações de serviço.Only methods attributed with the OperationContractAttribute are exposed as service operations. Um contrato de serviço sem nenhum método marcado com o OperationContractAttribute não expõe operações.A service contract without any methods marked with the OperationContractAttribute exposes no operations.

A AsyncPattern propriedade indica que um par de Begin <methodName> End <methodName> métodos e forma uma única operação implementada de forma assíncrona (seja no cliente ou no serviço).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). A capacidade de um serviço de implementar operações de forma assíncrona é um detalhe de implementação de serviço e não é exposta em metadados (como 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)).

Da mesma forma, os clientes podem optar por invocar operações de forma assíncrona, independentemente de como o método de serviço é implementado.Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. A chamada de operações de serviço assincronamente no cliente é recomendada quando um método de serviço leva algum tempo, mas deve retornar informações diretamente para o cliente.Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. Para obter detalhes, consulte AsyncPattern.For details, see AsyncPattern.

A IsOneWay propriedade indica que um método não retorna nenhum valor, incluindo uma mensagem de resposta subjacente vazia.The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. Esse tipo de método é útil para notificações ou comunicação no estilo de evento.This type of method is useful for notifications or event-style communication. Métodos desse tipo não podem retornar uma mensagem de resposta para que a declaração do método deva retornar void .Methods of this kind cannot return a reply message so the method's declaration must return void.

Importante

Ao recuperar programaticamente o armazenamento de informações nesse atributo, use a ContractDescription classe em vez de reflexão.When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

Observação

Se a IsOneWay propriedade for definida como false , (o padrão), mesmo os métodos que retornam void são métodos bidirecionais no nível de mensagem subjacente.If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. Nesse caso, a infraestrutura cria e envia uma mensagem vazia para indicar ao chamador que o método retornou.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. O uso dessa abordagem permite que o aplicativo e a infraestrutura enviem informações de erro (como uma falha de SOAP) de volta ao cliente.Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. A configuração IsOneWay como true é a única maneira de impedir a criação e o despacho de uma mensagem de resposta.Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. Para obter mais informações, consulte Serviços unidirecionais.For more information, see One-Way Services.

As Action ReplyAction Propriedades e podem ser usadas não apenas para modificar a ação padrão de mensagens SOAP, mas também para criar manipuladores para mensagens não reconhecidas ou para desabilitar a adição de ações para programação de mensagens diretas.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. Use a IsInitiating propriedade para impedir que os clientes chamem uma operação de serviço específica antes de outras operações.Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. Use a IsTerminating propriedade para que o WCF feche o canal depois que os clientes chamarem uma operação de serviço específica.Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. Para obter mais informações, consulte usando sessões.For more information, see Using Sessions.

A ProtectionLevel propriedade permite que você especifique no contrato de operação se as mensagens de operação são assinadas, criptografadas ou assinadas e criptografadas.The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. Se uma associação não puder fornecer o nível de segurança exigido pelo contrato, uma exceção será lançada em tempo de execução.If a binding cannot provide the security level required by the contract, an exception is thrown at run time. Para obter mais informações, consulte ProtectionLevel e noções básicas sobre nível de proteção.For more information, see ProtectionLevel and Understanding Protection Level.

Construtores

OperationContractAttribute()

Inicializa uma nova instância da classe OperationContractAttribute.Initializes a new instance of the OperationContractAttribute class.

Propriedades

Action

Obtém ou define a ação WS-Addressing da mensagem de solicitação.Gets or sets the WS-Addressing action of the request message.

AsyncPattern

Indica que uma operação é implementada de forma assíncrona usando um Begin < > par de métodos MethodName e End < MethodName > em um contrato de serviço.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel

Obtém um valor que indica se as mensagens para essa operação devem ser criptografadas, assinadas ou ambos.Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating

Obtém ou define um valor que indica se o método implementa uma operação que pode iniciar uma sessão no servidor (se essa sessão existir).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

Obtém ou define um valor que indica se uma operação retorna uma mensagem de resposta.Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating

Obtém ou define um valor que indica se a operação de serviço faz o servidor fechar a sessão depois que a mensagem de resposta, se houver, for enviada.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

Obtém ou define o nome da operação.Gets or sets the name of the operation.

ProtectionLevel

Obtém ou define um valor que especifica se as mensagens de uma operação devem ser criptografadas, assinadas ou ambos.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction

Obtém ou define o valor da ação de SOAP para a mensagem de resposta da operação.Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.Returns the hash code for this instance.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.Maps a set of names to a corresponding set of dispatch identifiers.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.Provides access to properties and methods exposed by an object.

(Herdado de Attribute)

Aplica-se a