2

私はWCFサービスを開発しました(これはたまたまMSMQキューでリッスンします)。私は特定のスレッド関連のコードを入れていないので、デフォルトでマルチスレッド方式で実行されます。これはライブ環境では問題ありませんが(おそらく望ましい)、現在このサービスはまだテスト中です。メッセージがテストキューに表示されるタイミングを完全に制御することはできないため、一度に多くのメッセージが表示される可能性がある状況にあります。

このサービスは多くの診断ログを実行しますが、私が使用しなければならないログメカニズム(「会社の標準」)はスレッドに対応していません。つまり、結果として、一度に複数のスレッドが実行され、ロギングが完全に混乱することになります。私がやりたいのは、テスト中にスレッドの数を1に戻すことです。

コードでシングルスレッドを実現するさまざまな方法を見てきましたが、1つのバイナリをTestにリリースし、別のバイナリをLiveにリリースするのは本当に好きではありません。

WCFは構成ファイルの使用にかなり熱心であることを知っているので、純粋に構成に基づいて、シングルスレッドモードとマルチスレッドモードのどちらでリッスンするかをWCFサービスに指示する方法があるかどうか疑問に思いました。

TIA、ピート

4

2 に答える 2

1

すべてのコードをサービス内、依存性注入フレームワークが実行時に注入できるラッパークラス内に配置できます。

依存性注入を使用すると、依存性をシングルトンとして実装するか、リクエストごとのインスタンスとして実装するかを構成できます。

ただし、「シングルスレッドモード」でアプリをテストするだけでは不十分です。

または、現在実行中のスレッドIDをログ情報に含めないのはなぜですか?次に、必要に応じてスレッドIDでログファイルをフィルタリングしますか?

于 2011-07-07T15:03:50.187 に答える
1

この質問を参照してください: WCFMSMQコンシューマスレッド数

これが役に立ったことをうれしく思います!

于 2011-07-07T16:28:38.430 に答える