Controller VS Service

zyan·2021년 9월 6일
0

게시판 기능이 주가되는 사이트를 제작해보는 미니 프로젝트 진행 중, controller와 service는 왜 굳이 분리되어야 하며 각각의 쓰임이 어떻게 다른지에 대한 궁금증이 생겼다.

사실 MVC와 Service로 구성된 디자인 패턴의 프로그램은 다수 접해보았고, 관련한 프로젝트도 진행했었지만 프로그램이 실행되도록 만들기에 급급해서(나무에만 집중하느라) 숲을 보지 못했던 것 같다.

🍋 Controller VS Service

MVC 패턴의 구조는 service의 유무에 따라 아래와 같이 나뉜다.

  • service가 없을 때

    M ↔ V ↔ C

  • service가 있을 때

    M ↔ S ↔ C ↔ V

View는 service와 상관 없이 controller와 상호작용하는데, 이는 Service가 필요한 이유중 하나이다.

🟡 Controller

  • 브라우저를 통해 사용자에게 데이터를 전달 받는다 (request or session)
  • 전달 받은 데이터에 따라 알맞은 service를 호출한다
  • 로직 실행 결과를 view로 연결한다 (response)

🟡 Service

  • controller에서 호출될 경우, 로직을 실행한다
  • DB가 필요할 경우 DAO을 호출하여 로직을 처리한다

service는 종속적이지 않고 독립적이라는 것이 특징이다. (위에서 언급했듯, view는 service와 관계 없이 controller와 연결되어있다) 이러한 특징은 service로 하여금 재사용이 용이하게 만들어준다. 즉, service에 의해 비지니스 로직의 재사용성이 높아진다는 의미다.

예시로, web으로 구현된 기능들을 app에서도 작동시켜야 하는데 이 경우 view에 변화가 생기게 되지만 service는 독립적이기 때문에 별다른 수정 없이 얼마든지 재사용이 가능하다. 변화에 대응하기 쉽고 확장성도 높은 로직인 것이다. 이를 보고 '모듈화 되었다'라고 표현하기도 한다.

*ref https://velog.io/@2cong/MVC*

0개의 댓글