문제

저는 MVC와 멀티 계층 웹 아키텍처의 개념을 처음 접했습니다. PHP 응용 프로그램을 개발하고 사용 가능한 MVC 프레임 워크 중 하나를 사용하고 있습니다. 내 질문은 다음과 같습니다.

내가 이해 한 바에 따르면 MVC 그 자체는 다층 아키텍처로 간주되지 않습니다. MVC 만 사용하는 방법을 이해할 수 있지만 구조화되지 않은 접근 방식을 취하는 데 단계가 진행되는 방법을 이해할 수 있지만 간단한 3 계층 아키텍처가 어떻게 맞는지 고려하고 있었습니까? MVC가 프레젠테이션 계층에 상주할까요? 계층화 된 접근 방식을 추가 할 때의 장점은 무엇입니까? 내가 수집 한 것에서 MVC만으로는 데이터베이스에서 데이터를 검색하는 명시적인 데이터 객체가 없으며 일반적으로 모델로 채워집니다. 마찬가지로 3 층 아키텍처에서 '비즈니스 레이어'(또는 당신이 호출하려는 모든 것)에 상주하는 비즈니스 논리는 컨트롤러로 채워질 수 있습니다.

내 이해가 다소 정확합니까? 나는 많은 질문을한다는 것을 알고 있지만, 두 사람이 상호 배타적이지 않다고 가정하므로 N-Tier 아키텍처를 MVC 프레임 워크 (PHP 또는 다른 방법)에 통합 한 방법에 대해 논의하고 싶습니다. 감사!

도움이 되었습니까?

해결책

m) m은 당신의 모델입니다. 이것은 일반적으로 비즈니스 계층이나 프레젠테이션 계층 바로 뒤에 살고 있습니다. 많은 사람들은 프레젠테이션 계층을 좋아하지 않지만 비즈니스 계층에 대한 지식을 갖는 것이기 때문에 뷰 모델이라고함으로써 더 추상화합니다. 이들은 종종 도메인 모델에 느슨하게 매핑되는 DTO (데이터 전송 객체)입니다. 나에게 (.NET Guy)는 Domain 모델에서 모델보기로 변환하기위한 Automapper와 같은 도구가 있습니다.

v) V는 당신의 견해입니다. 보기는 프레젠테이션 계층입니다. 이것은 사용자가 직접 터치하고 상호 작용하는 실제 HTML 또는 PHP 코드입니다. 보기는 가능한 한 가볍습니다 (가능하면 논리가 없음). 뷰에서 시나리오를 입력하고 데이터를 표시하고 수집하는 데 어떤 종류의 IF/그런 다음 시나리오를 입력하십시오. 웹 디자이너에게 도메인 모델을 오염시키지 않도록 뷰 모델을 제시하십시오.

C) C는 컨트롤러입니다. 이것은 코디네이터와 매우 흡사합니다. 그것은 당신의 관점에서 데이터를 가져 와서 해당 데이터를 처리하기위한 오른쪽 백엔드 기능/방법에 도달하는지 확인합니다. 또한 백엔드에서 프론트 엔드까지의 백엔드에서 데이터를 조정합니다.

멀티 계층 디자인 개념이있는 곳은 프레젠테이션 계층 뒤에 있습니다 (MVC는 주로 어디에 있습니까?) 컨트롤러가 뷰에서 데이터를 가져 와서 백엔드로 전달하는 경우 (DDD 또는 도메인 구동 설계를 따르는 경우) 데이터를 응용 프로그램 서비스 (백부 엔드가 중요한 클래스)로 전달합니다. 이 서비스는 데이터를 리포지토리 계층 (데이터베이스, 파일 시스템, 웹 서비스 등으로 말하는 클래스 인 인프라 제품)으로 데이터를 추가로 푸시 할 수 있습니다. DDD는 큰 주제이지만 N-Tier 접근 방식과 MVC에서 어떻게 작동하는지를 맞이할 것입니다.

이 주제를 연구하는 동안 IOC (Control of Control), DI (의존성 주입), TDD (테스트 중심 개발) 및 가능한 많은 패턴 (정면, 공장 등)을 살펴 봅니다.

다른 팁

일반적으로 비즈니스 로직은 컨트롤러에있어서는 안됩니다.이 패턴을 따르는 경우 대규모 컨트롤러가 생길 것입니다. 이 모델은 기본적으로 모든 비용도 계층, 데이터 액세스, 비즈니스 로직 및 비즈니스 엔티티 객체를 보관합니다. 컨트롤러는보기를 위해 비즈니스 데이터를 준비합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top