Hello

MVC

by 볼빵빵오춘기

MVC

  • Model-View-Controller 패턴의 약자로, 소프트웨어 디자인 패턴 중 하나
  • 애플리케이션의 구성 요소를 세 가지 주요 역할로 분리하여 애플리케이션의 구조를 체계적으로 유지하고 유지보수성을 높이며, 개발과 테스트를 용이하게 함.

 

구성요소 

Model (모델)

  • 애플리케이션의 데이터와 비즈니스 로직을 관리.
  • 데이터베이스와 상호작용하고, 비즈니스 규칙을 구현하며, 상태를 저장.
  • ex) 데이터베이스의 테이블과 매핑되는 엔티티 클래스, 데이터 전송 객체(DTO), 서비스 계층의 비즈니스 로직.

 

View (뷰)

  • 사용자 인터페이스를 담당하며, 데이터를 표시하고 사용자로부터 입력을 받음.
  • 모델의 데이터를 화면에 렌더링하고, 사용자로부터의 입력을 컨트롤러에 전달.
  • ex) HTML, JSP, Thymeleaf 템플릿, Angular, React 컴포넌트.

 

Controller (컨트롤러)

  • 사용자 입력을 처리하고, 모델과 상호작용하여 데이터를 업데이트하며, 뷰에 데이터를 전달.
  • 요청을 받아 적절한 서비스를 호출하고, 비즈니스 로직을 수행한 후 결과를 뷰에 전달.
  • ex) Spring MVC의 컨트롤러 클래스, REST API의 엔드포인트.

 

동작 흐름

 

  • 클라이언트 요청: 사용자가 특정 URL에 접근하거나 특정 동작을 수행하면, 클라이언트 요청이 발생.
  • 컨트롤러: 컨트롤러는 이 요청을 받아들이고, 요청을 처리할 적절한 로직을 호출합니다. 이때 컨트롤러는 필요한 데이터를 모델로부터 가져오거나 모델을 통해 데이터를 수정.
  • 모델: 모델은 비즈니스 로직을 수행하고 데이터베이스와 상호작용하여 필요한 데이터를 가져오거나 업데이트함.
  • 뷰: 컨트롤러는 모델로부터 받은 데이터를 뷰에 전달합니다. 뷰는 이 데이터를 이용해 사용자에게 정보를 표시.
  • 응답: 뷰는 생성된 화면을 클라이언트에게 반환하여 사용자에게 결과를 보여줌.

 

장점

 

  • 유지보수성: 각 구성 요소가 독립적이기 때문에, 하나의 요소를 수정하더라도 다른 요소에 미치는 영향을 최소화.
  • 재사용성: 비즈니스 로직과 사용자 인터페이스를 분리하여, 재사용 가능한 컴포넌트를 만들 수 있음.
  • 테스트 용이성: 모델, 뷰, 컨트롤러를 독립적으로 테스트할 수 있어, 단위 테스트와 통합 테스트를 용이하게 할 수 있음.

 

 

 

참고링크 

https://developer.mozilla.org/ko/docs/Glossary/MVC

https://m.blog.naver.com/jhc9639/220967034588

https://velog.io/@langoustine/%EC%97%AC%EA%B8%B0%EB%8F%84-MVC-%EC%A0%80%EA%B8%B0%EB%8F%84-MVC-MVC-%ED%8C%A8%ED%84%B4%EC%9D%B4-%EB%AD%90%EC%95%BC

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기