Model View Controller 모델.
디자인 패턴 으로 보기도 하고, 설계 모델로 보기도 한다.
두가지의 큰 차이점이 있나 모르겠지만...
하여간.
내가 이해한 MVC모델은,
Model : 각종 시스템 처리로직들을 모아두는 실제 처리영역.
View : Model에서 처리한 부분들을 다른 그 어떤 로직 없이 사용자에게 보여주는 영역.
Controller : 사용자가 입력한 값을 받고 각 Model들을 불러와 처리하는 제어부분.
으로 나누어서 개발하는 것.!
그림 1.
보통 이렇게 생각하면 쉽다.
작게는 디자인 패턴만 바뀌기도 하지만 크게는 전체 로직이 바뀔수도 있음. 따라서 애초 설계부터 차근차근 해야한다.
!!막코딩 해놓고 고치려하면 처음부터 다뜯어고쳐야 함.!!
실제 MVC구현을 해보지 않고서는 이것들을 이해하기가 어렵다. 나도 구현 해 보고 나서야 알게 되었다.
참고로 요즘은 알아서 View부분은 알아서 떨어져 있는 경우가 많음.Ex)Android JAVA, WPF 등등.
우선 Android는 개발 과정 자체가 뷰는 확실히 분리가 되어있다.
View = XML 부분.
Controller, Model = JAVA Class 파일들.
여기서 MVC를 확실히 구분짓는 방법은. Main Activity Class를 Controller로 두고. 실제 로직 처리를 새로 Class하나 만들어서 불러와 사용하는 방법.
실제로 졸업 프로젝트당시 내가 구현한 음성처리 로직은 Class로 두고, 팀장 형이 메인 UI를 만들면서 Main Activity 구조를 만들어놓았다. 나는 그냥 Class파일만 넘겨주고 끝~!.
나중에 서로 만나지도 않고 연락만 주고 받아 QA 및 수정 진행했음.
WPF
이거는 View로 XAML을 쓰고, MODEL,CONTROLLER로 C#이나 VB+쓴다는데 나는 한번도 안해봄.
웹 프로그래밍
PHP랑 ASP만 해봤다.
어찌되었든 모든 HTML은 VIEW에 해당하고, JS는 Controller에 해당한다. PHP등의 서버사이드 언어는 Controller또는 Model에 해당한다.
DB는 Model이랑만 통신하며, 특별히 AJAX로 PHP모델에 직접 접근 가능.
어쨋든 내 경험은
ASP는 기억에 없고 PHP는 최근 인턴하면서 내가 억지로 구현함.
보통 프레임워크로 CI를 많이쓰는데 이는 프론트 컨트롤러역할도 동시에 수행할 수 있다.(Apache를 사용한다면 쓸 수 있는 URI파싱. MODreWrite 기능으로 인해....)
해당 공부를 하면서 인턴 교육 때 사용하려다가, 해당 기능 쓰지 말라고 저지받아서 안쓰고 파일만 MVC에 맞게 분리해둠.
Controller들만 웹디렉토리에 두고 나머지는 웹 상위디렉토리에 따로 저장.
이렇게 하는 것도 의미상 맞다고 생각한다. 어찌됐든 MODreWrite 시간되면 한번 공부해볼 것.! 공부할 URL 위치.: http://webskills.kr/archives/495