2

メッセージ セキュリティを使用している場合の WCF クライアント チャネルの有効期間に関して質問がありますが、まず、会社のセットアップとガイドラインに関するいくつかの注意事項を以下に示します。

  • 当社のクライアント/サーバー アプリケーションは、イントラネットでの使用のみを目的としています
  • 私たちのクライアントはWPFアプリケーションです
  • WCF の使用に関する当社のガイドラインは次のとおりです。
    • wsHttpBinding を使用する
    • メッセージ セキュリティを使用する
    • サービス インスタンス モード: PerCall
    • Service ConcurrencyMode: 複数

イントラネットのセットアップでメッセージ セキュリティを使用する必要があるのは初めてです。クライアントとサーバーに保持されるリソースの量を制限し、文字通り単に物事を単純にするために、クライアントチャネルを通常どのように使用するかを次に示します。

  1. インスタンス化 + チャネルを開く (ChannelFactory を使用)
  2. WCF 呼び出しを行う
  3. チャネルをできるだけ早く閉じる/破棄する

Fiddler 2 でこの戦略を監視しているときに、Message Security が原因で、単一の WCF 呼び出しがサービスへの 5 つのラウンドトリップを引き起こしていることに気付きました。

  • ハンドシェークのための 3 回の初期往復
  • 実際の WCF 呼び出しの 1 回の往復
  • セッションを閉じるための 1 回の呼び出し (PerCall を使用しているため、これは IIS レベルでのセキュリティ セッションであると想定しています)

Message Security をオフにすると、当然のことながら、1 つの WCF が... 1 回の往復になります。

今のところ、Message Security を使用する必要があります。それが私たちのガイドラインだからです。これを念頭に置いて、各クライアント WPF アプリからの数百の WCF 呼び出しをセッションにすることを知っているので、毎回破棄するのではなく、クライアント チャネルを開き、再利用のために開いたままにしておくことをお勧めしますか?

4

1 に答える 1

1

既知の問題であることがわかるまで、機能を事前にオフにしないことをお勧めします。事前最適化は不要な作業です。クライアントに遅延の問題があることに気付くまでは、メッセージのセキュリティについて心配する必要はありません。その時点で、いくつかのことを試してください。クライアントをより長く開いておくためのアプローチの 1 つ。2 つ目は、メッセージ セキュリティをオフにせずに、リクエストをグループ化してみてください。3 つ目は、可能であればキャッシングを検討することです。4. メッセージ セキュリティが最終的な原因である場合は、別の方法を試してください。パフォーマンスを改善するためにできる最後のことだとわかるまで、ネットワークトラフィックが少し増えるからといって、何かをオフにするだけではありません。

于 2013-04-18T15:17:16.237 に答える