0

多くのクライアントで機能し、サービスに保存されている同等の情報を提供するを作成する最良の方法は何ですか?WCF service

私は次の方法を試しました:

[ServiceBehavior (ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]

ただし、サービスはシングルトーンであるため、クライアントが 3 つ以上ある場合は動作が非常に遅くなります (おそらく同期)。

しかし、すべてのクライアントに同じ情報を提供すると思われるオブジェクトがあるため、サービスがシングルトーンになる必要があります (または、これを行う別の方法がありますか? )

他のオファーが欲しいです。

4

1 に答える 1

1

オブジェクト自体の使用、またはコードのクリティカル セクションをロックしたい場合があります。サービス全体をシングルトンにする必要はありません。ただし、コードを見ないと、これが役立つかどうかを判断するのは困難です。(長い計算がクリティカル セクション内にある場合、ロックは役に立たないため)。

編集:

私の答えを明確にするために、あなたの問題はWCFとは何の関係もありません。パフォーマンスを向上させるためにコードの複雑さのコストを支払うべきか、それともコードのこのセクションの単一スレッド処理に固執するべきかを本当に尋ねています。サービスへの呼び出しが WCF クライアントからではなく、同じプロセスから (異なるスレッドによって) 行われた場合、まったく同じ問題に直面します。したがって、決心する前に、マルチスレッドと concurrent コレクションについて詳しく読むことをお勧めします。

于 2013-08-27T11:26:01.953 に答える