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

在通訊物件上插入處理 (當它因為叫用同步錯誤作業而轉換到錯誤狀態之後)。

(繼承來源 CommunicationObject)
OnOpen(TimeSpan)

搭配完成作業的指定逾時,在目前通道處理站的內部通道處理站上呼叫開啟。

(繼承來源 ChannelFactory)
OnOpenAsync(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)

明確介面實作

IAsyncCommunicationObject.CloseAsync(TimeSpan)

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

(繼承來源 CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

(繼承來源 CommunicationObject)
IAsyncDisposable.DisposeAsync()

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

(繼承來源 ChannelFactory)
IDisposable.Dispose()

關閉目前的通道處理站。

(繼承來源 ChannelFactory)

擴充方法

CloseHelperAsync(ICommunicationObject, TimeSpan)

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

OpenHelperAsync(ICommunicationObject, TimeSpan)

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

GetInternalCloseTimeout(CommunicationObject)

提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。

ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從非同步可處置項目傳回的工作 await。

適用於