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, , SampleDuplexHelloClientpara pasar un nuevo System.ServiceModel.InstanceContext objeto con el objeto de devolución de llamada para escuchar las 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 DuplexClientBase<TChannel> clase para crear un canal en un servicio que especifique un objeto de devolución de llamada. El DuplexClientBase<TChannel> objeto encapsula un System.ServiceModel.DuplexChannelFactory<TChannel> objeto , 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 IDisposableautomáticamente .
  • Evitar miembros que no son de referencia: pueden hacer que el compilador genere IDisposableautomáticamente .
  • Evitar finalizadores; pero si incluye uno, debe suprimir la advertencia de compilación y llamar SuppressFinalize(Object) a y al finalizador desde (On)(Begin)Close (y/o OnAbort) para emular lo que habría sido el comportamiento generado IDisposable automáticamente.

Constructores

Nombre Description
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

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

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Inicializa una nueva instancia de la DuplexClientBase<TChannel> clase 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 DuplexClientBase<TChannel> clase 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)

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

DuplexClientBase<TChannel>(InstanceContext)

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

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

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

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Inicializa una nueva instancia de la DuplexClientBase<TChannel> clase 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 DuplexClientBase<TChannel> clase 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.

DuplexClientBase<TChannel>(Object, String)

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

DuplexClientBase<TChannel>(Object)

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

Propiedades

Nombre Description
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 subyacente ChannelFactory<TChannel> .

(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 subyacente IClientChannel .

(Heredado de ClientBase<TChannel>)
InnerDuplexChannel

Obtiene la implementación subyacente IClientChannel del canal dúplex.

State

Obtiene el estado actual del ClientBase<TChannel> objeto .

(Heredado de ClientBase<TChannel>)

Métodos

Nombre Description
Abort()

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

(Heredado de ClientBase<TChannel>)
Close()

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

(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 la 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 ClientBase<TChannel> objeto pase 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

Nombre Description
ICommunicationObject.BeginClose(AsyncCallback, Object)

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

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

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

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

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

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

Comienza una operación asincrónica para abrir el ClientBase<TChannel> objeto 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 ClientBase<TChannel> objeto pase de su estado actual al estado cerrado.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Closed

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

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Closing

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

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

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

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

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

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Faulted

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

(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 ClientBase<TChannel> objeto 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 ClientBase<TChannel> objeto pasa del estado creado al estado abierto.

(Heredado de ClientBase<TChannel>)
ICommunicationObject.Opening

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

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

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

(Heredado de ClientBase<TChannel>)

Se aplica a