0

私はWCFで非常に新しいです。wcf のコードと記事をよく見てください。多くのコードを見た後、私はしばしば非常に基本的なことに固執し、以下の質問についての詳細な議論を得ることができませんでした. ここに私のいくつかの基本的な質問があります....そして、サンプルの状況とサンプルコードを使用した詳細な議論を探しています。

InstanceContextMode とは何ですか? 多くの人が InstanceContextMode Single または PerCall または PerSession を使用していますか?

InstanceContextMode Single または PerCall または PerSession を使用する必要がある場合は、深い洞察が必要ですか? それは基本的に何をしますか??

Single をオンにするとどうなるか、または PerCall または PerSession の場合はどうなるか簡単に教えてください。Single または PerCall または PerSession の違いは何ですか

デフォルトの InstanceContextMode とは何ですか?

4

1 に答える 1

2

InstanceContextModeプロパティは、WCF がサービス クラスのインスタンスを作成する方法と、それらのインスタンスが要求間で再利用されるかどうかを示します。

  • PerSession : (デフォルト) サービスのインスタンスは、セッションをサポートするチャネルの WCF セッションごとに作成されます (それ以外の場合、動作は PerCall と同じです)。この値は、クライアント セッションごとにサービス クラス内で状態を維持する場合に役立ちます。
  • PerCall : クライアントからの WCF 操作 (メソッド呼び出し) ごとに、サービス クラスの新しいインスタンスが作成されます。
  • Single : ホスト プロセス内に 1 つのサービス インスタンスのみが作成され、すべての着信要求を処理します。サービスのConcurrencyMode動作が に設定されていない限り、すべての呼び出しはサービスに対してシリアル化されMultipleます。

大容量のステートレス サービスの場合、 と を使用するSingleConcurrencyMode.Multiple、割り当てられるサービス インスタンスの数と、それに伴うガベージ コレクターへの負担を軽減できます。ただし、WCF はサービスがステートレスであることを要求/想定していません。これがPerSessionデフォルトである理由です。

サービスのデフォルト コンストラクターにブレークポイントを設定することで、さまざまなインスタンス コンテキスト モードの動作を確認できます。

于 2013-01-03T15:41:59.643 に答える