Прочитать на английском

Поделиться через


DuplexClientBase<TChannel> Класс

Определение

Используется для создания канала в дуплексной службе и связывания этого канала с объектом обратного вызова.

public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class

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

TChannel

Тип создаваемого канала.

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

Примеры

В следующем примере показано использование в клиенте дуплексного типа клиента WCF, SampleDuplexHelloClient, для передачи нового объекта System.ServiceModel.InstanceContext с объектом обратного вызова для прослушивания обратных вызовов.

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();
    }
  }
}

Комментарии

Используйте класс DuplexClientBase<TChannel> для создания канала в службе, указывающей объект обратного вызова. Объект DuplexClientBase<TChannel> упаковывает объект System.ServiceModel.DuplexChannelFactory<TChannel>, обеспечивающий подключение к объекту WCF. Для подключения к дуплексной службе можно использовать любой тип. Дополнительные сведения о дуплексных службах см. в разделе Дуплексные службы.

Специальное примечание для пользователей Managed C++, производных от этого класса:

  • Поместите код очистки в (On)(Begin)Close (and/or OnAbort), а не в деструктор.

  • Избегайте деструкторов: они вызывают автоматическое создание IDisposable компилятором

  • Избегайте элементов без ссылок: они могут вызвать автоматическое создание IDisposable компилятором.

  • Избегайте завершения; но если включить его, необходимо отключить предупреждение сборки и вызвать SuppressFinalize(Object) и сам метод завершения из (On)(Begin)Close (and/or OnAbort), чтобы эмулировать то, что было бы автоматически созданным IDisposable поведением.

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

DuplexClientBase<TChannel>(InstanceContext)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, привязки и адреса конечной точки службы.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с указанным объектом обратного вызова и конечной точкой службы.

DuplexClientBase<TChannel>(InstanceContext, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова и имени конфигурации.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, имени конфигурации и адреса конечной точки службы.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, имени конфигурации и адреса конечной точки службы.

DuplexClientBase<TChannel>(Object)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, привязки и адреса конечной точки службы.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с указанным объектом обратного вызова и конечной точкой службы.

DuplexClientBase<TChannel>(Object, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова и имени конфигурации.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, имени конфигурации и адреса конечной точки службы.

DuplexClientBase<TChannel>(Object, String, String)

Инициализирует новый экземпляр класса DuplexClientBase<TChannel> с помощью указанного объекта обратного вызова, имени конфигурации конечной точки и адреса конечной точки службы.

Свойства

Channel

Возвращает внутренний канал, используемый для отправки сообщений в различные настроенные конечные точки службы.

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

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

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

Возвращает учетные данные клиента, используемые для вызова операции.

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

Возвращает целевую конечную точку для службы, к которой может подключиться клиент WCF.

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

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

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

Возвращает базовую реализацию IClientChannel для дуплексного канала.

State

Возвращает текущее состояние объекта ClientBase<TChannel>.

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

Методы

Abort()

Вызывает переход объекта ClientBase<TChannel> сразу из текущего состояния в закрытое состояние.

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

Вызывает переход объекта ClientBase<TChannel> из текущего состояния в закрытое состояние.

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

Используется для создания канала в дуплексной службе и связывания этого канала с объектом обратного вызова.

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

Возвращает канал службе, связанной с объектом обратного вызова, переданным конструктору.

CreateChannel()

Возвращает новый канал в службу.

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

Указывает внутреннему каналу отображать пользовательский интерфейс, если он необходим для инициализации канала перед его использованием.

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

Определяет, равен ли указанный объект текущему объекту.

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

Реплицирует поведение ключевого слова по умолчанию в C#.

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

Служит хэш-функцией по умолчанию.

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

Возвращает Type текущего экземпляра.

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

Предоставляет поддержку реализации асинхронного шаблона на основе событий. Дополнительные сведения об этом шаблоне см. в обзор асинхронных шаблонов на основе событий.

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

Создает неглубокую копию текущей Object.

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

Вызывает переход объекта ClientBase<TChannel> из созданного состояния в открытое состояние.

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

Возвращает строку, представляющую текущий объект.

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

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

IAsyncDisposable.DisposeAsync()

Используется для создания канала в дуплексной службе и связывания этого канала с объектом обратного вызова.

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

Начинает асинхронную операцию закрытия ClientBase<TChannel>.

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

Начинает асинхронную операцию закрытия ClientBase<TChannel> с заданным временем ожидания.

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

Начинает асинхронную операцию, чтобы открыть объект ClientBase<TChannel>.

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

Начинает асинхронную операцию, чтобы открыть объект ClientBase<TChannel> в течение указанного интервала времени.

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

Вызывает переход объекта связи из текущего состояния в закрытое состояние.

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

Вызывает переход объекта ClientBase<TChannel> из текущего состояния в закрытое состояние.

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

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из текущего состояния в закрытое состояние.

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

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из текущего состояния в закрытое состояние.

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

Завершает асинхронную операцию, чтобы закрыть объект ClientBase<TChannel>.

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

Завершает асинхронную операцию, чтобы открыть объект ClientBase<TChannel>.

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

Обработчик событий, вызываемый при возникновении сбоя при выполнении операции в объекте ClientBase<TChannel>.

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

Вызывает переход объекта связи из созданного состояния в открытое состояние.

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

Вызывает переход объекта ClientBase<TChannel> из созданного состояния в открытое состояние в течение указанного интервала времени.

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

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из созданного состояния в открытое состояние.

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

Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из созданного состояния в открытое состояние.

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

Явная реализация метода Dispose().

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

Методы расширения

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

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

Продукт Версии
.NET Core 1.0, Core 1.1, 8
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
UWP 10.0