CallbackBehaviorAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Configura uma implementação de serviço de retorno de chamada em um aplicativo cliente.
public ref class CallbackBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IEndpointBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type CallbackBehaviorAttribute = class
inherit Attribute
interface IEndpointBehavior
Public NotInheritable Class CallbackBehaviorAttribute
Inherits Attribute
Implements IEndpointBehavior
- Herança
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir mostra um CallbackBehaviorAttribute objeto de retorno de chamada que usa o SynchronizationContext objeto para determinar para qual thread fazer marshaling, a ValidateMustUnderstand propriedade para impor a validação de mensagem e a IncludeExceptionDetailInFaults propriedade para retornar exceções como FaultException objetos para o serviço para fins de depuração.
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;
namespace Microsoft.WCF.Documentation
{
[CallbackBehaviorAttribute(
IncludeExceptionDetailInFaults= true,
UseSynchronizationContext=true,
ValidateMustUnderstand=true
)]
public class Client : SampleDuplexHelloCallback
{
AutoResetEvent waitHandle;
public Client()
{
waitHandle = new AutoResetEvent(false);
}
public void Run()
{
// Picks up configuration from the configuration file.
SampleDuplexHelloClient wcfClient
= new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
try
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Enter a greeting to send and press ENTER: ");
Console.Write(">>> ");
Console.ForegroundColor = ConsoleColor.Green;
string greeting = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Called service with: \r\n\t" + greeting);
wcfClient.Hello(greeting);
Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
this.waitHandle.WaitOne();
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Set was called.");
Console.Write("Press ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("ENTER");
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(" to exit...");
Console.ReadLine();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine("The service operation timed out. " + timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine("There was a communication problem. " + commProblem.Message);
Console.ReadLine();
}
}
public static void Main()
{
Client client = new Client();
client.Run();
}
public void Reply(string response)
{
Console.WriteLine("Received output.");
Console.WriteLine("\r\n\t" + response);
this.waitHandle.Set();
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading
Namespace Microsoft.WCF.Documentation
<CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
Public Class Client
Implements SampleDuplexHelloCallback
Private waitHandle As AutoResetEvent
Public Sub New()
waitHandle = New AutoResetEvent(False)
End Sub
Public Sub Run()
' Picks up configuration from the configuration file.
Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
Try
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("Enter a greeting to send and press ENTER: ")
Console.Write(">>> ")
Console.ForegroundColor = ConsoleColor.Green
Dim greeting As String = Console.ReadLine()
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
wcfClient.Hello(greeting)
Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
Me.waitHandle.WaitOne()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine("Set was called.")
Console.Write("Press ")
Console.ForegroundColor = ConsoleColor.Red
Console.Write("ENTER")
Console.ForegroundColor = ConsoleColor.Blue
Console.Write(" to exit...")
Console.ReadLine()
Catch timeProblem As TimeoutException
Console.WriteLine("The service operation timed out. " & timeProblem.Message)
Console.ReadLine()
Catch commProblem As CommunicationException
Console.WriteLine("There was a communication problem. " & commProblem.Message)
Console.ReadLine()
End Try
End Sub
Public Shared Sub Main()
Dim client As New Client()
client.Run()
End Sub
Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
Console.WriteLine("Received output.")
Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
Me.waitHandle.Set()
End Sub
End Class
End Namespace
Comentários
Use o CallbackBehaviorAttribute atributo para configurar ou estender o comportamento de execução de uma implementação de contrato de retorno de chamada em um aplicativo cliente. Esse atributo executa a mesma função para a classe de retorno de chamada que o ServiceBehaviorAttribute atributo, com exceção do comportamento de instanciação e das configurações de transação.
O CallbackBehaviorAttribute valor deve ser aplicado à classe que implementa o contrato de retorno de chamada. Se aplicado a uma implementação de contrato não duplex, uma exceção InvalidOperationException será gerada em runtime.
Observação
Você também pode usar o OperationBehaviorAttribute atributo para as implementações da operação de retorno de chamada. No entanto, se OperationBehaviorAttribute for usada em uma operação de retorno de chamada, a ReleaseInstanceMode propriedade deverá ser None ou uma exceção InvalidOperationException será lançada em runtime.
As seguintes propriedades estão disponíveis:
A AutomaticSessionShutdown propriedade fecha automaticamente a sessão quando o canal é fechado e o retorno de chamada termina de processar as mensagens restantes.
A ConcurrencyMode propriedade controla o modelo de threading interno, habilitando o suporte para objetos de retorno de chamada reentrantes ou multithreaded.
A IgnoreExtensionDataObject propriedade permite que o runtime ignore informações extras de serialização que não são necessárias para processar a mensagem.
A IncludeExceptionDetailInFaults propriedade especifica se exceções não tratadas em um serviço são retornadas ao serviço como falhas SOAP para fins de depuração.
A MaxItemsInObjectGraph propriedade limita o número de itens em um grafo de objeto serializado.
A TransactionIsolationLevel propriedade especifica o nível de isolamento da transação compatível com o contrato.
A TransactionTimeout propriedade especifica o período de tempo no qual uma transação deve ser concluída ou anulada.
A UseSynchronizationContext propriedade indica se as chamadas do método de entrada devem ser sincronizadas automaticamente usando o objeto atual SynchronizationContext .
A ValidateMustUnderstand propriedade informa ao sistema se ele deve confirmar se os cabeçalhos SOAP marcados como
MustUnderstand
foram, de fato, compreendidos.
Construtores
CallbackBehaviorAttribute() |
Inicializa uma nova instância da classe CallbackBehaviorAttribute. |
Propriedades
AutomaticSessionShutdown |
Especifica se uma sessão será fechada automaticamente quando um serviço fechar uma sessão duplex. |
ConcurrencyMode |
Obtém ou define se um serviço dá suporte a um thread, vários threads ou chamadas reentrantes. |
IgnoreExtensionDataObject |
Obtém ou define um valor que especifica se dados de serialização desconhecidos serão enviados na conexão. |
IncludeExceptionDetailInFaults |
Obtém ou define um valor que especifica que as exceções de execução gerais sem tratamento devem ser convertidas em um FaultException<TDetail> do tipo String e enviadas como uma mensagem de falha. Defina-o como |
MaxItemsInObjectGraph |
Obtém ou define o número máximo de itens permitidos em um objeto serializado. |
TransactionIsolationLevel |
Especifica o nível de isolamento da transação. |
TransactionTimeout |
Obtém ou define o período dentro do qual uma transação deve ser concluída. |
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
UseSynchronizationContext |
Obtém ou define um valor que especifica se o contexto de sincronização atual deve ser usado para escolher o thread de execução. |
ValidateMustUnderstand |
Obtém ou define um valor que especifica se o sistema ou o aplicativo reforça o processamento de cabeçalho SOAP |
Métodos
Equals(Object) |
Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
GetHashCode() |
Retorna o código hash para a instância. (Herdado de Attribute) |
GetType() |
Obtém o Type da instância atual. (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. (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. (Herdado de Attribute) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (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. (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. (Herdado de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 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. (Herdado de Attribute) |
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Configura os elementos de associação para dar suporte ao comportamento de retorno de chamada. |
IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Configura o runtime do cliente para o suporte para o objeto de retorno de chamada. |
IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementação do método ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher). Esta implementação não tem nenhum efeito. |
IEndpointBehavior.Validate(ServiceEndpoint) |
Valida a descrição do ponto de extremidade antes de compilar o runtime. |