2010-08-17 6 views
28

거의 모든 경로가 아닌 관련 코드가 모델로 전달되는 코드를 보았습니다. 또한 모든 데이터베이스 지속성이 모델에 의해 처리되는 코드를 보았지만 비 DB 처리는 컨트롤러에서 처리합니다., 당신은 컨트롤러와 모델 사이에서 어디 선을 그립니까?

더 나은 접근 방법은 무엇입니까?

+2

가능한 DUP을 터치 할 필요없이 다른 프리젠 테이션 계층을위한 V와 C를 교환 할 수 있어야한다? http://stackoverflow.com/questions/467113/fat-models-skinny-controllers-and-the-mvc-design-pattern –

답변

39

컨트롤러와 모델 사이의 선은 실제로 아주 분명합니다.

모델은 응용 프로그램의 핵심입니다. 애플리케이션에 작성된 문제를 해결하는 데 필요한 비즈니스/도메인 로직을 포함합니다. 모델은 일반적으로 여러 다른 레이어로 계층화됩니다 (예 : 데이터베이스가 ActiveRecord 여야한다는 일반적인 오해가있는 것처럼 모델이 단순한 데이터베이스라는 일반적인 오해입니다.

컨트롤러 (및보기)는 표현 계층의 일부입니다. 컨트롤러의 단독 책임은 응용 프로그램에 대한 사용자 입력을 받아 처리하고이를 모델의 해당 부분에 위임하는 것입니다. 아무것도 더. 복잡한 응용 프로그램 플로우 또는 문제 도메인의 코드를 처리하면 안됩니다. You want controllers to be skinny and models fat with logic. 이 모델은 C 또는 V 중 하나에 대해 알고 안되며, 당신은 당신의 M.

MVC Excerpt in Patterns of Enterprise Application Architecture

+2

나는 서서 (또는 오히려 컴퓨터 책상에서 내 의자에 앉아있다 ...). +1 – BoltClock