リクエストごとに正確に1つの数値が必要な場合、ASP.NET MVCアプリケーションで乱数を生成する正しい方法は何ですか?MSDNによると、十分な品質のランダム性を得るには、一度作成された単一のSystem.Randomオブジェクトを使用して複数の数値を生成する必要があります。MVCのリクエストごとにコントローラークラスの新しいインスタンスが作成されるため、Randomオブジェクトのコントローラーのコンストラクターで初期化されたプライベートフィールドを使用できません。では、MVCアプリのどの部分にランダムオブジェクトを作成して保存する必要がありますか?現在、コントローラークラスの静的フィールドに格納し、それを使用するアクションメソッドで遅延初期化します。
public class HomeController : Controller
{
...
private static Random random;
...
public ActionResult Download()
{
...
if (random == null)
random = new Random();
...
}
}
「ランダム」フィールドにはコントローラークラスの複数のインスタンスからアクセスできるため、2つのインスタンスが同時に初期化しようとすると、その値が破損する可能性がありますか?そしてもう1つの質問:静力学の存続期間はアプリケーションの存続期間であることを私は知っていますが、MVCアプリの場合それは何ですか?IISの起動からIISのシャットダウンまでですか?