HMVC 패턴이란 무엇입니까?
Kohana의 문서를 읽고 3.0 버전의 가장 큰 차이점은 버전 2.x와 같이 MVC가 아닌 HMVC 패턴을 따른다는 것을 알게 되었습니다.Kohana의 문서와 위키피디아에 있는 페이지는 나에게 명확한 아이디어를 주지 못했다.
질문: HMVC 패턴은 무엇이며 MVC와 어떻게 다릅니까?
Sam de Freysinet(Kohana 개발자 중 한 명)은 HMVC, HMVC의 내용 및 사용 방법에 대해 상당히 상세한 기사를 썼다.
링크가 정지되어 있습니다.새로운 링크 - https://web.archive.org/web/20160214073806/http : //techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
저는 현재 알로이라는 자체 PHP 5.3 HMVC 프레임워크를 개발하고 있습니다.저는 HMVC에 많은 투자를 하고 있기 때문에, 다른 관점을 제안할 수 있다고 생각했습니다.또, HMVC를 사용하는 이유와 그 메리트에 대해 더 잘 설명할 수 있을지도 모릅니다.
HMVC 아키텍처를 사용하는 가장 실질적인 이점은 콘텐츠 구조의 "위젯화"입니다.예를 들어 댓글, 평가, 트위터 또는 블로그 RSS 피드 표시, 전자상거래 웹 사이트의 쇼핑 카트 콘텐츠 표시 등이 있습니다.기본적으로는 메인 HTTP 요청의 컨텍스트에 따라 여러 페이지에 걸쳐 또는 다른 장소에 표시해야 하는 콘텐츠입니다.
기존의 MVC 프레임워크는 일반적으로 이러한 유형의 콘텐츠 구조에 대한 직접적인 답변을 제공하지 않습니다.따라서 사람들은 일반적으로 레이아웃을 복제 및 전환하거나 커스텀 도우미를 사용하거나 위젯 구조나 라이브러리 파일을 작성하거나 메인 요청 컨트롤러에서 관련 없는 데이터를 가져와 View로 푸시하고 렌더링합니다.편파적인 사람특정 콘텐츠를 렌더링하거나 필요한 데이터를 로드해야 하는 책임이 여러 영역으로 유출되어 사용되는 장소에서 중복되기 때문에 이들 중 어느 것도 특별히 좋은 옵션은 아닙니다.
HMVC, 특히 이러한 책임을 처리하기 위해 컨트롤러에 서브요구를 디스패치하는 기능이 명백한 해결책입니다.지금 하고 있는 일을 생각하면 컨트롤러의 구조에 딱 들어맞습니다.코멘트에 관한 데이터를 로드하여 HTML 형식으로 표시해야 합니다.따라서 일부 매개 변수와 함께 주석 컨트롤러에 요청을 보내면 모델이 모델과 상호 작용하고 보기를 선택하면 보기가 내용을 표시합니다.유일한 차이점은 코멘트를 완전히 다른 완전한 코멘트 페이지가 아닌 블로그 기사 아래에 인라인으로 표시해야 한다는 것입니다(HMVC 접근방식에서는 실제로 내부와 외부 양쪽의 요구를 동일한 컨트롤러로 처리할 수 있으며 속담에 있듯이 "일석이조"라고 합니다).이 점에서 HMVC는 코드 모듈화, 재사용 가능성 향상 및 문제 분리의 개선으로 인한 자연스러운 부산물일 뿐입니다.이것이 HMVC의 세일즈 포인트입니다.
따라서 HMVC를 사용한 스케일아웃에 관한 Sam de Freysinet의 TechPortal 기사는 흥미로운 내용이지만 HMVC 프레임워크를 사용하는 사람의 90% 이상이 실제적이고 실용적인 일상적 이점을 얻을 수 있는 것은 아닙니다.
HMVC는 디스패치에 대한 "컴포넌트 기반" 접근법과 밀접하게 관련되어 있습니다.기본적으로 컨트롤러에 위임하는 단일 디스패처를 갖는 대신 각 컨트롤러가 직접 디스패처 역할을 할 수 있습니다.이를 통해 컨트롤러 계층이 제공됩니다.이 설계는 더 유연하고 코드의 캡슐화가 더 잘 이루어지지만 추상화 비용이 더 많이 듭니다.Konstrkt는 이 패턴을 중심으로 설계되었습니다.
다음 답변도 참조하십시오.https://stackoverflow.com/questions/115629/simplest-php-routing-framework/120411#120411
Kohana에서 HMVC 요구는 적어도 "내부"에서 처리되는 HTTP 요구입니다.네트워크를 통해 발행되는 것이 아니라 프레임워크 자체에 의해 라우팅, 디스패치 및 처리됩니다."HMVC"와 "MVC"라는 이름의 유사성은 실제로는 존재하지 않는 용어 사이의 근본적인 연관성을 시사한다는 점에서 혼란스럽다. 하나는 사소한 변형이나 다른 하나는 완전히 다른 것이다.(HMVC는 클라이언트측의 HTTP 요구가 없는 Ajax라고도 불립니다).Kohana가 "HMVC"를 강조하고 지원하는 것은 이 프레임워크가 HTTP 기반 서비스 지향 아키텍처를 강력하게 지원한다는 것을 의미합니다.
이 아키텍처 패턴의 장점은 내부 및 외부 요청에 동일한 "호출 규칙"이 사용되기 때문에 필요에 따라 "내부" 서비스 요청을 "외부" 요청으로 변환하거나 그 반대로 변환하는 것이 간단하다는 것입니다.
이것은 합리적인 아키텍처 패턴이지만, 독자적인 이름을 붙이는 것은 불필요하다고 생각됩니다(Symfony2는 같은 개념의 「서브 요구」를 나타내고 있습니다).실제로 그 이름은 잘못된 이름인 것 같습니다.요구가 계층을 형성해야 하는 특별한 요건이나 요구는 없습니다(모든 필수 프로그램의 표준 콜 그래프 이외).요구는 없습니다.예를 들어, 쉽게 재귀화됩니다.
[2011년 4월 갱신, 2012년 3월, 코멘트에 따라 답변 확대]
HMVC는 계층형 모델 뷰 컨트롤러입니다.통상 MVC에서는 모든 GUI 오브젝트에 MVC가 있습니다.그러나 HMVC와 달리 부모 GUI 개체와 자녀 GUI 개체 사이에는 아무런 관계가 없습니다.HMVC에서 각 GUI 개체는 하위 개체에 액세스할 수 있으며 각 하위 개체는 상위 개체에 액세스할 수 있습니다.
따라서 모든 뷰에는 상위 뷰가 있습니다.이를 통해 부모 뷰에 액세스할 수 있습니다.모든 컨트롤러에는 이벤트를 부모 컨트롤러에 전달할 수 있는 부모 컨트롤러가 있습니다(이벤트가 해당 범위에 포함되지 않는 경우).
상세한 것에 대하여는, 여기를 클릭해 주세요.
새 링크가 이 주소입니다.
언급URL : https://stackoverflow.com/questions/2263416/what-is-the-hmvc-pattern
'it-source' 카테고리의 다른 글
Python이 이 JSON 데이터를 해석할 수 없는 이유는 무엇입니까? (0) | 2022.11.29 |
---|---|
입력 필드에서 속성을 읽을 때 HTML 인코딩이 손실됨 (0) | 2022.11.29 |
Python void 반환 유형 주석 (0) | 2022.11.29 |
행을 MySQL 데이터베이스에 삽입하는 가장 효율적인 방법 (0) | 2022.11.29 |
그룹 기준과 함께 중위수 사용 (0) | 2022.11.29 |