객체지향프로그래밍에서, MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나이다. MVC 방식은 자바SmalltalkC 및 C++ 등과 같은 프로그래밍 언어를 쓰는 개발 환경에서 널리 사용된다. MVC 형식은 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다.

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폼즈 프레임워크를 지원하고 있다.

[편집]같이 보기

[편집]주석

  1.  Trygve M. H. Reenskaug/MVC—제록스 팍 1978-79
  2.  Applications Programming in Smalltalk-80: How to use Model–View–Controller
  3.  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)의 차이점


기존의 어플리케이션 개발에서는 모듈화를 해야 개발이 용이하고 유지보수도 쉽다. 

하지만 웹 어플리케이션 개발로 넘어오며로직이나 화면처리등을 하나의 파일(jsp)에서 처리하는게 쉽고 익숙하므로 모든 기능을 jsp에 모아두었다. 그러나 이러한 방식은 상당히 소스를어지럽고 한마디로 지저분하여 유지보수도 어렵고 코드의 재사용에도 문제가 된다. 그래서 나온 것이【Model 2】(MVC)이다


물론 소규모프로젝트에서는【Model 1】이 개발기간면에서 【Model 2】MVC보다 생산성이 높으므로【Model 2】를 사용하는것이 비효율적일 수도 있다. 


그렇다면


【Model 1】【Model 2】(MVC)의 차이점은?


【Model 1】의 경우에 JSP파일 하나에 모든 내용이 다 들어간다는 것 

【Model 2】MVC는 각각의 특성에 맞게 기능 배분을 했다는 것 


먼저 MVC란? → MVC (Model, View, Controller)


Model - Controller에서 요구한 데이타를 구성해서 결과값을 넘겨주는 역할

View - jsp파일 화면에 관련된 사항만 처리
Controller - jsp에서 넘어오는 파라미터 처리후 해당 로직이나 데이터베이스에 연결후 결과값을 받아서 jsp에 넘겨주는 역할


MVC의 호출 순서

【Model 1】  Model 에서 jsp파일(View)을 직접 호출하지만. 

【Model 2】MVC는 Controller가 개입하여 

  먼저 Controller 호출 → Model 에서 데이터 구성 → jsp파일(View) 호출 


  즉,【 Controller → Model → View 】


Controller는 한마디로 중개자 역할을 한다.

모든 호출은 Controller를 거칩니다. 

Controller【Model 2】에서 Servlet으로 만든다. 

jsp로도 컨트롤이 가능하지만 Servlet이 좀 더 Controller 하는 역할에 적합하다.


출처 - 
http://datacollect.egloos.com/4183019 

=================================================================================


 

'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
Posted by linuxism
,