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


DuplexChannelFactory<TChannel> Класс

Определение

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

generic <typename TChannel>
public ref class DuplexChannelFactory : System::ServiceModel::ChannelFactory<TChannel>
public class DuplexChannelFactory<TChannel> : System.ServiceModel.ChannelFactory<TChannel>
type DuplexChannelFactory<'Channel> = class
    inherit ChannelFactory<'Channel>
Public Class DuplexChannelFactory(Of TChannel)
Inherits ChannelFactory(Of TChannel)

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

TChannel

Тип канала, созданного фабрикой каналов.

Наследование
Производный

Примеры

В следующем примере показано, как создать фабрику каналов и использовать ее для создания каналов и управления ими.

// Construct InstanceContext to handle messages on the callback interface.
// An instance of ChatApp is created and passed to the InstanceContext.
    InstanceContext site = new InstanceContext(new ChatApp());

// Create the participant with the given endpoint configuration.
// Each participant opens a duplex channel to the mesh.
// Participant is an instance of the chat application that has opened a channel to the mesh.

    using (DuplexChannelFactory<IChatChannel> cf =
        new DuplexChannelFactory<IChatChannel>(site,"ChatEndpoint"))
    {
        X509Certificate2 issuer = GetCertificate(
            StoreName.CertificateAuthority,
            StoreLocation.CurrentUser, "CN=" + issuerName,
            X509FindType.FindBySubjectDistinguishedName);
        cf.Credentials.Peer.Certificate =
            GetCertificate(StoreName.My,
            StoreLocation.CurrentUser,
            "CN=" + member,
            X509FindType.FindBySubjectDistinguishedName);
        cf.Credentials.Peer.PeerAuthentication.CertificateValidationMode  =
            X509CertificateValidationMode.Custom;
        cf.Credentials.Peer.PeerAuthentication.CustomCertificateValidator =
            new IssuerBasedValidator();

        using (IChatChannel participant = cf.CreateChannel())
        {
    // Retrieve the PeerNode associated with the participant and register for online/offline events.
    // PeerNode represents a node in the mesh. Mesh is the named collection of connected nodes.
            IOnlineStatus ostat = participant.GetProperty<IOnlineStatus>();
            ostat.Online += new EventHandler(OnOnline);
            ostat.Offline += new EventHandler(OnOffline);

            Console.WriteLine("{0} is ready", member);
            Console.WriteLine("Press <ENTER> to send the chat message.");

    // Announce self to other participants.
            participant.Join(member);
            Console.ReadLine();
            participant.Chat(member, "Hi there - I am chatting");

            Console.WriteLine("Press <ENTER> to terminate this instance of chat.");
            Console.ReadLine();
    // Leave the mesh and close the client.
            participant.Leave(member);
        }
    }

Комментарии

Дуплексный канал позволяет клиентам и серверам взаимодействовать друг с другом независимо, чтобы либо инициировать вызовы к другому. Дуплексная служба может отправлять сообщения в конечную точку клиента, обеспечивая поведение, подобное событиям. Дуплексное взаимодействие возникает, когда клиент устанавливает сеанс со службой и предоставляет службе канал, на котором служба может отправлять сообщения обратно клиенту. Для создания этих дуплексных каналов используются различные методы CreateChannel. Дуплексный шаблон сообщения — это один из трех шаблонов сообщений, доступных службам Windows Communication Foundation (WCF). Остальные два шаблона сообщения являются односторонним и ответным запросом.

Общие сведения о дуплексных службах, которые позволяют клиентам подключаться к службе, см. в разделе Дуплексные службы. Описание и обсуждение шагов, связанных с написанием клиентского приложения Windows Communication Foundation (WCF) с помощью фабрики каналов, см. в разделе Практическое руководство. ИспользованиеChannelFactory. Процедура, описывающая создание клиента Windows Communication Foundation (WCF) в клиентском классе, реализующего интерфейс обратного вызова для доступа к службе, использующую дуплексный шаблон обмена сообщениями, см. в статье Практическое руководство. Использование служб с помощью дуплексного контракта.

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

DuplexChannelFactory<TChannel>(InstanceContext)

Инициализирует новый экземпляр класса DuplexChannelFactory<TChannel> с указанным контекстом экземпляра.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

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

DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

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

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

Инициализирует новый экземпляр класса DuplexChannelFactory<TChannel> с указанным контекстом экземпляра, привязкой и удаленным адресом.

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

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

DuplexChannelFactory<TChannel>(InstanceContext, String)

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

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Object)

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

DuplexChannelFactory<TChannel>(Object, Binding)

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

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Object, Binding, String)

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

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

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

DuplexChannelFactory<TChannel>(Object, String)

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

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Type)

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

DuplexChannelFactory<TChannel>(Type, Binding)

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

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Инициализирует новый экземпляр класса DuplexChannelFactory<TChannel> с указанным типом экземпляра обратного вызова, привязкой и удаленным адресом.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Инициализирует новый экземпляр класса DuplexChannelFactory<TChannel> с указанным типом экземпляра обратного вызова, привязкой и удаленным адресом.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

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

DuplexChannelFactory<TChannel>(Type, String)

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

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Инициализирует новый экземпляр класса DuplexChannelFactory<TChannel> с указанным типом экземпляра обратного вызова, конфигурации и удаленного адреса.

Свойства

Credentials

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

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

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

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

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

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

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

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

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

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

Возвращает значение, указывающее текущее состояние объекта связи.

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

Получает взаимоисключающую блокировку, которая защищает экземпляр класса во время перехода состояния.

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

Методы

Abort()

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

(Унаследовано от CommunicationObject)
ApplyConfiguration(String)

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

(Унаследовано от ChannelFactory)
BeginClose(AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи.

(Унаследовано от CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

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

(Унаследовано от CommunicationObject)
BeginOpen(AsyncCallback, Object)

Начинает асинхронную операцию для открытия объекта связи.

(Унаследовано от CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта связи в течение указанного интервала времени.

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

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

(Унаследовано от CommunicationObject)
Close(TimeSpan)

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

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

Создает канал указанного типа в указанный адрес конечной точки.

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

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannel(EndpointAddress, Uri)

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

CreateChannel(InstanceContext)

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

CreateChannel(InstanceContext, Binding, EndpointAddress)

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

CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

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

CreateChannel(InstanceContext, EndpointAddress)

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

CreateChannel(InstanceContext, EndpointAddress, Uri)

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

CreateChannel(InstanceContext, String)

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

CreateChannel(Object, Binding, EndpointAddress)

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

CreateChannel(Object, Binding, EndpointAddress, Uri)

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

CreateChannel(Object, String)

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

CreateChannelWithActAsToken(SecurityToken)

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

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

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

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

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

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

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

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

(Унаследовано от ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

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

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

Создает описание конечной точки службы.

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

Создает фабрику каналов для текущей конечной точки фабрики.

(Унаследовано от ChannelFactory)
EndClose(IAsyncResult)

Завершает асинхронную операцию закрытия объекта связи.

(Унаследовано от CommunicationObject)
EndOpen(IAsyncResult)

Завершает асинхронную операцию для открытия объекта связи.

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

Открывает текущую фабрику каналов, если она еще не открыта.

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

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

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

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

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

Возвращает тип объекта связи.

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

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

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

Возвращает запрошенный типизированный объект( если он присутствует) из соответствующего слоя в стеке каналов или null, если он отсутствует.

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

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

(Унаследовано от Object)
InitializeEndpoint(Binding, EndpointAddress)

Инициализирует конечную точку службы фабрики каналов с указанными привязками и адресом.

(Унаследовано от ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Инициализирует конечную точку службы фабрики каналов с указанной конечной точкой.

(Унаследовано от ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Инициализирует конечную точку службы фабрики каналов с указанным адресом и конфигурацией.

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

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

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

Завершает внутреннюю фабрику каналов текущей фабрики каналов.

(Унаследовано от ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия на внутренней фабрике каналов текущей фабрики каналов с объектом состояния, связанным с ним.

(Унаследовано от ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия на внутренней фабрике каналов текущей фабрики каналов, которая имеет объект состояния, связанный с ним.

(Унаследовано от ChannelFactory)
OnClose(TimeSpan)

Вызовы закрываются на внутренней фабрике каналов с указанным временем ожидания для завершения операции.

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

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

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

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

(Унаследовано от CommunicationObject)
OnEndClose(IAsyncResult)

Завершает асинхронную операцию закрытия на внутренней фабрике каналов текущей фабрики каналов.

(Унаследовано от ChannelFactory)
OnEndOpen(IAsyncResult)

Завершает асинхронную операцию открытия на внутренней фабрике каналов текущей фабрики каналов.

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

Вставляет обработку в объект связи после перехода в состояние сбоя из-за вызова синхронной операции сбоя.

(Унаследовано от CommunicationObject)
OnOpen(TimeSpan)

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

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

Инициализирует копию объекта ClientCredentials только для чтения для фабрики каналов.

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

Создает внутреннюю фабрику каналов для текущего канала.

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

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

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

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

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

Создает исключение, если объект связи удаляется.

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

Создает исключение, если объект связи State свойству не задано состояние Created.

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

Создает исключение, если объект связи не находится в состоянии Opened.

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

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

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

События

Closed

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

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

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

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

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

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

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

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

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

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

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

IAsyncDisposable.DisposeAsync()

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

(Унаследовано от ChannelFactory)
IDisposable.Dispose()

Закрывает текущую фабрику каналов.

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

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

ConfigureAwait(IAsyncDisposable, Boolean)

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

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