2009-08-13 4 views
0

나는 asp.net mvc 프레임 워크로 작은 응용 프로그램을 빌드합니다. 질문이 하나 있습니다. 나는 앱의 n- 레이어 구조 (컨트롤러 -> 서비스 레이어 -> 리포지토리 레이어)를 구축하고 사용자로부터 데이터를 수집하기 위해 위자드를 만들었습니다. 저장소 (데이터 계층)에서 오는 일부 데이터는 다음 단계에서 저장해야합니다 (예 : 사용자가 위자드의 뒤로 버튼을 누르면). 이는 사용자가 입력 한 데이터가 아닙니다. 웬일인지 저장소에서이 데이터를 캐시해야합니다 (뒤로 버튼을 눌렀을 때 무시하기 위해). 신청할 때이 데이터를 세션에 저장하고 누가이 데이터를 저장해야하는지 모릅니다. 한 손에서 서비스 레이어 여야합니다 - 그리고 나는 그에게 sessionstatewrapper를 보내야합니다. 그러나 응용 프로그램의 비즈니스 논리 - 서비스 계층의 경우 위자드의 모든 데이터를 보내고이 데이터를 일부 단계로 분리해야합니다. 데이터를 수집하고이 데이터를 처리하는 데 필요한 뷰입니다. 프레젠테이션 계층 (예 : 컨트롤러)의 작업입니다. 도움이 될만한 아이디어가 있습니까?누가 세션에서 데이터를 저장해야합니까

P. 죄송합니다 내 영어 =)

답변

1

나는 이것이 프론트 엔드가 처리해야한다고 말하고 싶습니다. 서비스 계층은이 데이터가 마법사에서 수집된다는 사실과 웹 기반 마법사이므로 프론트 엔드가 상태를 유지하지 않는다는 점을 염려 할 필요가 없습니다. 이것을 고려해보십시오 : Windows 기반 앱은 무엇을했을까요? 당신의 "프론트 엔드"는 당신을 위해 국가를 유지할 것입니다.

하지만 그건 단지 $ 0.02 ...

1

당신이 바로 거기에 꽤 복잡한 응용 프로그램을 것으로 보인다. 사용중인 MVC 프레임 워크에 익숙하지 않은 것처럼 보이기 때문에 매우 간단한 것으로 시작하는 것이 좋습니다. 즉, 예를 들어, 끝날 때까지 데이터를 저장하지 마십시오. 사용자에게 경고하는 한편 사용중인 MVC에 대해 최대의 것을 배웁니다. 충분한 지식을 얻었 으면 돌아가서 그 기능을 추가하십시오. MVC에서 BTW

:

  • M은 모델, 당신은 표준 입력 파일, 데이터베이스에서 가져 오는 데이터 등
  • V 인은보기의 표현 적 계층이다. 데이터를 표시합니다. 프론트 엔드입니다.
  • C는 컨트롤러이며 응용 프로그램의 모든 것을 제어합니다. 모델에서 데이터를 가져 와서 처리하고,보기로 보내고, 응답을 기다리고,보기에서 응답을 얻고, 처리하고, 그에 따라 작동합니다.

내 2 센트는 컨트롤러가 마법사 상태를 처리하도록해야한다는 것입니다.

+0

감사합니다. 그러나 mvc의 컨트롤러에는 많은 책임이 있다는 것을 확신하지 못합니다. 나는 모델 계층으로부터의 데이터를 제공하여 뷰에서 데이터를 수집하고이를 프로세스 모델링으로 이동시켜야한다고 생각한다. 이것에 대해 어떻게 생각하세요? –

1

세션에 저장하거나 서버의 메모리에 저장해야합니까?

귀하의 경우에는 엔터프라이즈 라이브러리 캐싱 응용 프로그램 블록을 사용했을 것입니다. 이렇게하면 키/값 쌍의 캐시를 만들 수 있습니다. 여기서 키는 사용자 ID이고 값은 저장하려는 정보가 들어있는 객체입니다.

EntLib를 사용하면 응용 프로그램에서 가장 이해하기 쉬운 계층의 정보에 액세스 할 수 있으며 세션 상태에 액세스 할 때 걱정할 필요가 없습니다.

편집

세션 데이터를 모델에 저장하십시오. 모델은 데이터를 돌볼 책임이 있습니다. 보기는 사용자 및 컨트롤러 컨트롤에 데이터를 표시합니다.

+0

세션 저장 - 임시 해결 방법. 개발의 nex 단계에서는이 데이터를 데이터베이스 또는 분산 캐시에 저장합니다. Adn 질문은이 데이터 저장을 제어해야하는 응용 프로그램 계층입니다. –

0

마법사를 통해 앞뒤로 데이터를 전달하는 경우 가장 먼저 생각해야 할 것은 TempData입니다. 이것은 정확하게 용도 중 하나입니다. 여러분은 무언가를 다음 단계 (또는 이전) 페이지에만, 각 단계마다 유지해야합니다. 물론, TempData는 Session을 사용하기 때문에 Session을 직접 사용해야하는 경우 하루가 끝날 때면 항상 옵션이됩니다.

이것은 컨트롤러이 관리해야하는 유형입니다. 서비스 및 저장소 계층은 필요한 모든 데이터를 컨트롤러에 제공해야하지만 컨트롤러 자체가 마법사 전체에서이 데이터의 지속성을 관리해야합니다. 마법사 페이지의 "보기 데이터"로 보았을 때 (그것이 데이터의 대표자인지 여부는 모르지만 그럴 수도 있습니다) 시스템의 어느 계층에 대한 책임이 있는지 명확하게 알 수 있습니다 그것.

관련 문제