나는 데이터베이스에서 가져온 것을 기반으로 물건을 계산하기 위해 상당한 양의 요청에 사용하는 수천 개의 정수 (lookup table) (LUT)를 가지고있다.싱글 톤은 ASP.NET MVC의 요청간에 자동으로 유지됩니까?
LUT를 보유하기위한 표준 싱글 톤을 간단히 만들면 요청간에 자동으로 지속됩니까? 아니면 특별히 응용 프로그램 상태로 푸시해야합니까?
자동으로 지속되면 응용 프로그램 상태와의 차이점은 무엇입니까?
올바른 싱글 톤 구현은 어떻게 생겼습니까? 느슨하게 초기화 할 필요는 없지만 스레드 안전성 (서버 인스턴스 당 수천 명의 이론적 사용자)이 있어야하며 성능이 좋습니다.
편집 : 존 소총의 4 번째 버전은 내가 정적 인 존재에 의존하지 않을 http://csharpindepth.com/Articles/General/Singleton.aspx
public sealed class Singleton
{
static readonly Singleton instance=new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}
Singleton()
{
}
public static Singleton Instance
{
get
{
return instance;
}
}
// randomguy's specific stuff. Does this look good to you?
private int[] lut = new int[5000];
public int Compute(Product p) {
return lut[p.Goo];
}
}
HttpContext의 캐시는 응용 프로그램 도메인이 활성화되어있는 동안에 만 지속되므로 그 점에서 이점이 없습니다. 사실, 캐시는 영속성을 염두에두고 설계된 것이므로 동일한 목적을 제공하지는 않습니다 (중복되는 경우도 있습니다). –