2011-10-28 7 views
0

asp.net 웹 응용 프로그램 (프레임 워크 4)을 구축하고 기본 고객 정보 (고객 ID, 전자 메일, 전화, 주소 정보, 고객 계정 등)를 보유하는 클래스를 개발하고자했습니다. 웹 사이트 페이지를 통해 액세스 할 수 있도록 이 있어야합니다. 고객 ID를 저장하지 않아도되고 (세션 등) 고객의 정보가 필요할 때마다 DB를 호출 할 수 있습니다.
사용자가 포털에 로그인하여 기본 정보를 가져 와서 클래스 형태로 저장하면 DB를 한 번만 호출하려고합니다.asp.net 고객 정보 클래스

어떤 유형의 클래스를 개발할 수 있는지 그리고 모든 페이지에 활용할 수 있도록 저장하는 방법은 무엇이 있을까요?

+2

저는 수업이 어떻게 작동하는지 오해하고 있다고 생각합니다. 특히 끈기와 관련하여 특히 그렇습니다. 주로 클래스는 영속성을 무시합니다. HTTP 프로토콜은 본질 상 무 상태이므로 요청이 완료되면 클래스 인스턴스가 삭제됩니다. 고객 정보를 저장하기 위해 어느 시점에서 Session (또는 다른 지속성 메커니즘)을 사용해야합니다 (클래스 객체 인 경우에도). –

+0

ASP.NET 페이지는 상태 비 저장입니다. 글로벌 정보는 어딘가에 저장해야합니다. 세션을 올바르게 사용하면 세션을 사용하는 것이 나쁘지 않습니다. 세션의 내용을 최소화하려면 사용자의 ID (또는 가지고있는 고유 식별자)를 저장하고 해당 고객에 대한 정보가 필요할 때 데이터베이스에서 가져옵니다. –

+0

나는 브라이언과 완전히 동의한다. 질문에서 볼 때 객체 지향 프로그래밍이 어떻게 작동하는지 당신이 놓쳤을 것 같다. – gideon

답변

0

일단 사용자가 성공적으로 로그인하면 현재 Customer 개체를 검색하고 Session에 저장하기 위해 DB를 한 번 호출하십시오. 서버의 메모리를 잘못 사용한다고 생각하지 마십시오. 개체는 500 바이트 미만이고 1000 개의 실시간 세션이있는 경우 서버의 메모리가 500KB 미만입니다.

CacheUser ID으로 입력하고 Customer 개체를 검색 할 수도 있습니다.

Customer 개체를 ViewState으로 저장할 수도 있으며 서버에서 메모리를 차지하지 않습니다.

아무 페이지에서나 Session \ Cache \ ViewState에 액세스하는 것은 매우 쉽습니다. Session를 들어

:

protected void Page_Load(object sender, EventArgs eventArgs) 
{ 
    Customer customer = Session["customer"] as Customer; 
} 

private void LoginSuccess(int customerID) { 
    Customer customer = _customerRepository.GetById(customerID); 
    Session["customer"] = customer; 
} 

** ViewState를 들어,이 Session처럼 동일합니다 - 단지 ViewStateSession를 교체합니다. 당신이 Cache에 저장하는 경우

다음

HttpContext.Current.Cache.Insert("customer" + customerId, customer, new CacheDependency("customer" + customerId), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration); 

를 사용하고이 같은 Cache 항목에 액세스 할 수 있습니다

HttpContext.Current.Cache["customer" + customerID] 

희망이 도움이!

관련 문제