2011-02-03 18 views
2

Inは、Client for WCF呼び出しの代わりにChannelFactoryを使用するプロジェクトを継承しています。どうしてそうするか?WCF/Silverlight:なぜクライアントの代わりにChannelFactoryを使用するのですか?

また、ChannelFactory.CreateChannel()呼び出しの結果をキャッシュするのは安全ですか、毎回新しい呼び出しを作成する必要がありますか? WCFクライアントの作成

答えて

1

は、2段階のプロセスである:

  • は、そのチャネルファクトリを使用してチャネルファクトリ
  • を作成し、実際のチャネルを作成

ステップ1面でかなり高価です処理能力とスピードを向上させることができます。そのため、チャネルファクトリを作成してからキャッシュをどこかに置くことができれば、リソースを少し節約でき、常にキャッシュされたチャネルファクトリからチャネルを作成して、 。

この設定では、必要なときにいつでもその工場からチャンネルを作り直すことができれば、私はChannelFactoryをキャッシュしようとします。

+0

しかし、なぜ彼らはチャネル自体をキャッシュしますか?そうすることに危険がありますか? –

+0

@Jonathan Allen:チャネルをキャッシュして再利用できる場合は、少なくとも2つのステップを実行する必要はありません。チャネルが「フォールト」モードに遭遇しない限り(例外起こった)。危険な点は、キャッシュされたチャネルがフォールト状態にないことをほとんどすべての使用の前に確認する必要があることです。そうであれば、再作成する必要があります。 –

+0

明示的に障害を起こす方法はありますか?私はそれを私の同僚に実証したいと思います。 –

関連する問題