DuplexClientBase<TChannel> Класс

Определение

Используется для создания канала для дуплексной службы и связи этого канала с объектом обратного вызова.Used to create a channel to a duplex service and associate that channel with a callback object.

generic <typename TChannel>
 where TChannel : classpublic ref class DuplexClientBase abstract : System::ServiceModel::ClientBase<TChannel>
generic <typename TChannel>
 where TChannel : classpublic ref class DuplexClientBase : System::ServiceModel::ClientBase<TChannel>
public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class
public 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)
Public Class DuplexClientBase(Of TChannel)
Inherits ClientBase(Of TChannel)

Параметры типа

TChannel

Тип создаваемого канала.The type of the channel to be created.

Наследование
DuplexClientBase<TChannel>

Примеры

В следующем примере показано использование в клиенте дуплексного типа клиента WCF, SampleDuplexHelloClient для передачи нового System.ServiceModel.InstanceContext объекта с объектом обратного вызова для прослушивания обратных вызовов.The following example shows the use in the client of a duplex WCF client type, the SampleDuplexHelloClient, to pass a new System.ServiceModel.InstanceContext object with the callback object to listen for 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

Комментарии

Используйте класс DuplexClientBase<TChannel>, чтобы создать канал для службы, определяющей объект обратного вызова.Use the DuplexClientBase<TChannel> class to create a channel to a service that specifies a callback object. DuplexClientBase<TChannel>Объект создает оболочку System.ServiceModel.DuplexChannelFactory<TChannel> для объекта, который обеспечивает подключение для объекта WCF.The DuplexClientBase<TChannel> object wraps a System.ServiceModel.DuplexChannelFactory<TChannel> object, which provides the connectivity for the WCF object. Для подключения к дуплексной службе можно использовать любой тип.You can use either type to connect to a duplex service. Дополнительные сведения о дуплексных службах см. в разделе Дуплексные службы.For more information about duplex services, see Duplex Services.

Особое примечание для пользователей управляемого кода C++, создающих классы, унаследованные от данного.Special note for Managed C++ users deriving from this class:

  • Поместите код очистки в блок (On)(Begin)Close (или OnAbort), а не в деструктор.Put your cleanup code in (On)(Begin)Close (and/or OnAbort), not in a destructor.

  • Избегайте использования деструкторов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.Avoid destructors: they cause the compiler to auto-generate IDisposable

  • Избегайте использования нессылочных членов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.Avoid non-reference members: they can cause the compiler to auto-generate IDisposable

  • Избегайте использования методов завершения. При включении этого метода необходимо подавить предупреждение построения и вызвать SuppressFinalize(Object) и сам метод завершения из блока (On)(Begin)Close (или OnAbort) для эмуляции того, каким было бы поведение IDisposable, созданное автоматически.Avoid finalizers; but if you include one, you should suppress the build warning and call SuppressFinalize(Object) and the finalizer itself from (On)(Begin)Close (and/or OnAbort) in order to emulate what would have been the auto-generated IDisposable behavior.

Конструкторы

DuplexClientBase<TChannel>(InstanceContext)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанный объект обратного вызова.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, привязку и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с указанными объектом обратного вызова и конечной точкой службы.Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint.

DuplexClientBase<TChannel>(InstanceContext, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова и имя конфигурации.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, имя конфигурации и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, имя конфигурации и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

DuplexClientBase<TChannel>(Object)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанный объект обратного вызова.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, привязку и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, binding, and service endpoint address.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с указанными объектом обратного вызова и конечной точкой службы.Initializes a new instance of the DuplexClientBase<TChannel> class with the specified callback object and service endpoint.

DuplexClientBase<TChannel>(Object, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова и имя конфигурации.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object and configuration name.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, имя конфигурации и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, configuration name, and service endpoint address.

DuplexClientBase<TChannel>(Object, String, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel>, используя указанные объект обратного вызова, имя конфигурации конечной точки и адрес конечной точки службы.Initializes a new instance of the DuplexClientBase<TChannel> class using the specified callback object, endpoint configuration name, and service endpoint address.

Свойства

Channel

Получает внутренний канал, используемый для отправки сообщений в настроенные различным образом конечные точки служб.Gets the inner channel used to send messages to variously configured service endpoints.

(Унаследовано от ClientBase<TChannel>)
ChannelFactory

Возвращает базовый объект ChannelFactory<TChannel>.Gets the underlying ChannelFactory<TChannel> object.

(Унаследовано от ClientBase<TChannel>)
ClientCredentials

Возвращает учетные данные клиента, используемые для вызова операции.Gets the client credentials used to call an operation.

(Унаследовано от ClientBase<TChannel>)
Endpoint

Возвращает целевую конечную точку службы, к которой может подключиться клиент WCF.Gets the target endpoint for the service to which the WCF client can connect.

(Унаследовано от ClientBase<TChannel>)
InnerChannel

Возвращает базовую реализацию IClientChannel.Gets the underlying IClientChannel implementation.

(Унаследовано от ClientBase<TChannel>)
InnerDuplexChannel

Возвращает базовую реализацию IClientChannel для дуплексного канала.Gets the underlying IClientChannel implementation for the duplex channel.

State

Возвращает текущее состояние объекта ClientBase<TChannel>.Gets the current state of the ClientBase<TChannel> object.

(Унаследовано от ClientBase<TChannel>)

Методы

Abort()

Вызывает мгновенный переход объекта ClientBase<TChannel> из текущего состояния в состояние Closed.Causes the ClientBase<TChannel> object to transition immediately from its current state into the closed state.

(Унаследовано от ClientBase<TChannel>)
Close()

Вызывает переход объекта ClientBase<TChannel> из текущего состояния в состояние Closed.Causes the ClientBase<TChannel> object to transition from its current state into the closed state.

(Унаследовано от ClientBase<TChannel>)
CreateChannel()

Возвращает канал в службу, связанную с объектом обратного вызова, передаваемого конструктору.Returns a channel to the service associated with the callback object passed to the constructor.

CreateChannel()

Возвращает новый канал к службе.Returns a new channel to the service.

(Унаследовано от ClientBase<TChannel>)
DisplayInitializationUI()

Указывает внутреннему каналу отображать пользовательский интерфейс, если он необходим для инициализации канала перед его использованием.Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it.

(Унаследовано от ClientBase<TChannel>)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetDefaultValueForInitialization<T>()

Реплицирует поведение ключевого слова по умолчанию в C#.Replicates the behavior of the default keyword in C#.

(Унаследовано от ClientBase<TChannel>)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Обеспечивает поддержку реализации асинхронной модели, основанной на событиях.Provides support for implementing the event-based asynchronous pattern. Дополнительные сведения об этом шаблоне см. в разделе Обзор асинхронной модели на основе событий.For more information about this pattern, see Event-based Asynchronous Pattern Overview.

(Унаследовано от ClientBase<TChannel>)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Open()

Вызывает переход объекта ClientBase<TChannel> из состояния Created в состояние Opened.Causes the ClientBase<TChannel> object to transition from the created state into the opened state.

(Унаследовано от ClientBase<TChannel>)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Явные реализации интерфейса

ICommunicationObject.BeginClose(AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта ClientBase<TChannel>.Begins an asynchronous operation to close the ClientBase<TChannel>.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта ClientBase<TChannel> с заданным временем ожидания.Begins an asynchronous operation to close the ClientBase<TChannel> with a specified timeout.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта ClientBase<TChannel>.Begins an asynchronous operation to open the ClientBase<TChannel> object.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта ClientBase<TChannel> в течение заданного интервала времени.Begins an asynchronous operation to open the ClientBase<TChannel> object within a specified interval of time.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Close()

Вызывает переход объекта связи из текущего состояния в состояние Closed.Causes a communication object to transition from its current state into the closed state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Вызывает переход объекта ClientBase<TChannel> из текущего состояния в состояние Closed.Causes the ClientBase<TChannel> object to transition from its current state into the closed state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Closed

Обработчик событий, вызываемый после перехода объекта ClientBase<TChannel> из текущего состояния в состояние Closed.The event handler that is invoked when the ClientBase<TChannel> object has transitioned from its current state to the closed state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Closing

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из текущего состояния в состояние Closed.The event handler that is invoked when the ClientBase<TChannel> object transitions from its current state to the closed state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Завершает асинхронную операцию закрытия объекта ClientBase<TChannel>.Completes an asynchronous operation to close the ClientBase<TChannel> object.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Завершает асинхронную операцию открытия объекта ClientBase<TChannel>.Completes an asynchronous operation to open the ClientBase<TChannel> object.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Faulted

Обработчик событий, вызываемый при возникновении ошибки во время выполнения операции в объекте ClientBase<TChannel>.The event handler that is invoked when a fault occurs while performing an operation on the ClientBase<TChannel> object.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Open()

Вызывает переход объекта связи из состояния Created в состояние Opened.Causes a communication object to transition from the created state into the opened state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Вызывает переход объекта ClientBase<TChannel> из состояния Created в состояние Opened в течение заданного интервала времени.Causes the ClientBase<TChannel> object to transition from the created state into the opened state within a specified interval of time.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Opened

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из состояния Created в состояние Opened.The event handler that is invoked when the ClientBase<TChannel> object transitions from the created state to the opened state.

(Унаследовано от ClientBase<TChannel>)
ICommunicationObject.Opening

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из состояния Created в состояние Opened.The event handler that is invoked when the ClientBase<TChannel> object transitions from the created state to the opened state.

(Унаследовано от ClientBase<TChannel>)
IDisposable.Dispose()

Явная реализация метода Dispose().Explicit implementation of the Dispose() method.

(Унаследовано от ClientBase<TChannel>)

Применяется к