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)

配置如何执行从异步可释放项返回的任务的 await。

适用于