2

画像をさまざまなサイズでリクエストできるようにするコードがいくつかあります。画像が存在しない場合は、そのサイズで画像を作成して保存します。私たちが抱えている問題は、イメージが存在せず、初めて作成しようとするときの複数の要求です。

現在、目的の場所である Web ファームに参加していないか、複数のマシンに分散していませんが、必要なのは、そのセクションをロックし、1 つのスレッド/プロセスのみがサイズ変更されたイメージを作成し、その後、すべてのスレッドを許可する方法です。画像を返し続けます。

ASP.NET C# で複数のスレッド/マシン間でロックするための最良の方法は何ですか (Web ファームのシナリオで)。唯一の本当の選択は、おそらくイメージのファイル名/IDにロックを保存できるある種のDBテーブルを使用することだと思いますが、ロックが解放されたかどうかを確認するために他のスレッドがDBを呼び出し続ける必要がありますか?

誰かがこのタイプのシナリオの経験を持っているなら、それはありがたいです. C# 4.5 および SQL Server 2008 で ASP.NET MVC 4 を使用しています。

4

1 に答える 1

0

Web ファーム内のすべてのサーバーで同じイメージを生成する予定ですか? それが問題ない場合は、 a を使用して、最初にDictionary<FileName, Key>画像を作成したい人に a を要求してもらい、Keyこれを画像を作成するメソッドに提示Keyすることができます。このメソッドはキーをチェックし、必要に応じてイメージを生成し、Key. が要求されたときに指定されDictionaryたをチェックし、すでに存在する場合は要求を拒否し、そうでない場合は をロックし(静的である必要があります)、既存の を再チェックし、新しい を生成して に挿入し、 を返しますKeyFileNameKeyDictionaryKeyKeyDictionaryKey. ファーム全体でイメージのインスタンスが 1 つだけ必要な場合は、分散キャッシュ サービスと、イメージに対するすべての要求を正しいサーバーに転送する何らかの方法が必要です。

于 2013-05-10T15:18:57.900 に答える