거의 30 분 동안 실행되는 쿼리에서 데이터를 검색하고 웹 페이지로 가져와야하는 경우가 있습니다. (최대 최적화가 수행되었으므로이 시간을 줄이는 방법이 없습니다.) 응용 프로그램에 Entity Framework (EF, 데이터 액세스 레이어, Biz 로직 레이어, UI)와 함께 4 레이어 아키텍처를 사용합니다. DAL에 대한 인스턴스를 만들 때이 인스턴스를 다시 사용할 수있게되므로 추가 인스턴스를 만들 수 없으므로 싱글 톤 메서드를 사용하려고합니다 (데이터베이스에서 데이터를 검색하는 DAL). 동일 세션 내의 . 세션 상태를 설정하고 State Server에서 인스턴스의 가용성을 확인하려면 어떻게해야합니까?세션 상태 변수 및 싱글 톤 클래스
public static Singleton getInstance() {
if (**instance == null**)
instance = new Singleton();
return instance;
}
블록 if
에는 무엇이 있어야합니까? if
블록에서 어떤 조건을 점검해야합니까? 나는 내가해야 할 일에 대해 정말로 확신하지 못한다.
추신 :이 세션의 시간 제한은 5 분이어야합니다. 이 내용은 Web.config 파일에서 지정할 수 있습니다. 그것은 사실입니까?
세션은 이름 값 컬렉션입니다. DAL 인스턴스를 이름으로 가져온 다음 값이 null인지 확인하십시오. 그것이 널이 아닌 경우, DAL의 인스턴스로 변환하십시오. 가치가있는 부분에 대해서는이 패턴을 따르지 않을 것입니다. 각 요청에 대해 인스턴스를 만들고 처리하지 않으려는 DAL 작성에 대해 비용이 많이 드는 것은 무엇입니까? – Maess
DAL의 개체가 생성 될 때마다 DB 및 따라서 복잡한 쿼리를 포함하는 저장 프로 시저에 액세스하게되고 데이터가 나올 때까지 1 분 정도 걸립니다. 인스턴트 메신저 인스턴스를 저장하고 빠른 액세스를 위해 두 번째 다시 사용을 생각하고 있어요. – krishgopinath
각 사용자 세션에 대해 별도의 DAL을 만들고 있습니까? 왜 DAL은 세션에 특정한 것입니까? DAL에 대한 정적 속성을 가진 팩토리를 가질 수 없습니까? 속성이 호출되면 DAL 인스턴스의 팩토리의 정적 멤버가'null'인지 확인하십시오.존재하는 경우 인스턴스화하고 리턴하십시오. 그렇지 않다면 반환하십시오. – David