2

약간의 세션 상태 저장에 대해 혼란스러워합니다. MVC 애플리케이션이 있는데 뷰에 더 가까운 뷰 모델이 있으며 풍부한 동작을하는 도메인 모델이 있습니다. 우리는 응용 프로그램에 세션 상태를 저장해야하며 내 세션에서 내보기 모델이나 내 도메인 모델을 저장해야하는지 결정하는 데 어려움을 겪고 있습니다.세션에 뷰 모델 또는 도메인 모델을 저장해야합니까?

우리는 레거시 애플리케이션을 상속 받았으며, 우리는 많은 상처를 입은 ViewModelBase를 확장해야합니다. 따라서 세션에서 뷰 모델을 저장하는 것을 주저합니다. 반면에 도메인 모델에는 동작이 포함되어있어 도메인 모델을 저장하는 것이 적절하지 않습니다.

아이디어가 있으십니까?

+0

도메인 엔터티가 Entity Framework입니까? – Dai

+0

아니요 –

답변

1

나는 말할 것도 없습니다. 첫째, 세션 사용은 가능한 한 피해야합니다. 둘째, 세션에 객체를 저장하는 것은 매우 어려울 수 있습니다. 당신이 in-proc 세션 저장을 사용하지 않는다면 (그렇지 않아야 함), 다른 모든 세션 백업은 객체가 직렬화 될 것을 요구할 것입니다. 간단한 클래스의 경우, 그렇게 나쁘지는 않지만, 계층 구조와 객체 그래프를 다루는 경우 엄청나게 큰 고통이 될 것입니다.

"우리는 일부 세션 상태를 저장해야합니다."이외에 실제로 달성하려는 내용에 대한 정보를 제공하지 않았습니다. 누가 또는 무엇 때문에 왜 필요합니까? 어쩌면 실제로 무엇을하려고하는지 묻는다면 누군가 세션을 전혀 사용하지 않거나 적어도 최소한의 경우에만 더 나은 솔루션을 제공 할 수 있습니다. 예를 들어, 엔티티를 저장하는 대신 단순히 ID를 저장하고이를 사용하여 데이터베이스에서 엔티티를 가져올 수 있습니까?

+0

세션에 저장할 수있는 Serializable 개체를 사용하고 있습니다. 현재 세션 제공자를 평가 중입니다. CouchBase는 이미 다른 용도로 사용하기 때문에 이러한 공급자 중 하나입니다. 우리는 전자 상거래 응용 프로그램이므로 다른 페이지에서 사용자의 세션을 추적 할 수 있어야합니다. –

+0

다른 점이 있습니다. 그것은 단지 인증과 권한 부여 일 뿐이지요. 네, 세션을 사용하지만,'Session'을 사용하지 않습니다. 나도 전자 상거래 응용 프로그램을 실행하고 우리를 위해'Session'에 들어간 유일한 것은 적용된 경우 프로모션 코드입니다. 오, 손님 체크 아웃을위한 배송 및 청구서 수신 주소 그것을 잊어 버렸습니다. 세션의 아주 최소한의 사용. –

+0

Google은 사용자 관련 정보도 추적합니다. 예를 들어, 사용자가 페이지의 내용에 관심을 표명하고 다른 페이지로 이동하는 경우 관심있는 내용을 세션에 저장하여 다른 페이지에있을 때 옵션을 제시 할 수 있습니다. 예, 캐싱을 사용하여이 작업을 수행하지만 세션을 사용하여이 작업을 수행하고 있습니다. –