MVC는 소프트웨어 디자인 패턴입니다. 역할에 따라 구성 요소을 분리해 유지보수, 수정이 쉬워지게 됩니다. MVC가 무엇인지, 어떤 구조와 흐름으로 진행되는지 예제를 통해 알아보겠습니다.
MVC란?
먼저 웹브라우저에서 웹페이지를 요청하기까지 MVC 패턴의 흐름부터 살펴보겠습니다.
1. USER(사용자)가 웹사이트에 접속해 무엇인가를 요청합니다.
2. MANIPULATES - Controller (컨트롤러)는 사용자의 요청에 응답하기 위해 모델을 호출합니다.
3. UPDATE - Model (모델)은 데이터베이스 등을 통해 비즈니스 로직을 처리하고 결과를 컨트롤러에게 반환합니다. 컨트롤러는 다시 View(뷰)에게 전달합니다.
4. SEES - 데이터를 받아온 뷰가 사용자에게 웹페이지를 출력해 보여줍니다.
MVC의 가장 큰 장점은 사용자 인터페이스와 비즈니스 로직이 분리된다는 것입니다.
비즈니스 로직이란 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분을 말합니다. 어떻게 분리되는지 각각의 역할을 자세히 살펴보겠습니다.
MODEL (모델)
모델은 비즈니스 로직을 처리해 결과를 컨트롤러와 뷰에 알립니다.
쉽게 말해 데이터를 가져오고 수정하는 작업을 수행하고 처리하는 컴포넌트가 바로 '모델'입니다.
>> 규칙
1) 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 한다.
2) View나 Controller에 대해서 어떤 정보도 알지 말아야 한다.
3) 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
VIEW (뷰)
사용자 인터페이스로 컨트롤러에게 받은 모델의 데이터를 사용자에게 시각적으로 보여주는 역할을 합니다.
>> 규칙
1) Model이 가지고 있는 정보를 따로 저장해서는 안된다.
2) Model이나 Controller를 알고 있을 필요가 없다.
3) 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.
CONTROLLER (컨트롤러)
모델과 뷰 사이에서 데이터 흐름을 제어하고 모델과 뷰의 역할을 분리하는 중요한 역할을 합니다.
>> 규칙
1) Model이나 View에 대해서 알고 있어야 한다.
2) Model이나 View의 변경을 모니터링 해야 한다..
MVC 흐름
웹프레임워크에 따라 MVC의 구조와 흐름은 다릅니다. 대략적인 흐름만 참고하시기 바랍니다.
로딩
1) .htaccess 파일 - 모든 내용을 index.php로 들어 올 수 있게 만들어줍니다.
2) index.php - 모든 페이지의 시작입니다.
3) config.php - 여러가지 환경 변수를 상수로 정의
4) autoload.php - 자동으로 정의된 클래스를 불러옵니다.
5) application.php - 모든 클래스 파일은 특정 폴더 (spring의 경우 application) 아래 기능별 디렉토리 안에 위치합니다.
MVC
먼저 모든 컨트롤러가 상속 받을 부모 컨트롤러를 작성합니다. 그리고 각각의 기능을 하는 컨트롤러를 생성합니다.
게시판 목록을 불러오는 게시판 컨트롤러를 예를 들어 보겠습니다.
- 컨트롤러 안에 DB에 접속할 모델 객체를 불러옵니다.
- 모델 객체를 생성하고 리스트메소드를 호출해 게시판 목록 데이터를 불러옵니다.
- 뷰에게 전달해 게시판 목록을 출력합니다.
간단한 흐름이지만 컨트롤러 - 모델 - 뷰의 흐름이 다 있습니다.
MVC의 장점은 다시 한 번 말씀 드리지만 사용자 인터페이스와 비즈니스 로직을 나누어 유지보수와 수정이 용이하다는 것입니다. 별써 느끼셨겠지만 패턴을 나눠야하는 구조 설계 때문에 초반 접근성이 어렵다는 단점도 있습니다.
관련포스트 |
코드이그나이터 | 모델-뷰-컨트롤러 (MVC) |
웹프레임워크 | PHP 프레임워크 소개와 폴더 구조 |
개발환경 | 웹프레임워크의 종류 |
'웹 개발 > 웹사이트' 카테고리의 다른 글
Lighthouse를 이용한 웹, 블로그 성능 측정하기 (69) | 2024.08.23 |
---|---|
301 리다이렉트 설정하는 방법 (.htaccess) (35) | 2024.08.12 |
웹프레임워크 | 부트스트랩 소개와 시작하기 (103) | 2024.08.09 |
FTP 폴더 권한 변경하는 방법 (파일질라, 명령프롬프트) (22) | 2024.08.07 |
웹프레임워크 | PHP 프레임워크 소개와 폴더 구조 (79) | 2024.08.02 |
도메인 | 내 도메인 이메일 주소로 사용하는 방법 (107) | 2024.07.05 |
도메인 | SSL 인증서 종류(DV, OV, EV)와 인증 브랜드 (95) | 2024.06.28 |
웹호스팅 | 아이네임즈 대표도메인 변경과 도메인 관리 (93) | 2024.06.26 |
댓글