DuplexClientBase<TChannel> 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.
Usado para criar um canal para um serviço duplex e associar esse canal a um objeto de callback.
generic <typename TChannel>
where TChannel : classpublic ref class DuplexClientBase abstract : System::ServiceModel::ClientBase<TChannel>
public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class
type DuplexClientBase<'Channel (requires 'Channel : null)> = class
inherit ClientBase<'Channel (requires 'Channel : null)>
Public MustInherit Class DuplexClientBase(Of TChannel)
Inherits ClientBase(Of TChannel)
Parâmetros de Tipo Genérico
- TChannel
O tipo de canal a criar.
- Herança
Exemplos
O exemplo seguinte mostra a utilização, no cliente, de um tipo de cliente WCF duplex, o SampleDuplexHelloClient, para passar um novo System.ServiceModel.InstanceContext objeto com o objeto de callback para ouvir callbacks.
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
Observações
Use a DuplexClientBase<TChannel> classe para criar um canal para um serviço que especifique um objeto de callback. O DuplexClientBase<TChannel> objeto envolve um System.ServiceModel.DuplexChannelFactory<TChannel> objeto, que fornece a conectividade para o objeto WCF. Pode usar qualquer um dos tipos para se ligar a um serviço duplex. Para mais informações sobre serviços de duplex, consulte Serviços de Duplex.
Nota especial para utilizadores de C++ gerido derivados desta classe:
- Coloca o teu código de limpeza em (On)(Begin)Close (e/ou OnAbort), não num destrutor.
- Evite destruidores: eles fazem com que o compilador gere IDisposableautomaticamente .
- Evite membros que não sejam de referência: podem fazer com que o compilador gere IDisposableautomaticamente .
- Evite finalizadores; mas se incluir um, deve suprimir o aviso de compilação e a chamada SuppressFinalize(Object) e o próprio finalizador de (On)(Begin)Close (e/ou OnAbort) para emular o que teria sido o comportamento gerado IDisposable automaticamente.
Construtores
| Name | Description |
|---|---|
| DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, a ligação e o endereço do endpoint do serviço. |
| DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe com o objeto de callback e o endpoint de serviço especificados. |
| DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, nome de configuração e endereço do endpoint do serviço. |
| DuplexClientBase<TChannel>(InstanceContext, String, String) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, nome de configuração e endereço do endpoint do serviço. |
| DuplexClientBase<TChannel>(InstanceContext, String) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado e o nome da configuração. |
| DuplexClientBase<TChannel>(InstanceContext) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado. |
| DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, a ligação e o endereço do endpoint do serviço. |
| DuplexClientBase<TChannel>(Object, ServiceEndpoint) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe com o objeto de callback e o endpoint de serviço especificados. |
| DuplexClientBase<TChannel>(Object, String, EndpointAddress) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, nome de configuração e endereço do endpoint do serviço. |
| DuplexClientBase<TChannel>(Object, String, String) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado, o nome de configuração do endpoint e o endereço do endpoint de serviço. |
| DuplexClientBase<TChannel>(Object, String) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado e o nome da configuração. |
| DuplexClientBase<TChannel>(Object) |
Inicializa uma nova instância da DuplexClientBase<TChannel> classe usando o objeto de callback especificado. |
Propriedades
| Name | Description |
|---|---|
| Channel |
Obtém o canal interno usado para enviar mensagens para endpoints de serviço configurados de várias formas. (Herdado de ClientBase<TChannel>) |
| ChannelFactory |
Obtém o objeto subjacente ChannelFactory<TChannel> . (Herdado de ClientBase<TChannel>) |
| ClientCredentials |
Obtém as credenciais do cliente usadas para chamar uma operação. (Herdado de ClientBase<TChannel>) |
| Endpoint |
Obtém o endpoint alvo do serviço ao qual o cliente WCF pode ligar-se. (Herdado de ClientBase<TChannel>) |
| InnerChannel |
Obtém a implementação subjacente IClientChannel . (Herdado de ClientBase<TChannel>) |
| InnerDuplexChannel |
Obtém a implementação subjacente IClientChannel para o canal duplex. |
| State |
Obtém o estado atual do ClientBase<TChannel> objeto. (Herdado de ClientBase<TChannel>) |
Métodos
| Name | Description |
|---|---|
| Abort() |
Faz com que o ClientBase<TChannel> objeto faça a transição imediata do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| Close() |
Faz com que o ClientBase<TChannel> objeto faça a transição do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| CloseAsync() |
Usado para criar um canal para um serviço duplex e associar esse canal a um objeto de callback. (Herdado de ClientBase<TChannel>) |
| CreateChannel() |
Devolve um canal ao serviço associado ao objeto de callback passado para o construtor. |
| CreateChannel() |
Devolve um novo canal ao serviço. (Herdado de ClientBase<TChannel>) |
| DisplayInitializationUI() |
Instrui o canal interno a mostrar uma interface de utilizador caso seja necessário inicializar o canal antes de o utilizar. (Herdado de ClientBase<TChannel>) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetDefaultValueForInitialization<T>() |
Replica o comportamento da palavra-chave padrão em C#. (Herdado de ClientBase<TChannel>) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object) |
Fornece suporte para implementar o padrão assíncrono baseado em eventos. Para mais informações sobre este padrão, consulte Visão Geral do Padrão Assíncrono Baseado em Eventos. (Herdado de ClientBase<TChannel>) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| Open() |
Faz com que o ClientBase<TChannel> objeto faça a transição do estado criado para o estado aberto. (Herdado de ClientBase<TChannel>) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IAsyncDisposable.DisposeAsync() |
Usado para criar um canal para um serviço duplex e associar esse canal a um objeto de callback. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.BeginClose(AsyncCallback, Object) |
Inicia uma operação assíncrona para fechar o ClientBase<TChannel>. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) |
Inicia uma operação assíncrona para fechar o ClientBase<TChannel> com um tempo de espera especificado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.BeginOpen(AsyncCallback, Object) |
Inicia uma operação assíncrona para abrir o ClientBase<TChannel> objeto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) |
Inicia uma operação assíncrona para abrir o ClientBase<TChannel> objeto dentro de um intervalo de tempo especificado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Close() |
Faz com que um objeto de comunicação faça a transição do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Close(TimeSpan) |
Faz com que o ClientBase<TChannel> objeto faça a transição do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Closed |
O gestor de eventos que é invocado quando o ClientBase<TChannel> objeto transitou do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Closing |
O gestor de eventos que é invocado quando o ClientBase<TChannel> objeto transita do seu estado atual para o estado fechado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.EndClose(IAsyncResult) |
Completa uma operação assíncrona para fechar o ClientBase<TChannel> objeto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.EndOpen(IAsyncResult) |
Completa uma operação assíncrona para abrir o ClientBase<TChannel> objeto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Faulted |
O gestor de eventos que é invocado quando ocorre uma falha durante a realização de uma operação no ClientBase<TChannel> objeto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Open() |
Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Open(TimeSpan) |
Faz com que o ClientBase<TChannel> objeto faça a transição do estado criado para o estado aberto dentro de um intervalo de tempo especificado. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Opened |
O gestor de eventos que é invocado quando o ClientBase<TChannel> objeto transita do estado criado para o estado aberto. (Herdado de ClientBase<TChannel>) |
| ICommunicationObject.Opening |
O gestor de eventos que é invocado quando o ClientBase<TChannel> objeto transita do estado criado para o estado aberto. (Herdado de ClientBase<TChannel>) |
| IDisposable.Dispose() |
Implementação explícita do Dispose() método. (Herdado de ClientBase<TChannel>) |