Erzsamatory Weblog


※ 외국 문서 번역 자료입니다.

원문: Fundamentals - Model-View-Controller (MVC) (http://goo.gl/YuLw5f)


Yii Framework의 모델-뷰-컨트롤러 패턴


Yii는 웹프로그래밍에서 널리 쓰이고 있는 모델-뷰-컨트롤러(이하 MVC) 패턴 디자인을 채용했습니다. MVC는 사용자 인터페이스와 비즈니스 로직을 분리하는 것을 목적으로 하는 것으로, 개발자가 무엇인가를 필요로 할 때 해당 사이트의 서비스에 영향을 끼치지 않고 쉽게 수정할 수 있게끔 해줍니다. MVC에서 모델(Model)은 데이터 규칙과 비즈니스 규칙을 포함하고 있고, 뷰(View)는 텍스트, 입력 양식과 같은 사용자 인터페이스와 관련된 구성요소를 포함하며, 컨트롤러(Controller)는 모델과 뷰의 연결다리 역할을 수행합니다.

Yii는 프론트 컨트롤러(front-controller)로써 어플리케이션(Application)이라는 구성요소를 필요로 합니다. 프론트 컨트롤러는 MVC 패턴 디자인 프로그래밍에서 가장 처음 실행되어 각종 명령어를 각 시스템에 적당하게 배정하는 역할을 수행하는데, Yii에서는 어플리케이션이 이 역할을 담당하게 됩니다. 어플리케이션은 사용자의 요청에 대해서 어떻게 처리해야 하는가에 대한 정보를 가지고 있으며, 이러한 요청을 분석하여 가장 적당한 다른 컨트롤러에 넘겨줍니다.

다음 도표는 Yii 어플리케이션의 구조를 이해하는데 도움이 될 것입니다.

Yii 어플리케이션의 구조

Yii 어플리케이션의 구조



어플리케이션의 작동 과정


다음 도표는 사용자의 요청을 핸들링하는 Yii 어플리케이션이 어떠한 순서로 작동하는지를 보여줍니다.

Yii 어플리케이션 작동 구조

Yii 어플리케이션 작동 구조



1. 사용자는 URL http://www.example.com/index.php?r=post/show&id=1와 같이 웹서버에 각종 요청을 하게 되는데, 웹서버는 부트스트랩 스크립트인 index.php을 실행함으로써 이러한 요청을 핸들링하게 됩니다.

2. 부트스트랩 스크립트는 어플리케이션 인스턴스를 생성한 후, 그것을 실행합니다.

3. 어플리케이션은 request 구성요소를 통해서 자세한 사용자 요청을 추출합니다.

4. 어플리케이션은 urlManager 구성요소를 통해서 적당한 컨트롤러와 액션이 무엇인지를 판단합니다. 한 가지 예를 들면, 컨트롤러 post가 요청되었다면 어플리케이션은 PostController class를 로드합니다. 그리고 액션 show가 요청되었다면 이에 대한 자세한 처리는 해당 컨트롤러 클래스 즉, PostController class에서 처리하게 됩니다.

5. 어플리케이션은 사용자 요청을 처리하기 위하여 컨트롤러 인스턴스를 생성한 후 실행합니다. 컨트롤러는 어플리케이션에서 넘어온 액션에 대한 자세한 분석을 시작합니다. 컨트롤러는 액션 show를 해당 컨트롤러 클래스 내의 actionShow()와 대응시킵니다. 컨트롤러는 해당 액션과 관련된 필터를 생성하고 실행합니다. 필터에 의해서 실행이 허가된 액션은 바로 실행됩니다.

6. 액션은 문서 번호가 1번인 게시물의 정보를 데이터베이스에서 가져오는 것을 모델에 요청합니다.

7. 액션은 Post 모델과 연동하여 뷰를 렌더링합니다.

8. 뷰는 Post 모델의 결과물을 읽어들입니다.

9. 뷰는 각종 필요한 위젯을 실행합니다.

10. 뷰는 지금까지의 결과물을 레이아웃과 결합하여 최종 결과물을 만들어 냅니다.

11. 액션은 뷰 렌더링을 마친 후, 최종 결과물을 사용자가 볼 수 있도록 화면에 출력합니다.


목차
1. 시작하기
     1-1. Yii란 무엇인가?
     1-2. 설치
     1-3. 아파치 웹서버와 Nginx 설정
     1-4. 첫 Yii 어플리케이션 생성

2. 기본 개념
     2-1. 모델-뷰-컨트롤러 (MVC) (현재 페이지)
     2-2. 엔트리 스크립트
     2-3. 어플리케이션
     2-4. 컨트롤러
     2-5. 모델
     2-6.
     2-7. 컴포넌트
     2-8. 모듈
     2-9. 경로 별칭과 네임스페이스
     2-10. 일반 규칙
     2-11. 개발 흐름 (Workflow)
     2-12. MVC 예제

3. 양식(Form) 사용 연습
     3-1. 개요
     3-2. 모델 생성
     3-3. 액션 생성
     3-4. 양식 생성
     3-5. 테이블 추출
     3-6. 양식 생성기 사용하기

4. 데이터베이스 사용 연습
     4-1. 개요
     4-2. DB 액세스 객체
     4-3. 쿼리 빌더
     4-4. 동적 레코드
     4-5. Relational Active Record
     4-6. 데이터베이스 변환

5. 캐싱
     5-1. 개요
     5-2. 데이터 캐시
     5-3. 부분 캐시
     5-4. 페이지 캐시
     5-5. 동적 컨텐츠

6. Yii 확장
     6-1. 개요
     6-2. 확장 사용하기
     6-3. 확장 생성하기
     6-4. 써드파티 라이브러리 사용하기

7. 테스트
     7-1. 개요
     7-2. Defining Fixtures
     7-3. Unit Testing
     7-4. Functional Testing

원문: http://www.yiiframework.com/doc/guide/
http://www.erzsamatory.net/trackback/23

건전한 댓글 문화를 만들어주시기 바랍니다 ^^
불건전한 댓글이 등록되는 경우 관리자의 임의적 판단으로 삭제될 수 있음을 미리 공지드립니다.

비밀글로 작성하기
  1. 2014/01/15 08:20
    와우 멋진 블로그(사이트)네요 ㅎㅎ
    제가 요즘 회사에서 웹과 모바일을 구축해야하는데
    님의 많은 도움이 절실하겠습니다 ㅡㅡㅋ
    아무튼 좋은 정보 많이 얻어갈께요^^
    • Walter E.
      Walter E.
      2014/05/06 09:58
      그렇다니 다행이네요 ^^
      영어 공부도 할 겸, 번역된 매뉴얼이 없는듯 하여 이렇게 번역 포스팅하고 있습니다 ^^ ;;;