Compartir a través de


DuplexClientBase<TChannel> Clase

Definición

Se usa para crear un canal a un servicio dúplex y asociar ese canal a un objeto de devolución de llamada.

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

Tipo del canal que se va a crear.

Herencia
DuplexClientBase<TChannel>

Ejemplos

En el ejemplo siguiente se muestra el uso en el cliente de un tipo de cliente WCF dúplex, el SampleDuplexHelloClient, para pasar un nuevo objeto System.ServiceModel.InstanceContext con el objeto de devolución de llamada para escuchar devoluciones de llamada.

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

Comentarios

Use la clase DuplexClientBase<TChannel> para crear un canal en un servicio que especifique un objeto de devolución de llamada. El objeto DuplexClientBase<TChannel> encapsula un objeto System.ServiceModel.DuplexChannelFactory<TChannel>, que proporciona la conectividad para el objeto WCF. Puede usar cualquier tipo para conectarse a un servicio dúplex. Para obtener más información sobre los servicios dúplex, consulte Servicios dúplex.

Nota especial para los usuarios de C++ administrados derivados de esta clase:

  • Coloque el código de limpieza en (On)(Begin)Close (and/or OnAbort), no en un destructor.

  • Evitar destructores: hacen que el compilador genere automáticamente IDisposable

  • Evitar miembros que no son de referencia: pueden hacer que el compilador genere automáticamente IDisposable

  • Evitar finalizadores; pero si incluye uno, debe suprimir la advertencia de compilación y llamar a SuppressFinalize(Object) y al finalizador de (On)(Begin)Close (y/o OnAbort) para emular lo que habría sido el comportamiento de IDisposable generado automáticamente.

Constructores

DuplexClientBase<TChannel>(InstanceContext)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada especificado.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el enlace y la dirección del punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> con el objeto de devolución de llamada y el punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(InstanceContext, String)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada y el nombre de configuración especificados.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el nombre de configuración y la dirección del punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el nombre de configuración y la dirección del punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(Object)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada especificado.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el enlace y la dirección del punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> con el objeto de devolución de llamada y el punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(Object, String)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada y el nombre de configuración especificados.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el nombre de configuración y la dirección del punto de conexión de servicio especificados.

DuplexClientBase<TChannel>(Object, String, String)

Inicializa una nueva instancia de la clase DuplexClientBase<TChannel> mediante el objeto de devolución de llamada, el nombre de configuración del punto de conexión y la dirección del punto de conexión de servicio especificados.

Propiedades

Channel

Obtiene el canal interno que se usa para enviar mensajes a varios puntos de conexión de servicio configurados.

(Heredado de ClientBase<TChannel>)
ChannelFactory

Obtiene el objeto ChannelFactory<TChannel> subyacente.

(Heredado de ClientBase<TChannel>)
ClientCredentials

Obtiene las credenciales de cliente usadas para llamar a una operación.

(Heredado de ClientBase<TChannel>)
Endpoint

Obtiene el punto de conexión de destino del servicio al que puede conectarse el cliente WCF.

(Heredado de ClientBase<TChannel>)
InnerChannel

Obtiene la implementación del IClientChannel subyacente.

(Heredado de ClientBase<TChannel>)
InnerDuplexChannel

Obtiene la implementación de IClientChannel subyacente para el canal dúplex.

State

Obtiene el estado actual del objeto ClientBase<TChannel>.

(Heredado de ClientBase<TChannel>)

Métodos

Abort()

Hace que el objeto ClientBase<TChannel> realice la transición inmediatamente de su estado actual al estado cerrado.

(Heredado de ClientBase<TChannel>)
Close()

Hace que el objeto ClientBase<TChannel> pase de su estado actual al estado cerrado.

(Heredado de ClientBase<TChannel>)
CloseAsync()

Se usa para crear un canal a un servicio dúplex y asociar ese canal a un objeto de devolución de llamada.

(Heredado de ClientBase<TChannel>)
CreateChannel()

Devuelve un canal al servicio asociado al objeto de devolución de llamada pasado al constructor.

CreateChannel()

Devuelve un nuevo canal al servicio.

(Heredado de ClientBase<TChannel>)
DisplayInitializationUI()

Indica al canal interno que muestre una interfaz de usuario si es necesario inicializar el canal antes de usarlo.

(Heredado de ClientBase<TChannel>)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetDefaultValueForInitialization<T>()

Replica el comportamiento de la palabra clave predeterminada en C#.

(Heredado de ClientBase<TChannel>)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Proporciona compatibilidad para implementar el patrón asincrónico basado en eventos. Para obtener más información sobre este patrón, consulte Introducción al patrón asincrónico basado en eventos.

(Heredado de ClientBase<TChannel>)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
Open()

Hace que el objeto ClientBase<TChannel> realice la transición del estado creado al estado abierto.

(Heredado de ClientBase<TChannel>)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

IAsyncDisposable.DisposeAsync()

Se usa para crear un canal a un servicio dúplex y asociar ese canal a un objeto de devolución de llamada.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.BeginClose(AsyncCallback, Object)

Inicia una operación asincrónica para cerrar el ClientBase<TChannel>.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Comienza una operación asincrónica para cerrar el ClientBase<TChannel> con un tiempo de espera especificado.

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

Comienza una operación asincrónica para abrir el objeto ClientBase<TChannel>.

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

Comienza una operación asincrónica para abrir el objeto ClientBase<TChannel> dentro de un intervalo de tiempo especificado.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Close()

Hace que un objeto de comunicación pase de su estado actual al estado cerrado.

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

Hace que el objeto ClientBase<TChannel> pase de su estado actual al estado cerrado.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Closed

Controlador de eventos que se invoca cuando el objeto ClientBase<TChannel> ha pasado de su estado actual al estado cerrado.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Closing

Controlador de eventos que se invoca cuando el objeto ClientBase<TChannel> pasa de su estado actual al estado cerrado.

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

Completa una operación asincrónica para cerrar el objeto ClientBase<TChannel>.

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

Completa una operación asincrónica para abrir el objeto ClientBase<TChannel>.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Faulted

Controlador de eventos que se invoca cuando se produce un error al realizar una operación en el objeto ClientBase<TChannel>.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Open()

Hace que un objeto de comunicación pase del estado creado al estado abierto.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Hace que el objeto ClientBase<TChannel> pase del estado creado al estado abierto dentro de un intervalo de tiempo especificado.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Opened

Controlador de eventos que se invoca cuando el objeto ClientBase<TChannel> pasa del estado creado al estado abierto.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Opening

Controlador de eventos que se invoca cuando el objeto ClientBase<TChannel> pasa del estado creado al estado abierto.

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

Implementación explícita del método Dispose().

(Heredado de ClientBase<TChannel>)

Métodos de extensión

ConfigureAwait(IAsyncDisposable, Boolean)

Configura cómo se realizarán las esperas en las tareas devueltas desde un descartable asincrónico.

Se aplica a