ChannelFactory クラス

定義

クライアントがサービス エンドポイントにメッセージを送信するために使用するチャネルを作成および管理します。

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
    interface IAsyncDisposable
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
継承
ChannelFactory
派生
実装

次のコード例は、ファクトリによってチャネル オブジェクトを作成する前に、クライアントの動作をプログラムで挿入する方法を示しています。

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

注釈

IChannelFactory インターフェイスとそれに関連付けられているチャネルを実装するチャネル ファクトリは、通常、通信パターンのイニシエーターによって使用されます。 IChannelListener インターフェイスとそれに関連付けられているリスナーを実装するリスナー ファクトリは、通信にチャネルを受け入れるメカニズムを提供します。

このクラスはチャネル モデルの一部ではなく、サービス モデルの一部です。 CreateFactory メソッドは、サービス エンドポイントの IChannelFactory を作成する手段を提供します。 これを使用して、メタデータやポリシーを使用せずに、サービスのインターフェイス コントラクトにフックするクライアントを構築します。

手記

ChannelFactory.Credentials.Windows.AllowedImpersonationLevelTokenImpersonationLevel.Anonymous に設定すると、偽装レベルに関係なく、常に匿名ログオンになります。

このクラスから派生するマネージド C++ ユーザーの特別な注意:

  • デストラクターではなく、クリーンアップ コードを (On)(Begin)Close (または OnAbort) に配置します。

  • デストラクターを避けます。コンパイラは IDisposableを自動生成します。

  • 参照以外のメンバーは使用しないでください。コンパイラが IDisposableを自動生成する可能性があります。

  • ファイナライザーの使用は避けてください。ただし、ビルド警告を含める場合は、ビルド警告を抑制し、SuppressFinalize(Object) とファイナライザー自体を (On)(Begin)Close (または OnAbort) から呼び出して、自動生成された IDisposable 動作をエミュレートする必要があります。

プログラムによって動作を追加すると、チャネルを作成する前に、ChannelFactory の適切な Behaviors プロパティに動作が追加されます。 コード サンプルの例のセクションを参照してください。

コンストラクター

ChannelFactory()

ChannelFactory クラスの新しいインスタンスを初期化します。

プロパティ

Credentials

ファクトリによって生成されたチャネルを介してサービス エンドポイントを通信するためにクライアントによって使用される資格情報を取得します。

DefaultCloseTimeout

閉じる操作が完了するまでに指定された既定の時間間隔を取得します。

DefaultOpenTimeout

開いている操作が完了するまでに指定された既定の時間間隔を取得します。

Endpoint

ファクトリによって生成されたチャネルが接続するサービス エンドポイントを取得します。

IsDisposed

通信オブジェクトが破棄されたかどうかを示す値を取得します。

(継承元 CommunicationObject)
State

通信オブジェクトの現在の状態を示す値を取得します。

(継承元 CommunicationObject)
ThisLock

状態遷移中にクラス インスタンスを保護する相互排他的ロックを取得します。

(継承元 CommunicationObject)

メソッド

Abort()

通信オブジェクトを現在の状態から終了状態に直ちに遷移させます。

(継承元 CommunicationObject)
ApplyConfiguration(String)

指定した構成ファイルによって提供される動作と、チャネル ファクトリのサービス エンドポイント内の動作を使用して、チャネル ファクトリを初期化します。

BeginClose(AsyncCallback, Object)

通信オブジェクトを閉じる非同期操作を開始します。

(継承元 CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

指定したタイムアウトで通信オブジェクトを閉じる非同期操作を開始します。

(継承元 CommunicationObject)
BeginOpen(AsyncCallback, Object)

通信オブジェクトを開く非同期操作を開始します。

(継承元 CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

指定した時間内に通信オブジェクトを開く非同期操作を開始します。

(継承元 CommunicationObject)
Close()

通信オブジェクトを現在の状態から閉じた状態に遷移させます。

(継承元 CommunicationObject)
Close(TimeSpan)

指定した時間内に、通信オブジェクトを現在の状態から閉じた状態に遷移させます。

(継承元 CommunicationObject)
CreateDescription()

派生クラスで実装された場合は、チャネル ファクトリに関連付けられているサービス エンドポイントの説明を作成します。

CreateFactory()

ファクトリの現在のエンドポイントのチャネル ファクトリをビルドします。

EndClose(IAsyncResult)

通信オブジェクトを閉じる非同期操作を完了します。

(継承元 CommunicationObject)
EndOpen(IAsyncResult)

通信オブジェクトを開く非同期操作を完了します。

(継承元 CommunicationObject)
EnsureOpened()

現在のチャネル ファクトリがまだ開いていない場合は開きます。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Fault()

通信オブジェクトを現在の状態から障害状態に遷移させます。

(継承元 CommunicationObject)
GetCommunicationObjectType()

通信オブジェクトの種類を取得します。

(継承元 CommunicationObject)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetProperty<T>()

チャネル スタック内の適切なレイヤーから要求された型指定されたオブジェクトを返します。存在しない場合は null します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeEndpoint(Binding, EndpointAddress)

指定したバインディングとアドレスを使用して、チャネル ファクトリのサービス エンドポイントを初期化します。

InitializeEndpoint(ServiceEndpoint)

指定したエンドポイントを使用して、チャネル ファクトリのサービス エンドポイントを初期化します。

InitializeEndpoint(String, EndpointAddress)

指定したアドレスと構成を使用して、チャネル ファクトリのサービス エンドポイントを初期化します。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
OnAbort()

現在のチャネル ファクトリの内部チャネル ファクトリを終了します。

OnBeginClose(TimeSpan, AsyncCallback, Object)

状態オブジェクトが関連付けられている現在のチャネル ファクトリの内部チャネル ファクトリで非同期の閉じる操作を開始します。

OnBeginOpen(TimeSpan, AsyncCallback, Object)

状態オブジェクトが関連付けられている現在のチャネル ファクトリの内部チャネル ファクトリで、非同期のオープン操作を開始します。

OnClose(TimeSpan)

操作を完了するために、指定されたタイムアウトで内部チャネル ファクトリで close を呼び出します。

OnClosed()

通信オブジェクトの終了状態への遷移中に呼び出されます。

(継承元 CommunicationObject)
OnClosing()

通信オブジェクトの終了状態への遷移中に呼び出されます。

(継承元 CommunicationObject)
OnEndClose(IAsyncResult)

現在のチャネル ファクトリの内部チャネル ファクトリで非同期の閉じる操作を完了します。

OnEndOpen(IAsyncResult)

現在のチャネル ファクトリの内部チャネル ファクトリで非同期のオープン操作を完了します。

OnFaulted()

同期障害操作の呼び出しにより、通信オブジェクトが障害状態に遷移した後に、処理を挿入します。

(継承元 CommunicationObject)
OnOpen(TimeSpan)

現在のチャネル ファクトリの内部チャネル ファクトリで開く呼び出しで、操作を完了するためのタイムアウトを指定します。

OnOpened()

チャネル ファクトリの ClientCredentials オブジェクトの読み取り専用コピーを初期化します。

OnOpening()

現在のチャネルの内部チャネル ファクトリを構築します。

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

クライアントがサービス エンドポイントにメッセージを送信するために使用するチャネルを作成および管理します。

IDisposable.Dispose()

現在のチャネル ファクトリを閉じます。

拡張メソッド

ConfigureAwait(IAsyncDisposable, Boolean)

非同期破棄から返されるタスクの待機を実行する方法を構成します。

適用対象