新しい着信リクエストを処理するための新しいスレッドを作成するためにWCFサービスを設定する方法はありますか?新しいリクエストごとに新しいスレッドを作成するWCFサービス
答えて
いいえ、これは決してしたくないからです。あなたは本当に何を達成しようとしていますか?来るより多くの情報に基づいて
EDIT
は、ここで私が何を考えています。
リクエストごとに「スティッキー状態」を使用する場合は、インスタンス上で状態を使用し、marc_sの応答に従ってInstanceContextMode.PerCallを使用する必要があります。
呼び出しのスレッドローカルストレージにある状態が必要な場合は、ICallContextInitializerを使用して、WCFがメソッドを呼び出すために選択したスレッドに状態をマーシャリングする方法を検討できます(スレッド状態をクリーンアップします)。コールが終了したとき)。
しかし、あなたは "どのスレッド"に気を付けるべきではありません。 WCFはあなたのためにスレッドプールでそれを処理します。
もう少し説明できますか? –
アイデアは、要求内でdbセッション、資格情報などをThreadContextに格納して共有することです。これは、ロールバックなどを行う際に役立ちます。 – Nazgul
もちろん、これは実際には推奨されるベストプラクティスです!この正確な目的のためにServiceHostにワーカースレッドのプールがあります –
はい、これを行うことができます。これは、リクエストごとの「コールごと」処理と呼ばれます。 ServiceHostは、その1つの要求を処理するために入ってくるリクエストごとに、サービスクラスの新しいインスタンスを作成します。
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class YourService : IYourService
{
...
}
マルク・
: -はこれを行うには、あなたが「PerCall」であるためにあなたのサービスクラス(サービス・インターフェースを実装する1)を設定する必要があり、あなたのサービスクラスに属性を適用することにより、これを行います
これは呼び出しごとに新しいServiceインスタンスを作成しますが、呼び出しごとに新しいスレッドを生成しません。 – Nazgul
しかし、要求を処理するために新しいサービスインスタンスをワーカースレッドに割り当てます。 –
私はあなたがこれ以上のことをすることはできないと思います。私は、WCFの設定のうち、特にリクエストごとに新しいスレッドを作成する設定についてはわかりません。そして、なぜあなたは本当にしたいですか?本格的なスレッドを作成するのは、非常にコストがかかる作業です。なぜなら、すでに利用可能な組み込みのワーカースレッドプールを使用しないのはなぜですか? –
は正確にあなたが望むものに依存しますが、以下のサービスの動作は、それを解決します:
ServiceBehavior:
ConcurrencyMode=ConcurrencyMode.Multiple
InstanceContextMode=InstanceContextMode.Single
あなたのクラスはシングルトンになりますが、メソッドに対して行われたすべてのコールがSEPARで実行されますスレッドを食べた。手動で行う必要があるにもかかわらず、同期が必要な場合。
また、潜在的なパフォーマンスの問題を認識するためにスロットルを調べることを忘れないでください。
- 1. 新しいバージョンごとに新しいフォルダを作成する
- 2. http-proxy-middlewareリクエストごとに新しいセッションを作成
- 3. jsの新しいレコードごとに新しい行を作成
- 4. AngularJSとPHPがリクエストごとに新しいセッションを作成します
- 5. セッション開始()は、リクエストごとに新しいセッションファイルエントリを作成します。
- 6. 新しいスレッドを作成する - Android
- 7. ASP.NETポストバックは新しいスレッドと新しいセッションを作成します
- 8. Excel VBA - 1200行ごとに新しい行を作成する
- 9. TestNGメソッドテストごとに新しいインスタンスを作成する
- 10. ループごとに新しいnumpy配列データセットを作成する
- 11. performSelectorInBackgroundは呼び出しごとに新しいスレッドを生成しますか?
- 12. symfonyは新しいインスタンスとして新しいサービスを作成します
- 13. Javascript新しい「スレッド」を作成
- 14. 新しいパラメータでループ内に新しいスレッドを作成する
- 15. 既存のスレッドは、新しいスレッドを使用して新しいスレッドを作成します()。)(開始
- 16. 値ごとに1行しかない新しいデータフレームを作成する
- 17. Objective Cでは、新しいクラスを作成すると、必ず新しいクラスごとに新しいファイルが作成されますか?
- 18. ajax/codeigniter out put 4列ごとに新しい行を作成
- 19. NLogクラスのインスタンスごとに新しいログファイルを作成
- 20. CSVインポート-MSアクセスごとに新しいテーブルを作成
- 21. Jinja2:3つのアイテムごとに新しい行を作成
- 22. プログラム更新後にWCFサービスが動作しない
- 23. はrunOnUiThreadがアンドロイドに新しいスレッドを作成します
- 24. JSONファイル内の新しいオブジェクトごとに新しいDOMを動的に作成する
- 25. forループ内に新しいスレッドを作成するpublic void method()
- 26. WCF、のServiceHost - CreateChannel、新しいリモートインスタンスを作成しない
- 27. 各ピアごとに新しいソケットを作成してpingを実行する
- 28. リクエストごとに新しいインスタンスを作成するのではなく、DB接続を再利用する
- 29. 理解非同期は/新しいスレッドを作成していないスレッド
- 30. スレッドごとに新しいCallableオブジェクトを作成する必要はありますか?ここ
これは何もしていないのですか? – Jehof
いいえ、デフォルトではありません – Nazgul