2009-07-26 3 views
1

저는 Rails의 MVC 디자인 패턴과 Django (및 다른 것들) MTV 디자인 패턴에 대해 잘 알고 있습니다. 다른 프레임 워크가 웹 애플리케이션 개발에 어떤 패턴을 사용하는지 궁금합니다. 그들의 장점/약점은 무엇입니까? MTV는 일반적으로 MVC라고 어떤 단지보다 정확한 이름입니다프레임 워크 디자인 패턴

감사

답변

0

필자의 소형 미니어처 (60 줄) PHP 용 MVC 엔진 http://code.google.com/p/barebonesmvc-php/은 시스코가 임베디드 소비자 장치에서 성공적으로 사용하는 "템플릿 방법"패턴을 사용하며, 여기서 부모 클래스는 알고리즘에 대한 단계를 지정하지만 자식 클래스는 이러한 단계 중 일부를 구현해야합니다.

static function sendResponse(IBareBonesController $controller) { 
     $controller->setMto($controller->applyRequestToModel()); 
     $controller->mto->applyModelToView(); 
} 

내 엔진의 경우 개발자는 applyRequestToModel을 구현해야합니다. Spring의 Web/MVC 모듈뿐 아니라 applyModelToView 메소드도 map/hash/assoc-array를 사용하여 뷰에서 사용 가능하게합니다. Spring은 MVC의 두 측면을 추상화의 이름으로 모델링합니다 (ModelAndView). 반면에 내 추상화는보다 적절하게 ModelTransferObject (일명 $ mto)라는 이름입니다. 봄의

말하기, 템플릿 메소드 패턴에 관한 GoF의 기준에서 GoF의 웹에 대한

+0

이것은 전략 (일명 "템플릿 방식") 패턴을 사용하여 구현 된 MTV입니다. 그래서 예, 내부적으로는 모든 소프트웨어가 내부적으로 하나 이상의 패턴을 사용하기 때문에 다른 패턴을 사용하지만, 전체적으로 여전히 MTV입니다. – vog

+0

GoF 읽기, 전략 및 템플릿 방법 패턴은 동일하지 않습니다. 관련된, 예, 같은 번호. –

-1

. 그래서 실제로, 레일즈와 장고는 같은 패턴을 사용합니다. Is는 수년에 걸쳐 수립되었으며 거의 ​​모든 프레임 워크는 반 객체 패턴을 제외하고는 다르게 작동합니다. 그러나 웹 세상에는 반 객체가 존재하지 않습니다.

"실제"MVC는 클래식 GUI와 JavaScript 내에서 발견되는 패턴입니다 (브라우저 내에서의 상황 만 볼 경우). WWW에는 적용 할 수 없기 때문에 채택해야했습니다. 결과는 혼동스럽게 MVC라고도하며 MTV는보다 정확한 설명입니다.

+0

MVC "제어의 반전이"간단해야한다 참조, 청취에 대한 필요가 없습니다, 웹 서버는 않습니다 그 요청은 사건입니다. 다른 디자인 패턴이 필요 없습니다. 웹용 MVC는 본질적으로 조정자 패턴의 구체적인 인스턴스를 보여 주며, 컨트롤러는 뷰와 모델을 조정합니다. –

+0

MVC와 달리 웹 버전은 각 동작에 대한 템플릿을 사용하여 GUI를 만들어야합니다. 이것은 고전적인 GUI에서는 필요하지 않습니다. 따라서 웹에는 크게 두 가지 차이점이 있으며 "보기"개념과 다른 부분 (모델, 컨트롤러)과의 상호 작용이 크게 바뀝니다. MTV와 같은 새로운 이름이 적절한 이유입니다. – vog

+0

추신 : 나는 "실제"MVC를 Javascript로 구현했으며, 사용자가 암시하는대로 그냥 "나오지 않았다". 리스너를 만든 다음 위젯을 등록하여 이벤트를 알립니다. 예를 들어 주석을 추가 할 때 주석 수를 표시하는 위젯을 추가로 업데이트 할 수있는 등 Ajax 지원 위젯을 동기화 상태로 유지할 수 있습니다. –

관련 문제