2009-11-22 3 views
5

저는 Stefan Schackow의 PDC 2009 session을 끝 마치고 사람들이 여전히 ASP.NET에서 세션 상태를 사용하고 있다는 사실에 놀랐다 고 말했습니다. 세션 상태는 심지어 ASP.NET MVC에서 internally으로 사용됩니다.세션 상태없이 ASP.NET 응용 프로그램을 만드시겠습니까?

모든 것이 "in-proc"세션 (심지어 데이터 테이블!)에 들어있는 레거시 응용 프로그램을 사용하여 세션 남용을 직접 경험했습니다.

세션 상태없이 ASP.NET 응용 프로그램을 빌드하는 방법이 있습니까? 일반적인 전자 상거래 워크 플로우의 각 단계에 대한 정보를 어떻게 저장합니까?

답변

3

나는 몇 년 동안 세션을 사용하지 않았습니다. 페이지간에 사용자의 진행 상황을 추적해야하는 경우 (예 : 장바구니 계산 프로세스를 통해) 필요한 상태 정보를 데이터베이스에 저장하고 쿠키가있는 사용자에게 다시 연결합니다.

.NET은 다른 "세션"메커니즘을 지원하는데, 그 중 하나는 정보를 데이터베이스에 저장합니다 (내 의견으로는 훨씬 선호).

+0

트래픽이 많은 환경에서 솔루션의 확장 성은 어느 정도입니까? 성능 문제가 각 웹 요청에 대한 데이터베이스에서 세션 개체를 읽고 쓸 수 있습니까? – Herman

+0

그 질문에 대한 짧은 대답은 "시험해보고"입니다. 그러나 비교적 트래픽이 많은 사이트에서 세션 관리를 위해 SQL을 사용하고 있으며 성능 문제는 보지 못했습니다. DB는 이런 종류의 일, 즉 가볍고 가벼운 질의와 응답을 위해 설계된 것임을 기억하십시오. 이 접근 방식으로 적절한 데이터베이스 서버를 관리 할 수 ​​있다면 매우 놀랄 것입니다. –

+0

http://odetocode.com/articles/440.aspx –

0

ASP.NET 멤버십 프로필을 확인하십시오. 사용자가 익명인지 여부에 관계없이 사용자 계정별로 개체를 serialize하고 저장/검색 할 수 있습니다. 나는 오랜 마법사 형태의 온라인 응용 프로그램을 성공적으로 사용할 수있었습니다.

+0

특성 (숨겨진 양식 필드에 저장되어 있음)로 인해 viewstate가 교차 페이지로 작동하지 않습니다. –

+0

네 말이 맞아. 내가 뭘 생각하는지 모르겠다. –

+0

왜 하향 보화를 설명 할까? 내 말은, 데이비드 라이블리가 내가 이것을 쓴 후에 내가 downvote를 얻은 후에 같은 놈의 것을 제안 했단 말인가? –

3

쿠키, 데이터베이스, 쿼리 문자열, 페이지 변수 및 웹의 상태 비 저장 속성을 처리하려고하는 서버 캐시 등의 옵션이 있습니다. 각각은 자체적 인 상충 관계가 있지만 실제로는 현재 db에 저장된 세션을 사용합니다. 이는 서버 팜에 맞게 확장되고 페이지 크기를 작게 유지하며 구현하기 쉽습니다.

관련 문제