2022. 7. 4. 16:39ㆍ간단한 컴퓨터 이론/우아한테코톡
본 포스팅은 우아한Tech의 테코톡 MVC 영상을 정리한 내용입니다.
이전에 소프트웨어 공학을 수강할 때 나왔던 패턴이지만 중요한 개념이라고 생각해 한번 더 정리하는 차원에서 영상을 보고 MVC와 관련된 내용을 정리합니다.
2022.04.25 - [강의 내용 정리/소프트웨어 공학] - 소프트웨어 공학 (8), Architectural Design
MVC
1) MVC의 구성요소
(1) Model
- 데이터와 비즈니스 로직을 관리하고, 뷰와 컨트롤러에 대한 의존이 없다.
ex) 체스, 모델에는 체스 게임에 대한 로직이 담겨있고, 이것이 어떻게 화면에 보여질지에 대한 내용은 담겨있지 않다.
(2) View
- 모델의 데이터를 사용해 시각적인 화면을 구성하는 역할을 하고, MVC의 정의에 따라 모델과 의존성을 가질수도 있고, 가지지 않을 수도 있다.
ex) Cocoa 버전의 MVC는 뷰와 모델을 격리시켜서 컨트롤러가 중간의 매개체 역할을 한다. 하지만 Smalltalk는 뷰가 모델로부터 데이터를 가져와서 사용자에게 시각적인 화면을 구성하는 과정을 거친다. 이때 컨트롤러는 모델의 상태를 변경시키는 것에 중점을 두었다.
(3) Controller
- 사용자의 입력을 받아서 처리하는 역할을 한다. 결과를 뷰로 전달하는 식으로 많이 구성된다.
2) MVC 역사
- 처음에는 GUI 어플리케이션에서 사용했으며 컨트롤러라는 용어대신 에디터라는 용어를 사용했다. 모델의 변경 또한 뷰에서 가능하다고 했다. 이후 Smalltalk 라이브러리에서 적용이 되었지만 공식 문서에서는 등장하지 않는다. 이후 썬 마이크로시스템즈 Model2가 공개되었는데 이는 우리가 알고있는 웹 MVC의 형태가 된다.
3) GUI 환경에서의 MVC
- 뷰에서 사용자 입력이 발생하면 컨트롤러에서 요청을 받아 모델의 상태를 변경시킨다. 이때 옵저버 패턴인 경우 모델의 상태변화가 발생했을 때 뷰에 알림을 줘서 뷰를 갱신한다. 혹은 컨트롤러가 뷰에 대해서만 비활성화시키는 방식을 사용하기도 한다.
- HTTP 요청을 컨트롤러가 받아서 모델을 변경시킬 수 있는데, DB와 상호작용하면서 모델을 변경하고, 변경된 결과를 컨트롤러가 받고, 이를 뷰로 전달한다.
4) MVC를 왜 사용하는가.
(1) 뷰를 모델에서 분리하는 것이 유리하기 때문이다.
- 뷰는 사용자 인터페이스, 모델은 비즈니스 정책이나 데이터 베이스 상호 작용을 고려하기에 서로 다른 관심사를 가지고 있기에 이를 분리하는 것이 유리하다.
- 모델의 재사용이 가능하기에 다양한 뷰에 적용이 가능하기에 분리하는 것이 유리하다.
- 시각적인 요소를 제외한 도메인 로직에 대한 테스트만 확인할 수 있기에 분리하는 것이 유리하다.
(2) 컨트롤러를 뷰에서 분리하는 것이 유리하기 때문이다.
출처
https://www.youtube.com/watch?v=86NxhHptx7s
https://uniandes-se4ma.gitlab.io/books/chapter8/mvc-mvvm-mv-mvwhat.html
'간단한 컴퓨터 이론 > 우아한테코톡' 카테고리의 다른 글
우아한 테코톡(6), Node.js (0) | 2022.08.15 |
---|---|
우아한 테코톡 (5), API vs Library vs Framework (0) | 2022.08.11 |
우아한 테코톡(4), Flux Architecture (0) | 2022.08.10 |
우아한 테코톡 (3), Web Server vs WAS (0) | 2022.08.08 |
우아한테코톡 (2), Servlet & Spring Web MVC (0) | 2022.07.08 |