OperationContractAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Indica que um método define uma operação que faz parte de um contrato de serviço numa aplicação do 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
- Herança
- Atributos
Exemplos
O seguinte exemplo de código mostra um contrato de serviço simples com uma operação.
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 seguinte é um serviço que implementa um contrato de serviço implícito que especifica três operações. Duas das operações são bidirecionais, que devolvem mensagens de resposta subjacentes ao chamador, independentemente do valor de retorno. A terceira operação recebe uma chamada, uma mensagem de entrada subjacente, mas não retorna nenhuma mensagem de resposta subjacente.
[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;
}
}
Observações
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).
Use as OperationContractAttribute propriedades para controlar a estrutura da operação e os valores expressos nos metadados:
A Action propriedade especifica a ação que identifica de forma única esta operação. O WCF despacha mensagens de pedido para métodos com base na sua ação.
A AsyncPattern propriedade indica que a operação está implementada ou pode ser chamada de forma assíncrona usando um par de métodos Begin/End.
A HasProtectionLevel propriedade indica se a ProtectionLevel propriedade foi explicitamente definida.
A IsOneWay propriedade indica que a operação consiste apenas numa única mensagem de entrada. A operação não tem mensagem de saída associada.
A IsInitiating propriedade especifica se esta operação pode ser a operação inicial numa sessão.
A IsTerminating propriedade especifica se a WCF tenta terminar a sessão atual após a conclusão da operação.
A ProtectionLevel propriedade especifica a segurança ao nível da mensagem que uma operação requer em tempo de execução.
A ReplyAction propriedade especifica a ação da mensagem de resposta para a operação.
O OperationContractAttribute atributo declara que um método é uma operação num contrato de serviço. Apenas os métodos atribuídos ao OperationContractAttribute são expostos como operações de serviço. Um contrato de serviço sem quaisquer métodos marcados com o OperationContractAttribute não expõe operações.
A AsyncPattern propriedade indica que um par de Begin<métodos Nome> e End<Nome do Método> forma uma única operação implementada de forma assíncrona (quer no cliente quer no serviço). A capacidade de um serviço implementar operações de forma assíncrona é um detalhe da implementação do serviço e não está exposta em metadados (como Web Services Description Language (WSDL)).
De forma semelhante, os clientes podem optar por invocar operações de forma assíncrona independentemente de como o método de serviço é implementado. É recomendado chamar operações de serviço de forma assíncrona no cliente quando um método de serviço demora algum tempo mas deve devolver informação diretamente ao cliente. Para obter detalhes, consulte AsyncPattern.
A IsOneWay propriedade indica que um método não retorna qualquer valor, incluindo uma mensagem de resposta subjacente vazia. Este tipo de método é útil para notificações ou comunicação ao estilo de eventos. Métodos deste tipo não podem devolver uma mensagem de resposta, pelo que a declaração do método deve devolver void.
Importante
Ao recuperar programaticamente o armazenamento de informação neste atributo, use a ContractDescription classe em vez de reflexão.
Note
Se a IsOneWay propriedade estiver definida para false, (o padrão), até os métodos que retornam void são métodos bidirecionais ao nível da mensagem subjacente. Neste caso, a infraestrutura cria e envia uma mensagem vazia para indicar ao chamador que o método retornou. A utilização desta abordagem permite que a aplicação e a infraestrutura enviem informações de erro (como uma falha SOAP) de volta ao cliente. Definir IsOneWay para true é a única forma de evitar a criação e o envio de uma mensagem de resposta. Para obter mais informações, consulte One-Way Services.
As Action propriedades e ReplyAction podem ser usadas não só para modificar a ação padrão das mensagens SOAP, mas também para criar manipuladores para mensagens não reconhecidas ou para desativar a adição de ações para programação de mensagens diretas. Utilize a IsInitiating propriedade para impedir que os clientes liguem para uma determinada operação de serviço antes de outras. Use a IsTerminating propriedade para que o WCF feche o canal depois de os clientes chamarem uma determinada operação de serviço. Para obter mais informações, consulte Utilizando Sessões.
A ProtectionLevel propriedade permite-lhe especificar no contrato de operação se as mensagens de operação são assinadas, encriptadas ou assinadas e encriptadas. Se uma vinculação não conseguir fornecer o nível de segurança exigido pelo contrato, é lançada uma exceção em tempo de execução. Para mais informações, consulte ProtectionLevele Compreender o Nível de Proteção.
Construtores
| Name | Description |
|---|---|
| OperationContractAttribute() |
Inicializa uma nova instância da OperationContractAttribute classe. |
Propriedades
| Name | Description |
|---|---|
| Action |
Obtém ou define a ação WS-Addressing da mensagem de solicitação. |
| AsyncPattern |
Indica que uma operação é implementada de forma assíncrona usando um |
| HasProtectionLevel |
Obtém um valor que indica se as mensagens para esta operação devem ser criptografadas, assinadas ou ambas. |
| IsInitiating |
Recebe ou define um valor que indica se o método implementa uma operação que pode iniciar uma sessão no servidor (caso tal sessão exista). |
| IsOneWay |
Obtém ou define um valor que indica se uma operação retorna uma mensagem de resposta. |
| IsTerminating |
Obtém ou define um valor que indica se a operação de serviço faz com que o servidor feche a sessão após o envio da mensagem de resposta, se houver. |
| Name |
Obtém ou define o nome da operação. |
| ProtectionLevel |
Obtém ou define um valor que especifica se as mensagens de uma operação devem ser criptografadas, assinadas ou ambas. |
| ReplyAction |
Obtém ou define o valor da ação SOAP para a mensagem de resposta da operação. |
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface. (Herdado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |