次の方法で共有


ChannelFactory<TChannel> クラス

定義

クライアントがさまざまな種類のチャネルを作成し、さまざまな種類のサービス エンドポイントにメッセージを送信するファクトリ。

generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

型パラメーター

TChannel

チャネル ファクトリによって生成されるチャネルの種類。 この型は、IOutputChannel または IRequestChannelである必要があります。

継承
ChannelFactory<TChannel>
派生
実装

次の例では、チャネル ファクトリを作成し、それを使用してチャネルを作成および管理する方法を示します。

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");

    ChannelFactory<IRequestChannel> factory =
        new ChannelFactory<IRequestChannel>(binding, address);

    IRequestChannel channel = factory.CreateChannel();
    channel.Open();
    Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
    Message reply = channel.Request(request);
    Console.Out.WriteLine(reply.Headers.Action);
    reply.Close();
    channel.Close();
    factory.Close();
}

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

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

注釈

このジェネリック クラスを使用すると、複数の種類のチャネルを作成するために使用できるチャネル ファクトリを作成する必要がある、より高度なシナリオが可能になります。

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

この種類を使用するクライアントまたは呼び出し元のアプリケーション (中間層アプリケーションもクライアント アプリケーションなど) も、複雑な状態管理のニーズとパフォーマンスニーズを持っています。 これらのシナリオの詳細については、「Middle-Tier クライアント アプリケーションの」を参照してください。

コンストラクター

ChannelFactory<TChannel>()

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

ChannelFactory<TChannel>(Binding)

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

ChannelFactory<TChannel>(Binding, EndpointAddress)

指定したバインディングとエンドポイント アドレスを使用して、ChannelFactory<TChannel> クラスの新しいインスタンスを初期化します。

ChannelFactory<TChannel>(Binding, String)

指定したバインディングとリモート アドレスを使用して、ChannelFactory<TChannel> クラスの新しいインスタンスを初期化します。

ChannelFactory<TChannel>(ServiceEndpoint)

指定したエンドポイントを持つチャネルを生成する ChannelFactory<TChannel> クラスの新しいインスタンスを初期化します。

ChannelFactory<TChannel>(String)

指定したエンドポイント構成名を使用して、ChannelFactory<TChannel> クラスの新しいインスタンスを初期化します。

ChannelFactory<TChannel>(String, EndpointAddress)

エンドポイント構成とリモート アドレスの指定した名前に関連付けられている ChannelFactory<TChannel> クラスの新しいインスタンスを初期化します。

ChannelFactory<TChannel>(Type)

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

指定した種類のチャネルを、指定したエンドポイント アドレスに作成します。

CreateChannel(Binding, EndpointAddress)

指定したバインディングで構成されたサービス エンドポイントにメッセージを送信するために使用される、指定した種類のチャネルを作成します。

CreateChannel(Binding, EndpointAddress, Uri)

指定したバインディングで構成されている指定したトランスポート アドレスでサービス エンドポイントにメッセージを送信するために使用される、指定した種類のチャネルを作成します。

CreateChannel(EndpointAddress)

特定のエンドポイント アドレスでサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannel(EndpointAddress, Uri)

指定したトランスポート アドレスを介して特定のエンドポイント アドレスでサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannel(String)

エンドポイントが指定された方法で構成されているサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithActAsToken(SecurityToken)

セキュリティ トークンとしての動作を使用してサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

特定のエンドポイント アドレスでセキュリティ トークンとして機能するサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

指定したトランスポート アドレスを介して、特定のエンドポイント アドレスでセキュリティ トークンとして機能するサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithIssuedToken(SecurityToken)

発行されたセキュリティ トークンを使用してサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

特定のエンドポイント アドレスで発行されたセキュリティ トークンを使用してサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

指定したトランスポート アドレスを介して、特定のエンドポイント アドレスで発行されたセキュリティ トークンを使用してサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithOnBehalfOfToken(SecurityToken)

セキュリティ トークンの代理としてサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

特定のエンドポイント アドレスでセキュリティ トークンに代わってサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

指定したトランスポート アドレスを介して、特定のエンドポイント アドレスでセキュリティ トークンの代理としてサービスにメッセージを送信するために使用されるチャネルを作成します。

CreateDescription()

サービス エンドポイントの説明を作成します。

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)

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

(継承元 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)

イベント

Closed

通信オブジェクトが閉じた状態に遷移したときに発生します。

(継承元 CommunicationObject)
Closing

通信オブジェクトが終了状態に遷移したときに発生します。

(継承元 CommunicationObject)
Faulted

通信オブジェクトが障害状態に遷移したときに発生します。

(継承元 CommunicationObject)
Opened

通信オブジェクトが開かれた状態に遷移したときに発生します。

(継承元 CommunicationObject)
Opening

通信オブジェクトが開始状態に遷移したときに発生します。

(継承元 CommunicationObject)

明示的なインターフェイスの実装

IAsyncDisposable.DisposeAsync()

クライアントがさまざまな種類のチャネルを作成し、さまざまな種類のサービス エンドポイントにメッセージを送信するファクトリ。

(継承元 ChannelFactory)
IDisposable.Dispose()

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

(継承元 ChannelFactory)

拡張メソッド

ConfigureAwait(IAsyncDisposable, Boolean)

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

適用対象

スレッド セーフ

この型はスレッド セーフです。