語言

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)用戶端的程序,請參見 How to: Access Services with a Duplex Contract。

建構函式

名稱 Description
DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,包含實作回調合約及指定的綁定與端點位址的物件。

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

初始化類別的新實例 DuplexChannelFactory<TChannel> ,並指定實例上下文、綁定及遠端位址。

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並附有實作回調合約及指定綁定的上下文。

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並以實作回呼合約的物件及指定的端點。

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並有一個實作回調合約的物件,並設定指定的組態與端點位址。

DuplexChannelFactory<TChannel>(InstanceContext, String)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並以實作回調合約及指定配置的物件。

DuplexChannelFactory<TChannel>(InstanceContext)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並指定實例上下文。

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,包含實作回調合約及指定的綁定與端點位址的物件。

DuplexChannelFactory<TChannel>(Object, Binding, String)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並指定回調物件、綁定及遠端位址。

DuplexChannelFactory<TChannel>(Object, Binding)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並有一個實作回調合約的物件,並設定指定的綁定。

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並以實作回呼合約的物件及指定的端點。

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,包含實作回調契約的物件,以及指定的組態與端點位址。

DuplexChannelFactory<TChannel>(Object, String)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並以實作回調合約及指定配置的物件。

DuplexChannelFactory<TChannel>(Object)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並以實作回調契約的物件。

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

初始化類別的新實例 DuplexChannelFactory<TChannel> ,並設定指定回調實例、綁定與遠端位址。

DuplexChannelFactory<TChannel>(Type, Binding, String)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,使用指定的回調實例類型、綁定和遠端位址。

DuplexChannelFactory<TChannel>(Type, Binding)

初始化一個新的類別實例 DuplexChannelFactory<TChannel> ,並設定指定回調實例與綁定。

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

初始化該類別的新實例 DuplexChannelFactory<TChannel> ,並以指定回撥實例及服務端點。

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

初始化類別的新實例 DuplexChannelFactory<TChannel> ,並以指定的回調實例類型、設定及遠端位址。

DuplexChannelFactory<TChannel>(Type, String)

初始化該類別的新實例 DuplexChannelFactory<TChannel> ,並設定指定回調實例與設定。

DuplexChannelFactory<TChannel>(Type)

初始化類別的新實例 DuplexChannelFactory<TChannel> ,並指定回調實例。

屬性

名稱 Description
Credentials

取得用戶端用來透過工廠產生的通道與服務端通訊的憑證。

(繼承來源 ChannelFactory)
DefaultCloseTimeout

取得預設的近距離操作完成時間間隔。

(繼承來源 ChannelFactory)
DefaultOpenTimeout

取得預設的開放操作完成時間間隔。

(繼承來源 ChannelFactory)
Endpoint

取得工廠產生的通道連接的服務端點。

(繼承來源 ChannelFactory)
IsDisposed

會得到一個值,表示通訊物件是否已被處置。

(繼承來源 CommunicationObject)
State

會得到一個表示通訊物件當前狀態的值。

(繼承來源 CommunicationObject)
ThisLock

取得互斥鎖,保護類別實例在狀態轉換期間。

(繼承來源 CommunicationObject)

方法

名稱 Description
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, Uri)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(EndpointAddress)

建立一個通道,用於向特定端點位址的服務發送訊息。

(繼承來源 ChannelFactory<TChannel>)
CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(InstanceContext, Binding, EndpointAddress)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(InstanceContext, EndpointAddress, Uri)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(InstanceContext, EndpointAddress)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(InstanceContext, String)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(InstanceContext)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(Object, Binding, EndpointAddress, Uri)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(Object, Binding, EndpointAddress)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannel(Object, String)

在服務與客戶端回調實例之間建立雙工通道。

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

建立一個通道,用於透過指定的傳輸位址,將訊息傳送給服務,並在特定端點位址作為安全權杖。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

建立一個通道,用於向特定端點位址的安全令牌發送訊息給服務。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken)

建立一個通道,用於傳送訊息給服務,並以安全令牌作為安全標記。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

建立一個通道,透過指定的傳輸位址,將安全令牌已發出給特定端點位址的服務傳送訊息。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

建立一個通道,用於在特定端點位址發送安全令牌給服務。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken)

建立一個通道,用來向擁有已發出安全令牌的服務發送訊息。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

建立一個通道,透過指定的傳輸位址,在特定端點位址以安全令牌向服務發送訊息。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

建立一個通道,用於在特定端點位址以安全令牌向服務發送訊息。

(繼承來源 ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken)

建立一個通道,用來向服務發送訊息,並以安全令牌代為執行。

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

事件

名稱 Description
Closed

當通訊物件轉換到封閉狀態時,會發生這種情況。

(繼承來源 CommunicationObject)
Closing

當通訊物件轉換到關閉狀態時,會發生這種情況。

(繼承來源 CommunicationObject)
Faulted

當通訊物件轉換到錯誤狀態時,會發生這種情況。

(繼承來源 CommunicationObject)
Opened

當通訊物件轉換進入開啟狀態時,會發生這種情況。

(繼承來源 CommunicationObject)
Opening

當通訊物件轉換到開啟狀態時,會發生這種情況。

(繼承來源 CommunicationObject)

明確介面實作

名稱 Description
IAsyncDisposable.DisposeAsync()

提供建立和管理不同類型的雙工通道的方式,供用戶端用來傳送和接收服務端點的訊息。

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

關閉現有的通道工廠。

(繼承來源 ChannelFactory)

適用於