2011-04-12 3 views
1

비즈니스 규칙 중 하나는 어떤 직원이 어떤 작업을 수행 하는지를 기록하는 것이며, 현재 코드는 전체 세션 정면을 서비스 (모델 계층)로 전달합니다.세션 facade는 모델 레이어 또는 컨트롤러 레이어에 속합니까?

소리가 나거나 냄새가 좋습니까? 컨트롤러가 Session Facade를 처리하고 데이터를 추출하여 대신 서비스에 전달해야합니까?

세션 Facade의 주된 이유는 컨트롤러 레이어를 쉽게 테스트하기위한 것이 아니겠습니까? 전체 세션 파사드를 모델로 전달하는 것이 의미가 있습니까?

들으

답변

3

Session Facade로 비즈니스 흐름을 의미한다면 컨트롤러는이 계층과 상호 작용해야합니다. 일반적으로 Facade를 비즈니스 모델에 전달하는 것은 애플리케이션에서 진정으로 분리 된 레이어 인 경우 이해가되지 않습니다.

Session Logic (세션 Facade에서 제어 됨)과 Business Logic (실제 도메인 모델의 일부)이 분리되어 있습니다. 내 마음 속에는 두 개의 분리 된 층이 있습니다.

희망이 도움이됩니다.

+0

컨트롤러 만 세션과 상호 작용해야합니다 (해당되는 경우 façade를 통해). –

1

일반적으로 그들이 필요한 각 서비스 방법에 값을 전달한다 내 컨트롤러 레벨. 서비스는 그들이 어디서 왔는지 (세션, 사용자 제출 등) 상관 없으며, 단지 서비스를 받아들이고, 서비스를 수행하며 결과를 반환합니다. 컨트롤러는 적절한 위치 (데이터베이스, 세션, 사용자 제출 등)에서 다양한 값을 가져 와서 서비스 계층에 전달합니다.

관련 문제