컨트롤러(Controller)?

0

개념정리

목록 보기
3/10
post-thumbnail

XBOX 컨트롤러 최고

위키백과에서 찾아본 컨트롤러

위키백과 MVC 링크
모델-뷰-컨트롤러 중 컨트롤러다.

컨트롤러(Controller)

  • 컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다. (예: 워드 프로세서에서 문서를 편집하는 것) 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서를 스크롤하는 것)
  • MVC의 뷰는 여러 개의 컨트롤러(Controller)를 가지고 있다. 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다. 컨트롤러는 모델의 mutator 함수를 호출하여 상태를 바꾼다. 이때 모델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여 준다.

내가 이해한 것

  • 뷰는 요청에 따라 알맞은 컨트롤러를 호출한다.
  • 컨트롤러는 요청에 따라 모델의 mutator 함수를 호출하여 상태를 바꾼다.
  • 모델의 상태가 바뀌게 된다면, 컨트롤러는 뷰 에게 모델의 상태가 바뀌었다는 것을 알린다.

인터넷 검색을 통해 얻은 정보

layer?

Presentation layer와 Service layer 라는 단어를 봤다.
잘 모르는 개념이니 다음에 따로 찾아서 정리해봐야겠다.
관련해서 layer에 대해 검색하다보니 다층 구조 라는 것을 알게 되었다.

역할 분리?

위의 다층구조에 의하면

  • 프레젠테이션 계층
  • 애플리케이션 계층
  • 비즈니스 계층
  • 데이터 접근 계층

이렇게 구분되는데, 컨트롤러는 프레젠테이션 계층으로 더 깊은 계층의 일을 직접 하려 하지 말고
해당 계층을 호출해서 사용하도록 역할을 분리를 하라는 것이다.
(어떤 블로그에서는 비즈니스 계층이라고 해서 좀 햇갈린다.)

그래서 controller - service - repository 순으로 호출하라는 내용을 봤다.
여러 블로그에서 위 구조를 채택하는 것을 보아 일반적으로 controller - service - repository 구조를 사용한다는걸 알게 되었다.

2년차가 되도록 이것도 몰랐다니...
그동안 단어에 대해 깊이 이해하려 하지 않고 그저 일만 하는데 급급했던 자신을 반성하게 된다.

검색을 통해 알게된 것

  • controller는 요청에 알맞은 service를 호출한다.
  • service는 요청받은 일을 수행하거나, 데이터에 접근해야 하는 경우 repository를 호출한다.
  • repository는 데이터를 조회하여 service로 넘겨준다.
  • service는 자신이 수행한 결과로 나온 데이터를 controller로 넘겨준다.

내가 경험해본 컨트롤러

Node.JS - express

라우터를 통해 path별로 분기가 나눠지며,
해당 path로 라우터에 요청이 들어오면 라우터는 컨트롤러를 호출한다.

Java - spring

@RequestMapping 어노테이션으로 path에 대한 분기를 컨트롤러 클래스가 직접 받는다.
그 후, Service 클래스를 호출한다.

Golang - gorilla mux

express 처럼 라우터 구조 통해 path의 분기가 나눠져 handler로 전달한다.
handler가 마치 controller같은 역할을 한다.

profile
지상 최강의 개발자 쥬니니

0개의 댓글