이 자료는 "엔터프라이즈 개발 소개" 시리즈의 일부입니다. 이전 기사:
이 기사에서 우리는 MVC라는 것을 알게 될 것입니다. MVC가 무엇인지에 대해 이야기하고, 그 역사를 접하고, MVC에 구현된 기본 아이디어와 개념을 탐색하고, 애플리케이션을 모델, 뷰 및 컨트롤러 모듈로 나누는 방법을 단계별로 살펴보고, Spring Boot를 사용하는 작은 웹 애플리케이션과 Spring MVC를 예로 사용하여 데이터가 Java 코드에서 HTML 페이지로 전송되는 방식을 확인합니다. 이 자료를 이해하려면 디자인 패턴, 특히 옵저버와 파사드에 익숙해야 합니다. 또한 HTTP 요청 및 응답에 익숙하고 HTML의 기본 사항을 이해하고 Java 주석이 무엇인지 알아야 합니다. 커피 한 잔과 간식을 들고 편안하게 쉬십시오. 의 시작하자.
이 모든 것으로부터 우리는 논리적 결론을 도출할 수 있습니다. 복잡한 시스템은 모듈로 나누어야 합니다. 이 분리를 달성하는 단계를 간략하게 설명하겠습니다.
그리고 이것이 모델, 뷰 및 컨트롤러라는 세 가지 모듈로 구성된 애플리케이션에 도달하는 방법입니다. 요약하자면:

MVC의 역사
MVC의 기본 아이디어는 1970년대 후반 Xerox PARC에서 근무하는 동안 Trygve Reenskaug가 공식화했습니다. 그 당시 컴퓨터로 작업하려면 방대한 문서에 대한 학위와 지속적인 연구가 필요했습니다. Reenskaug가 강력한 개발자 그룹과 함께 해결한 작업은 일반 사용자와 컴퓨터의 상호 작용을 단순화하는 것이었습니다. 한편으로는 매우 간단하고 이해하기 쉬우면서도 다른 한편으로는 컴퓨터와 복잡한 응용 프로그램을 제어할 수 있는 도구를 만드는 것이 필요했습니다. Reenskaug는 "모든 연령대의 어린이를 위한" 랩톱 컴퓨터인 Dynabook과 Alan Kay의 지도 하에 SmallTalk 언어를 개발한 팀에서 일했습니다. 그것은 친근한 인터페이스의 개념이 정립된 때였습니다. 여러 측면에서 Reenskaug와 그의 팀이 수행한 작업은 IT 영역의 발전에 영향을 미쳤습니다. 다음은 MVC에 직접 적용되지는 않지만 이러한 개발의 중요성을 보여주는 흥미로운 사실입니다. 앨런 케이말했다, "1984년에 Apple에 처음 왔을 때 Mac은 이미 출시된 상태였고 Newsweek에서 제게 연락하여 Mac에 대해 어떻게 생각하는지 물었습니다. 비판을 받아라.' 그래서 2007년에 아이폰을 발표하고 나서 가지고 와서 건네주면서 '앨런, 이거 욕먹을 만큼 좋은거야?' 그리고 나는 '스티브, 태블릿만큼 크게 만들면 세상을 지배하게 될거야'라고 말했습니다." 3년 후인 2010년 1월 27일 애플은 대각선 9.7인치의 아이패드를 선보였습니다. 즉, Steve Jobs는 Alan Kay의 조언을 거의 그대로 따랐습니다. Reenskaug의 프로젝트는 10년 동안 지속되었습니다. 그러나 MVC에 대한 첫 번째 출판물은 10년 후에 밝혀졌습니다. 소프트웨어 아키텍처에 관한 여러 책과 기사의 저자인 Martin Fowler는 작동 중인 Smalltalk 버전을 사용하여 MVC를 연구했다고 언급합니다. 오랜 시간 동안 원본 소스에서 MVC에 대한 정보가 없었기 때문에 여러 가지 다른 이유로 이 개념에 대한 많은 다른 해석이 나타났습니다. 결과적으로 많은 사람들이 MVC를 디자인 패턴으로 간주합니다. 덜 일반적으로 MVC는 복합 패턴 또는 복잡한 애플리케이션을 만들기 위해 함께 작동하는 여러 패턴의 조합이라고 합니다. 그러나 앞에서 언급했듯이 MVC는 실제로 기본적으로 다양한 패턴을 사용하여 다양한 방식으로 구현할 수 있는 일련의 아키텍처 아이디어/원칙/접근 방식입니다. 다음으로 MVC 개념에 포함된 주요 아이디어를 살펴보겠습니다. 그리고 몇 가지 다른 이유로 이 개념에 대한 많은 다른 해석이 나타났습니다. 결과적으로 많은 사람들이 MVC를 디자인 패턴으로 간주합니다. 덜 일반적으로 MVC는 복합 패턴 또는 복잡한 애플리케이션을 만들기 위해 함께 작동하는 여러 패턴의 조합이라고 합니다. 그러나 앞에서 언급했듯이 MVC는 실제로 기본적으로 다양한 패턴을 사용하여 다양한 방식으로 구현할 수 있는 일련의 아키텍처 아이디어/원칙/접근 방식입니다. 다음으로 MVC 개념에 포함된 주요 아이디어를 살펴보겠습니다. 그리고 몇 가지 다른 이유로 이 개념에 대한 많은 다른 해석이 나타났습니다. 결과적으로 많은 사람들이 MVC를 디자인 패턴으로 간주합니다. 덜 일반적으로 MVC는 복합 패턴 또는 복잡한 애플리케이션을 만들기 위해 함께 작동하는 여러 패턴의 조합이라고 합니다. 그러나 앞에서 언급했듯이 MVC는 실제로 기본적으로 다양한 패턴을 사용하여 다양한 방식으로 구현할 수 있는 일련의 아키텍처 아이디어/원칙/접근 방식입니다. 다음으로 MVC 개념에 포함된 주요 아이디어를 살펴보겠습니다.MVC: 기본 아이디어 및 원칙
- VC는 사용자 인터페이스로 복잡한 정보 시스템을 구축하기 위한 일련의 아키텍처 아이디어 및 원칙입니다.
- MVC는 Model-View-Controller의 약자입니다.

1단계. 사용자 인터페이스에서 애플리케이션의 비즈니스 로직 분리
MVC의 주요 아이디어는 사용자 인터페이스가 있는 모든 응용 프로그램을 비즈니스 로직 구현을 담당하는 모듈과 사용자 인터페이스의 두 가지 모듈로 나눌 수 있다는 것입니다. 첫 번째 모듈은 애플리케이션의 주요 기능을 구현합니다. 이 모듈은 애플리케이션의 도메인 모델이 구현되는 시스템의 핵심입니다. MVC 패러다임에서 이 모듈은 문자 M, 즉 모델입니다. 두 번째 모듈은 사용자에게 데이터를 표시하고 응용 프로그램과 사용자 상호 작용을 처리하는 논리를 포함하여 전체 사용자 인터페이스를 구현합니다. 이러한 분리의 주요 목표는 시스템의 핵심(MVC 용어로 "모델")을 독립적으로 개발하고 테스트할 수 있도록 하는 것입니다. 이렇게 분리한 후 애플리케이션의 아키텍처는 다음과 같습니다.
2단계 옵저버 패턴을 사용하여 모델을 더욱 독립적으로 만들고 사용자 인터페이스를 동기화합니다.
여기에는 2가지 목표가 있습니다.- 모델에 대해 훨씬 더 큰 독립성 달성
- 사용자 인터페이스 동기화
3단계 인터페이스를 뷰와 컨트롤러로 분리
애플리케이션을 모듈로 계속 나누지만 이제 계층 구조의 하위 수준에 있습니다. 이 단계에서 사용자 인터페이스(1단계에서 별개의 모듈로 분리)는 뷰와 컨트롤러로 분할됩니다. 뷰와 컨트롤러 사이에 엄격한 선을 긋는 것은 어렵습니다. 뷰는 사용자가 보는 것이고 컨트롤러는 사용자가 시스템과 상호 작용할 수 있게 해주는 메커니즘이라고 하면 모순을 지적할 수 있습니다. 웹 페이지의 버튼이나 전화기 화면의 가상 키보드와 같은 제어 요소는 기본적으로 컨트롤러의 일부입니다. 그러나 보기의 일부로 사용자에게 표시됩니다. 여기서 우리가 실제로 이야기하고 있는 것은 기능적 분리입니다. 사용자 인터페이스의 주요 작업은 사용자와 시스템의 상호 작용을 용이하게 하는 것입니다.- 시스템 정보를 출력하여 사용자에게 편리하게 표시
- 사용자 데이터 및 명령 입력(시스템에 전달)

- MVC 패러다임의 원칙에 따라 시스템은 모듈로 나누어져야 합니다.
- 가장 중요하고 독립적인 모듈은 모델이어야 합니다.
- 모델은 시스템의 핵심입니다. 사용자 인터페이스와 독립적으로 개발하고 테스트할 수 있어야 합니다.
- 이를 위해서는 분할의 첫 단계에서 시스템을 모델과 사용자 인터페이스로 분할해야 합니다.
- 그런 다음 관찰자 패턴을 사용하여 모델의 독립성을 강화하고 사용자 인터페이스를 동기화합니다.
- 세 번째 단계는 사용자 인터페이스를 컨트롤러와 뷰로 나누는 것입니다.
- 사용자 데이터를 시스템으로 수신하는 데 필요한 모든 것이 컨트롤러에 있습니다.
- 사용자에게 정보를 전달하는 데 필요한 모든 것이 보기에 있습니다.
뷰와 컨트롤러가 모델과 상호 작용하는 방법에 대해 조금
컨트롤러를 통해 정보를 입력하면 사용자가 모델을 변경합니다. 또는 최소한 사용자가 모델 데이터를 변경합니다. 사용자가 인터페이스 요소(뷰를 통해)를 통해 정보를 수신하면 사용자는 모델에 대한 정보를 수신합니다. 어떻게 이런 일이 발생합니까? 뷰와 컨트롤러는 어떤 방식으로 모델과 상호 작용합니까? 결국, 뷰의 클래스는 데이터를 읽고 쓰기 위해 모델 클래스의 메서드를 직접 호출할 수 없습니다. 그렇지 않으면 모델이 독립적이라고 말할 수 없습니다. 모델은 뷰나 컨트롤러가 액세스할 수 없는 밀접하게 관련된 클래스 집합입니다. 모델을 뷰와 컨트롤러에 연결하려면 파사드 디자인 패턴을 구현해야 합니다. 모델의 파사드는 모델과 사용자 인터페이스 사이의 레이어입니다. 이를 통해 뷰는 편리한 형식의 데이터를 수신하고 컨트롤러는 파사드에서 필요한 메소드를 호출하여 데이터를 변경합니다. 결국 모든 것이 다음과 같이 보입니다.
GO TO FULL VERSION