DuplexClientBase<TChannel> Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Используется для создания канала для дуплексной службы и связи этого канала с объектом обратного вызова.
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)
Параметры типа
- 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();
}
}
}
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>, чтобы создать канал для службы, определяющей объект обратного вызова. Объект DuplexClientBase<TChannel> заключает в оболочку System.ServiceModel.DuplexChannelFactory<TChannel> объект , который обеспечивает подключение для объекта WCF. Для подключения к дуплексной службе можно использовать любой тип. Дополнительные сведения о дуплексных службах см. в разделе Дуплексные службы.
Особое примечание для пользователей управляемого кода C++, создающих классы, унаследованные от данного.
Поместите код очистки в блок (On)(Begin)Close (или OnAbort), а не в деструктор.
Избегайте использования деструкторов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.
Избегайте использования нессылочных членов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.
Избегайте использования методов завершения. При включении этого метода необходимо подавить предупреждение построения и вызвать SuppressFinalize(Object) и сам метод завершения из блока (On)(Begin)Close (или 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> из текущего состояния в состояние Closed. (Унаследовано от ClientBase<TChannel>) |
Close() |
Вызывает переход объекта ClientBase<TChannel> из текущего состояния в состояние Closed. (Унаследовано от 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> из состояния Created в состояние Opened. (Унаследовано от ClientBase<TChannel>) |
OpenAsync() |
Используется для создания канала для дуплексной службы и связи этого канала с объектом обратного вызова. (Унаследовано от 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() |
Вызывает переход объекта связи из текущего состояния в состояние Closed. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Close(TimeSpan) |
Вызывает переход объекта ClientBase<TChannel> из текущего состояния в состояние Closed. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Closed |
Обработчик событий, вызываемый после перехода объекта ClientBase<TChannel> из текущего состояния в состояние Closed. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Closing |
Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из текущего состояния в состояние Closed. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.EndClose(IAsyncResult) |
Завершает асинхронную операцию закрытия объекта ClientBase<TChannel>. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.EndOpen(IAsyncResult) |
Завершает асинхронную операцию открытия объекта ClientBase<TChannel>. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Faulted |
Обработчик событий, вызываемый при возникновении ошибки во время выполнения операции в объекте ClientBase<TChannel>. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Open() |
Вызывает переход объекта связи из состояния Created в состояние Opened. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Open(TimeSpan) |
Вызывает переход объекта ClientBase<TChannel> из состояния Created в состояние Opened в течение заданного интервала времени. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Opened |
Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из состояния Created в состояние Opened. (Унаследовано от ClientBase<TChannel>) |
ICommunicationObject.Opening |
Обработчик событий, вызываемый при переходе объекта ClientBase<TChannel> из состояния Created в состояние Opened. (Унаследовано от ClientBase<TChannel>) |
IDisposable.Dispose() |
Явная реализация метода Dispose(). (Унаследовано от ClientBase<TChannel>) |
Методы расширения
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Используется для создания канала для дуплексной службы и связи этого канала с объектом обратного вызова. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Используется для создания канала для дуплексной службы и связи этого канала с объектом обратного вызова. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта. |
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по