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) サービスで使用できる 3 つのメッセージ パターンの 1 つです。 他の 2 つのメッセージ パターンは、一方向および要求/応答です。
クライアントがサービスに接続できるようにする双方向サービスの一般的な説明については、「 双方向サービス」を参照してください。 チャネル ファクトリを使用して Windows Communication Foundation (WCF) クライアント アプリケーションを作成する手順の概要と説明については、「 How to: Use the ChannelFactory」を参照してください。 双方向メッセージング パターンを使用するサービスにアクセスするためのコールバック インターフェイスを実装するクライアント クラスで Windows Communication Foundation (WCF) クライアントを作成する方法については、「 方法: 双方向コントラクトを使用してサービスにアクセスする」を参照してください。
コンストラクター
プロパティ
Credentials |
このファクトリによって作成されるチャネルを介してサービス エンドポイントと通信するクライアントが使用する資格情報を取得します。 (継承元 ChannelFactory) |
DefaultCloseTimeout |
クローズ操作が完了するまで待機する既定の時間を取得します。 (継承元 ChannelFactory) |
DefaultOpenTimeout |
オープン操作が完了するまで待機する既定の時間を取得します。 (継承元 ChannelFactory) |
Endpoint |
ファクトリによって作成されたチャネルが接続するサービス エンドポイントを取得します。 (継承元 ChannelFactory) |
IsDisposed |
通信オブジェクトが破棄されたかどうかを示す値を取得します。 (継承元 CommunicationObject) |
State |
通信オブジェクトの現在の状態を示す値を取得します。 (継承元 CommunicationObject) |
ThisLock |
状態遷移中にクラス インスタンスを保護する相互排他的なロックを取得します。 (継承元 CommunicationObject) |
メソッド
Abort() |
通信オブジェクトを、直ちに現在の状態から Closing 状態に遷移させます。 (継承元 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) |
act as セキュリティ トークンを使用して、サービスにメッセージを送信するために使用されるチャネルを作成します。 (継承元 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) |
on behalf of セキュリティ トークンを使用して、サービスにメッセージを送信するために使用されるチャネルを作成します。 (継承元 ChannelFactory<TChannel>) |
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress) |
on behalf of セキュリティ トークンを使用して、指定したエンドポイント アドレスのサービスにメッセージを送信するために使用されるチャネルを作成します。 (継承元 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>() |
チャネル スタックの適切な層から、要求のあった型指定されたオブジェクト (ある場合) を返します。ない場合は |
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) |
現在のチャネル ファクトリに関連付けられた開始オブジェクトを持つ内部チャネル ファクトリに対して、非同期の open 操作を開始します。 (継承元 ChannelFactory) |
OnClose(TimeSpan) |
操作を完了するために、指定したタイムアウトで、内部チャネル ファクトリに対して close を呼び出します。 (継承元 ChannelFactory) |
OnCloseAsync(TimeSpan) |
クライアントがサービス エンドポイントとの間でメッセージを送受信するために使用する、さまざまな種類の双方向チャネルを作成したり、管理したりする手段を提供します。 (継承元 ChannelFactory) |
OnClosed() |
通信オブジェクトが Closing 状態に遷移しているときに呼び出されます。 (継承元 CommunicationObject) |
OnClosing() |
通信オブジェクトが Closing 状態に遷移しているときに呼び出されます。 (継承元 CommunicationObject) |
OnEndClose(IAsyncResult) |
現在のチャネル ファクトリの内部チャネル ファクトリに対する非同期のクローズ操作を完了します。 (継承元 ChannelFactory) |
OnEndOpen(IAsyncResult) |
現在のチャネル ファクトリの内部チャネル ファクトリに対する非同期の open 操作を完了します。 (継承元 ChannelFactory) |
OnFaulted() |
同期フォールト操作の呼び出しにより通信オブジェクトが Faulted 状態に遷移した後で、通信オブジェクトに処理を挿入します。 (継承元 CommunicationObject) |
OnOpen(TimeSpan) |
操作を完了するために、指定したタイムアウトで、現在のチャネル ファクトリの内部チャネル ファクトリに対して open を呼び出します。 (継承元 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 |
通信オブジェクトが Closing 状態に遷移すると発生します。 (継承元 CommunicationObject) |
Faulted |
通信オブジェクトが Faulted 状態に遷移すると発生します。 (継承元 CommunicationObject) |
Opened |
通信オブジェクトが Opened 状態に遷移すると発生します。 (継承元 CommunicationObject) |
Opening |
通信オブジェクトが 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) |
非同期の破棄可能から返されるタスク上での待機がどのように実行されるかを構成します。 |
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示