2009-05-15 15 views
3

私は、ChannelFactoryの作成が高価であること、技術的な理由がない限り、ChannelFactoryをできるだけキャッシングするか、ファクトリの静的インスタンスを使用して再利用する必要があることを読んできました。ChannelFactory再利用戦略

あなたの経験では、どのChannelFactory再利用戦略がASP.NETアプリケーションのコンテキスト内で最も有用で堅牢であることがわかりましたか?

答えて

3

.NET 3.0 SP1以降を使用していて、チャンネルを直接処理する必要がある特別なものが必要ない場合は、ClientBaseから派生したクライアントサイドプロキシクラスを使用するのがベストでしょう。<T>サービスをインポートするときに生成されるもの)。それらはすでに下に工場をキャッシュしています。詳細については、hereを参照してください。

もしそうでなければ、IChannelFactory <T>オブジェクトをどこかに貼り付ける必要がありますが、適切に共有を処理する必要があります。スタックからのアクセスが保証されていないと思いますファクトリの場合はスレッドセーフです)、それ以外はかなり簡単です。

1

ダーリンDamitrovはここchannelfactoriesの再利用を中心に便利な答えを掲載: -

creating WCF ChannelFactory<T>

を私は最近に取り組んできたアプリケーションでメモリ使用量とパフォーマンスを見てきました。私は彼が提唱したテクニックを適用し(辞書を使ってチャンネルファクトリーのセットを保管していました)、パフォーマンスの良いバンプを持っていました。

私が見ていたことは、チャネルファクトリをインスタンス化するのに最大70msかかることでした。これが数多く起こっている場合、すぐに追加されます。

現在、私は慎重であり、アプリケーションの存続期間中に同じchannelfactoriesを提供するためにDIコンテナをセットアップしていません。代わりに、私は単一のHTTPリクエストの期間中(それらの中で多くのバックエンドサービスコールが行われるかもしれない)、それらを生き生きとさせます。