이 자료는 "엔터프라이즈 개발 소개" 시리즈의 일부입니다. 이전 기사:
- 네트워크에 대해 ;
- 소프트웨어 아키텍처에 대해 ;
- HTTP/HTTPS 프로토콜에 대해 ;
- Maven 기본 사항에 대해 ;
- 서블릿에 대해 (우리는 간단한 웹 애플리케이션을 작성하고 있습니다) ;
- 서블릿 컨테이너에 대해 .
MVC의 역사
MVC에 대한 아이디어는 70년대 후반 Xerox PARC에서 근무하면서 Trygve Reenskaug가 고안했습니다. 그 당시 컴퓨터 작업은 학업 학위와 방대한 문서에 대한 끊임없는 연구 없이는 불가능했습니다. Reenskaug가 매우 강력한 개발자 그룹과 함께 해결한 문제는 일반 사용자와 컴퓨터의 상호 작용을 단순화하는 것이었습니다. 한편으로는 매우 간단하고 이해하기 쉬우면서도 다른 한편으로는 컴퓨터와 복잡한 애플리케이션을 관리할 수 있는 도구를 만드는 것이 필요했습니다. Reenskaug는 Alan Kay의 지도 하에 "모든 연령대의 어린이를 위한" 휴대용 컴퓨터인 Dynabook과 SmallTalk 언어를 개발하는 팀에서 일했습니다. 친숙한 인터페이스의 개념이 확립된 것은 바로 그때였습니다. Reenskaug와 그의 팀의 작업은 IT 분야의 발전에 큰 영향을 미쳤습니다. MVC와 직접적으로 관련되지는 않지만 이러한 개발의 중요성을 보여주는 흥미로운 사실을 제시하겠습니다. 2007년, Apple iPhone이 발표된 후 Alan Kay는 다음과 같이 말했습니다. “Macintosh가 나왔을 때 Newsweek는 나에게 그것에 대해 어떻게 생각하는지 물었습니다. 나는 이렇게 말했습니다. 이것은 비판받을 만한 최초의 개인용 컴퓨터입니다. 프레젠테이션이 끝난 후 Steve Jobs가 와서 물었습니다. iPhone이 비판받을 가치가 있습니까? 그리고 저는 가로세로 5인치, 세로 8인치로 만들면 세계를 정복할 것이라고 말했습니다.” 3년 후인 2010년 1월 27일, Apple은 9.7인치 iPad를 출시했습니다. 즉, 스티브 잡스는 Alan Kay의 조언을 거의 문자 그대로 따랐습니다. Rennskaug가 작업한 프로젝트는 10년 동안 지속되었습니다. 그리고 제작자가 MVC에 관한 첫 번째 출판물을 10년 후에 출판했습니다. 소프트웨어 아키텍처에 관한 여러 책과 기사의 저자인 Martin Fowler는 SmallTalk의 작동 버전에서 MVC를 배웠다고 언급합니다. 오랫동안 기본 소스로부터 MVC에 대한 정보가 없었고 다른 여러 가지 이유로 인해 이 개념에 대한 다양한 해석이 나타났습니다. 결과적으로 많은 사람들은 MVC를 디자인 체계나 패턴으로 간주합니다. 덜 일반적으로 MVC는 복합 패턴 또는 복잡한 애플리케이션을 구현하기 위해 함께 작동하는 여러 패턴의 조합이라고 합니다. 하지만 사실 앞서 말했듯이 MVC는 기본적으로 다양한 패턴을 사용하여 다양한 방식으로 구현할 수 있는 일련의 아키텍처 아이디어/원리/접근 방식입니다... 다음으로 MVC 개념에 포함된 주요 아이디어를 살펴보겠습니다.MVC란 무엇인가: 기본 아이디어와 원리
- VC는 사용자 인터페이스를 갖춘 복잡한 정보 시스템을 구축하기 위한 일련의 아키텍처 아이디어와 원칙입니다.
- MVC는 Model-View-Controller의 약어입니다.
1단계: 애플리케이션의 비즈니스 로직을 사용자 인터페이스에서 분리
MVC의 핵심 아이디어는 사용자 인터페이스가 있는 모든 애플리케이션이 대략적으로 2개의 모듈, 즉 애플리케이션의 비즈니스 로직 구현을 담당하는 모듈과 사용자 인터페이스로 나눌 수 있다는 것입니다. 첫 번째 모듈은 애플리케이션의 주요 기능을 구현합니다. 이 모듈은 애플리케이션 도메인 모델이 구현되는 시스템의 핵심이 됩니다. MVC 개념에서 이 모듈은 문자 M이 됩니다. 모델. 두 번째 모듈은 사용자에게 데이터 표시 및 사용자와 애플리케이션의 상호 작용 논리를 포함하여 전체 사용자 인터페이스를 구현합니다. 이러한 분리의 주요 목적은 시스템의 핵심(MVC 용어로 모델)을 독립적으로 개발하고 테스트할 수 있도록 하는 것입니다. 이러한 분할 후의 애플리케이션 아키텍처는 다음과 같습니다.2단계. 관찰자 패턴을 사용하여 모델의 독립성과 사용자 인터페이스의 동기화를 더욱 강화합니다.
여기서 우리는 2가지 목표를 추구합니다:- 모델의 독립성을 더욱 향상시킵니다.
- 사용자 인터페이스를 동기화합니다.
Step 3. 인터페이스를 View와 Controller로 나누기
우리는 계속해서 애플리케이션을 모듈로 나누지만 계층 구조의 낮은 수준에 있습니다. 이 단계에서는 1단계에서 별도의 모듈로 분리된 사용자 인터페이스를 뷰와 컨트롤러로 구분합니다. 뷰와 컨트롤러 사이에 엄격한 선을 긋는 것은 어렵습니다. 뷰는 사용자가 보는 것이고 컨트롤러는 사용자가 시스템과 상호 작용할 수 있는 메커니즘이라고 말하면 모순이 있습니다. 웹 페이지의 버튼이나 전화기 화면의 가상 키보드와 같은 컨트롤은 기본적으로 컨트롤러의 일부입니다. 그러나 뷰의 다른 부분과 마찬가지로 사용자에게 표시됩니다. 여기서는 기능적 분할에 대해 자세히 설명합니다. 사용자 인터페이스의 주요 임무는 사용자와 시스템의 상호 작용을 보장하는 것입니다. 즉, 인터페이스에는 2가지 기능만 있습니다.- 시스템에 관한 정보를 사용자에게 표시하고 편리하게 표시합니다.
- 사용자 데이터와 명령을 시스템에 입력합니다(시스템으로 전송).
- MVC의 원칙에 따라 시스템을 모듈로 나누어야 합니다.
- 가장 중요하고 독립적인 모듈은 모델이어야 합니다.
- 모델은 시스템의 핵심이다. 인터페이스와 독립적으로 개발하고 테스트할 수 있는 능력이 필요합니다.
- 이를 위해서는 시스템 분리의 첫 번째 단계에서 모델과 인터페이스로 나누어야 합니다.
- 다음으로 Observer 패턴을 사용하여 모델의 독립성을 강화하고 사용자 인터페이스의 동기화를 얻습니다.
- 세 번째 단계는 인터페이스를 컨트롤러와 뷰로 나누는 것입니다.
- 사용자의 정보를 시스템에 입력하는 데 필요한 모든 것은 컨트롤러에 있습니다.
- 시스템에서 사용자에게 정보를 출력하는 모든 정보가 표시됩니다.
GO TO FULL VERSION