Compartilhar via


DuplexClientBase<TChannel> Classe

Definição

Usado para criar um canal para um serviço duplex e associar esse canal a um objeto de retorno de chamada.

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

TChannel

O tipo do canal a ser criado.

Herança
DuplexClientBase<TChannel>

Exemplos

O exemplo a seguir mostra o uso no cliente de um tipo de cliente WCF duplex, o SampleDuplexHelloClient, para passar um novo objeto System.ServiceModel.InstanceContext com o objeto de retorno de chamada para escutar retornos de chamada.

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 a classe DuplexClientBase<TChannel> para criar um canal para um serviço que especifica um objeto de retorno de chamada. O objeto DuplexClientBase<TChannel> encapsula um objeto System.ServiceModel.DuplexChannelFactory<TChannel>, que fornece a conectividade para o objeto WCF. Você pode usar qualquer tipo para se conectar a um serviço duplex. Para obter mais informações sobre serviços duplex, consulte Serviços Duplex.

Observação especial para usuários C++ gerenciados derivados dessa classe:

  • Coloque seu código de limpeza em (Ativado)(Begin)Fechar (e/ou OnAbort), não em um destruidor.

  • Evite destruidores: eles fazem com que o compilador gere automaticamente IDisposable

  • Evite membros não referenciados: eles podem fazer com que o compilador gere automaticamente IDisposable

  • Evite finalizadores; mas, se você incluir um, deverá suprimir o aviso de build e chamar SuppressFinalize(Object) e o próprio finalizador de (On)(Begin)Close (e/ou OnAbort) para emular o que teria sido o comportamento de IDisposable gerado automaticamente.

Construtores

DuplexClientBase<TChannel>(InstanceContext)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada especificado.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada, a associação e o endereço do ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> com o objeto de retorno de chamada e o ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(InstanceContext, String)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada e o nome de configuração especificados.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada, o nome de configuração e o endereço do ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada, o nome de configuração e o endereço do ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(Object)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada especificado.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada, a associação e o endereço do ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> com o objeto de retorno de chamada e o ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(Object, String)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada e o nome de configuração especificados.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada, o nome de configuração e o endereço do ponto de extremidade de serviço especificados.

DuplexClientBase<TChannel>(Object, String, String)

Inicializa uma nova instância da classe DuplexClientBase<TChannel> usando o objeto de retorno de chamada especificado, o nome de configuração do ponto de extremidade e o endereço do ponto de extremidade de serviço.

Propriedades

Channel

Obtém o canal interno usado para enviar mensagens para pontos de extremidade de serviço configurados de várias forma.

(Herdado de ClientBase<TChannel>)
ChannelFactory

Obtém o objeto ChannelFactory<TChannel> subjacente.

(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 ponto de extremidade de destino para o serviço ao qual o cliente WCF pode se conectar.

(Herdado de ClientBase<TChannel>)
InnerChannel

Obtém a implementação de IClientChannel subjacente.

(Herdado de ClientBase<TChannel>)
InnerDuplexChannel

Obtém a implementação de IClientChannel subjacente para o canal duplex.

State

Obtém o estado atual do objeto ClientBase<TChannel>.

(Herdado de ClientBase<TChannel>)

Métodos

Abort()

Faz com que o objeto ClientBase<TChannel> faça a transição imediatamente de seu estado atual para o estado fechado.

(Herdado de ClientBase<TChannel>)
Close()

Faz com que o objeto ClientBase<TChannel> faça a transição de 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 retorno de chamada.

(Herdado de ClientBase<TChannel>)
CreateChannel()

Retorna um canal para o serviço associado ao objeto de retorno de chamada passado para o construtor.

CreateChannel()

Retorna um novo canal para o serviço.

(Herdado de ClientBase<TChannel>)
DisplayInitializationUI()

Instrui o canal interno a exibir uma interface do usuário se for necessário inicializar o canal antes de usá-lo.

(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 a função de hash padrão.

(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 evento. Para obter mais informações sobre esse padrão, consulte Visão geral do padrão assíncrono baseado em evento.

(Herdado de ClientBase<TChannel>)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
Open()

Faz com que o objeto ClientBase<TChannel> faça a transição do estado criado para o estado aberto.

(Herdado de ClientBase<TChannel>)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

IAsyncDisposable.DisposeAsync()

Usado para criar um canal para um serviço duplex e associar esse canal a um objeto de retorno de chamada.

(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 limite especificado.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Inicia uma operação assíncrona para abrir o objeto ClientBase<TChannel>.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para abrir o objeto ClientBase<TChannel> 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 de seu estado atual para o estado fechado.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Faz com que o objeto ClientBase<TChannel> faça a transição de seu estado atual para o estado fechado.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.Closed

O manipulador de eventos que é invocado quando o objeto ClientBase<TChannel> fez a transição de seu estado atual para o estado fechado.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.Closing

O manipulador de eventos que é invocado quando o objeto ClientBase<TChannel> faz a transição de seu estado atual para o estado fechado.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Conclui uma operação assíncrona para fechar o objeto ClientBase<TChannel>.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Conclui uma operação assíncrona para abrir o objeto ClientBase<TChannel>.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.Faulted

O manipulador de eventos que é invocado quando ocorre uma falha durante a execução de uma operação no objeto ClientBase<TChannel>.

(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 objeto ClientBase<TChannel> 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 manipulador de eventos que é invocado quando o objeto ClientBase<TChannel> faz a transição do estado criado para o estado aberto.

(Herdado de ClientBase<TChannel>)
ICommunicationObject.Opening

O manipulador de eventos que é invocado quando o objeto ClientBase<TChannel> faz a transição do estado criado para o estado aberto.

(Herdado de ClientBase<TChannel>)
IDisposable.Dispose()

Implementação explícita do método Dispose().

(Herdado de ClientBase<TChannel>)

Métodos de Extensão

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono serão executadas.

Aplica-se a