2011-11-02 1 views
1

내 문제의 디자인 \ 패턴을 찾고 있습니다.웹 개발 bll에서 클라이언트 변수 당 싱글 톤을 정의합니다.

웹 개발 환경에서 싱글 톤 변수 인 을 선언하고 싶지만 세션 당 사용자 당 싱글 톤이되고 싶습니다.

즉, MyClass.StaticVar은 각 클라이언트 당 세션 당 번 초기화되고 해당 클라이언트가 전역 적으로 액세스 할 수 있습니다.

무엇을 제안하겠습니까? 무엇입니까 모든 캐싱 옵션 \ 웹 애플리케이션 BLL 층에서 가능한 수준 (나는 우리가 뒤에 만 영문 및 ASCX 코드에서 세션 사전을 사용할 수 있습니다 이해 못했습니다.?)

답변

1

나는 같은 것을 할 :

public class MyClass 
{ 
    public static MyClass StaticVar 
    { 
     get 
     { 
      var s = HttpContext.Current.Session["MyClass"] as MyClass; 
      if (s==null) 
      { 
       s = new MyClass(); 
       HttpContext.Current.Session["MyClass"] = s; 
      } 

      return s; 
     } 
    } 
} 

위 예제에서 스레드 안전을 위해 잠금 (lock 문)을 추가 할 수 있습니다.

+0

세션을 모든 계층에서 사용할 수 있습니까? 뒤에 aspx 및 ascx 코드뿐만 아니라? –

+0

CodeBehind에서 생성자를 호출 할 때 다음 클래스로 내부 싱글 톤 인스턴스를 전달해야합니다. – sq33G

+0

코드를 업데이트했습니다. –

관련 문제