0

私は 1 年以上実行されているサービスを持っており、1 日あたり 500K - 100 万のリクエストが発生し、適切な量の処理を処理しています。通常、リクエストは 30 ~ 45 秒続きます。したがって、サービスが ConcurrencyMode = Multiple および InstanceContextMode = PerCall を使用するように指定しました。これは私たちにとってうまくいきました。

私が直面している問題は、私のコードの領域がシングルトン パターンを使用して静的インスタンスを公開していることです。静的インスタンスのコピーは 1 つだけであることを保証する必要があります。トラブルシューティング後に私が直面している問題は、複数のインスタンスを作成する複数のアプリ ドメインがあることです。これが問題を引き起こしています。サービスに対して作成されるアプリケーション ドメインが 1 つだけであることを保証するにはどうすればよいですか?

4

2 に答える 2

2

質問への直接の回答ではありません:サービスに対して作成されるアプリケーション ドメインが 1 つだけであることを保証するにはどうすればよいですか?

あなたのこの「シングルトン」コンポーネントを別のプロセスで完全に切り離し、IIS から切り離して、たとえば Windows サービスとして使用し、そのサービスを WCF-Named-Pipe バインディングで使用するのはどうですか? 名前付きパイプ + WCF + win-service を使用したところ、通信フレームワークがパフォーマンスのために大幅に最適化されていることがわかりました。すべての RAM/CPU コストは、シングルトン サービス メソッドで実行されるコードです。

もちろん、singleton-service-provider を実際のサービス コードにメモリ ジョイントする必要がある場合は、問題になる可能性があります。まだアイデアです。

于 2013-11-05T16:19:48.873 に答える
0

コードについて話している場合は、ここでJon Skeets Singletonソリューションを調べる価値があるかもしれません

ただし、プログラム全体の複数のインスタンスを実行している場合は、シングルトン呼び出しを Windows サービス、Web サービス、またはデータベース呼び出しに抽出するしかありません。

于 2013-11-11T20:08:52.633 に答える