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) с помощью фабрики каналов, см. в статье How to: Use the 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()

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

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

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

(Унаследовано от 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()

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

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

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

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

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

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

Возвращает запрос типизированного объекта, если он имеется, из соответствующего уровня стека каналов или значение null, если он отсутствует.

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

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

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

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

(Унаследовано от ChannelFactory)
InitializeEndpoint(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)
OnCloseAsync(TimeSpan)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

События

Closed

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

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

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

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

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

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

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

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

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

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

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

IAsyncCommunicationObject.CloseAsync(TimeSpan)

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

(Унаследовано от CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

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

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

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

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

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

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

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

CloseHelperAsync(ICommunicationObject, TimeSpan)

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

OpenHelperAsync(ICommunicationObject, TimeSpan)

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

GetInternalCloseTimeout(CommunicationObject)

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

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