객체지향프로그래밍에서, MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나이다. MVC 방식은 자바, Smalltalk, C 및 C++ 등과 같은 프로그래밍 언어를 쓰는 개발 환경에서 널리 사용된다. MVC 형식은 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다. |
===============================================================
모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 아키텍처 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
목차[숨기기] |
[편집]역사
MVC는 제록스 팰러앨토 연구소에서 스몰토크 관련 일을 하던 Trygve Reenskaug에 의해 1979년에 처음으로 설명되었다.[1] 관련 구현은 영향력있는 논문인 《스몰토크-80에서의 애플리케이션 프로그래밍: 모델-뷰-컨트롤러를 사용하는 방법》[2]에서 깊이 있게 설명되었다.
MVC는 여러 파생 패턴을 가지고 있다; 그 중 (마이크로소프트가 사용했기 때문에) 가장 널리 알려진 것은 1990년대 초기부터 등장하기 시작한 모델 뷰 프리젠터 패턴이다. 이 패턴은 MVC의 진화된 모습을 목표로 설계되었다. 그러나 모델-뷰-컨트롤러는 여전히 매우 널리 사용되고 있다.
2002년 11월 W3C는 미래의 웹 애플리케이션에 사용될 X폼즈(XForms) 아키텍처에 MVC 구조가 포함되도록 투표하여 가결하였다.[3] 이 규격은XHTML 2.0 규격에 바로 통합될 것이다. 현재 20개가 넘는 업체가 애플리케이션 스텍에 MVC가 통합된 X폼즈 프레임워크를 지원하고 있다.
[편집]같이 보기
[편집]주석
- ↑ Trygve M. H. Reenskaug/MVC—제록스 팍 1978-79
- ↑ Applications Programming in Smalltalk-80: How to use Model–View–Controller
- ↑ Forms 1.0 Basic Profile
========================================================================
글참조 - http://blog.naver.com/pilljh/100113661491
MVC(Model , View , Controller)
[ Model 1 ]
User ↔ ~.jsp(V) ↔ JavaBean(M) ↔ DB
JVM이 있기 때문에 심플하다. -> 소규모프로젝트에는 적합.
strong coupling : 독립성이 없기 때문에, 변화가 심하거나 대형사이트에서는 사용이 어렵다.
model1에서는 공통적 처리가 불가능 하다.
각 jsp 파일을 직접 접근으로 뛰어넘을수가 있다.
[ Model 2 ]
User → (User ← ~.jsp(V) ← Servlet) → Servlet ← (Controller) → JavaBean(M) ↔ DB
공통적처리가 가능하다. (각파일마다 공통된 내용을 심을 필요가 없다.)
loose coupling (느슨한 결합) : 각 요소가 비교적 독립적이라는 장점이 있다.
중앙집중적 방식 : Controller 중심의 집중으로 모든 부분이 Controller를 통해서 움직이도록 되어있다.
[ Model 2 에서 Framework의 출현 ]
model 2 에서 servlet의 직접 개발이 힘들고, 효율성이 떨어지므로,
만들어진 Framework를 이용하여 이 과정을 해결함.
반복적인 작업을 줄이고, 소스코드의 양을 줄임.
대표적 Framework : 스트럿츠, 아이바티스 등.
[ Frameworks ]
M (Model : DB처리) : iBATIS, Hibernate...
V (View : Presentation) : Tiles, Sitemesh, Velocity, Fremaker ...
C (Controller : Process) : Struts 1, Struts 2, Spring ...
[ Hard Coding & Soft Coding ]
Hard coding : sql코드가 ~.java에 심어져 있다. (관리와 변경하기 번거롭다.)
Soft coding : sql코드가 ~.xml에 심어져 있다. (관리와 변경이 용이하다.)
[ Framework의 장점 ]
Framework는 ~.jar : ~.class의 모음 (필요한 것들만 가져다 쓰면, 노력을 대폭 줄여주게 된다.)
( Example : 자바JDK의 중요파일인 rt.jar은 runtime에 필요한 class들을 모두 가지고 있다. java.lang, java.util...)
표준화의 역할을 하게 된다. (반대로 그 프레임워크에서 지원해주는 내용을 벗어날수 없다는 것은 단점이다.)
=========================================================================================
저도 MVC패턴에 그렇게 익숙하거나 이해도가 높은 편이 아니라 이참에 정리 해볼까 합니다.
AppGD의 어플을 개발하다 부딧히는 부분이 많아서...
- MVC 패턴이란?
MVC(Model View Control) 패턴이란 웹 개발의 한 패턴으로 꽤나 오래 전부터 사용되고 있는 방식입니다. (난 대학에서 대체 뭘 배운거야?!)
Model - 어플리케이션의 데이터를 저장, 관리 등을 담당하는 class들의 집합입니다.
View - 사용자가 직접적으로 받아서 보는 페이지입니다. (html, PHP, ASP, JSP 등이 될수 있습니다.)
Controller - View로 부터 온 요청을 Model에 요청하거나 Model로 부터 나온 데이터를 View로 보내는 역할을 합니다. view와 Model의 중간 역할을 합니다.
- 장 점
1.관계 없는 부분의 로직을 제외하고 로직의 수정이가능하다.
2.각 각의 역할분담이 확실하다.
3.관리 유지 보수가 쉽다.
4.병렬식 개발이 가능하다.(이말은 Timeline 돌아 가듯이 하나를 개발해야만 다른것을 개발하지 않아도 된다는것입니다.)
5.좋은 물건을 만들어 낸다.
- 단 점
1.병렬 방식의 개발을 하기 위해서는 여러 프로그래머들이 필요하다.
(커맨드 센터를 개발할때에 여러 SCV가 붙을경우 개발이 훨씬 빨라 지겟지요?)
2.다양한 기술의 지식이 필요하다.
(기본적으로 서버사이드 언어 지식이외에 javascript의 데이터 처리 방법 등의 지식이 필요 합니다.)
정도 된다는군요 ... 뭐 단점중 2번은 좀 재미 있지 않나요?;;
아래의 그림은 모 홈페이지 들에서 수집한 MVC관련 사진입니다.
1번은 PHP의 경우
2번은 JAVA일경우를 해서 끌어 온것인대...
사실 크게 차이는 없습니다.
1.사용자가 Controller에 요청을 보냅니다.
2.Controller는 Model에 그 요청을 처리해 줄것을 요청합니다.
3.Model은 요청을 처리하고 다시 Controller에 요청을 반환합니다.
4.반환된 요청은 View페이지로 전송되어 요청된 데이터를 사용자가 보기 좋게 변경합니다.
5-1.사용자가 보기 좋게된 데이터를 Controller로 다시 전송하여 사용자는 Controller 의 내용을 보게 됩니다.
5-2.사용자는 View로 출력된 내용을 보게 됩니다.
5-1과 5-2의 내용이 살짝 다른대요... 제가 보기에는 ... 5-1이 좀더 깔끔해 보이는군요 .. View는 Model과 확실히 분리 되야 된다고 생각합니다..
뭐 그때 그때 다르게 생각되겠지만서도;;
대략적인 개념은 이 정도로 정리 하겠습니다.
출처 - http://www.deoker.com/359
===================================================================================
[JAVA] 【Model 1】과【Model 2】(MVC)의 차이점
'Framework & Platform > Common' 카테고리의 다른 글
모델1과 모델2의 차이점 (0) | 2012.03.21 |
---|---|
log4j.properties (0) | 2012.03.19 |
디자인 패턴 (0) | 2012.03.18 |
Refactoring (0) | 2012.03.18 |
Struts 2 따라잡기 (0) | 2010.12.26 |