DuplexChannelFactory<TChannel> 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供各種建立與管理不同型別之雙工通道的方式,這些型別可供用戶端用來傳送與接收在服務端點之間往返的訊息。
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) 用戶端,以存取使用雙工傳訊模式的服務,請參閱 如何:使用雙工合約存取服務。
建構函式
屬性
Credentials |
取得認證,用戶端會在處理站產生的通道上使用該認證與服務端點通訊。 (繼承來源 ChannelFactory) |
DefaultCloseTimeout |
取得針對要完成之關閉作業所提供的預設時間間隔。 (繼承來源 ChannelFactory) |
DefaultOpenTimeout |
取得針對要完成之開啟作業所提供的預設時間間隔。 (繼承來源 ChannelFactory) |
Endpoint |
取得由處理站產生的通道所要連接的服務端點。 (繼承來源 ChannelFactory) |
IsDisposed |
取得值,這個值會指出是否已經處置通訊物件。 (繼承來源 CommunicationObject) |
State |
取得值,這個值表示通訊物件目前的狀態。 (繼承來源 CommunicationObject) |
ThisLock |
取得會在狀態轉換期間保護類別執行個體的互斥鎖定。 (繼承來源 CommunicationObject) |
方法
事件
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。 |
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應