MVC pattern

Ik·2022년 11월 28일
0

CS

목록 보기
7/27

MVC란

  • Design pattern 중에 하나
  • 작업 영역을 기준으로 Model, View, Controller 3가지 영역으로 나눠 개발하는 패턴
  • 각자 역할에 충실하며 중복 코딩을 사라지는 것을 목적으로 한다
  • 운용하는 서비스(App)의 규모가 크지 않은 경우 Serivce, Data access method 분리 없이 가져가는 경우도 존재





MVC 구성

Model

  • DB와 연동해 데이터 다루는 작업
  • app에서 서비스하는 business logic(biz라고도 불림), 사용되어지는 데이터를 담당





View

  • Client와 직접적인 소통
    • 사용자에게 보여질 결과 화면을 만들어내는데 사용하는 자원 의미
  • presentation logic 담당
    • jsp and HTML
      • jsp(java server page) : java를 이용한 서버 사이드 스크립트 언어
      • 스크립트 언어 :
        • 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어
        • HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것
        • 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
        • 데이터베이스 처리 작업을 수행하기 위해 주로 사용
        • 종류 - 어디서 해석되는지로 나눔
          • 서버용(서버에서 해석) - ASP, JSP, PHP, python
          • 클라이언트용(클라이언트에서 해석) - java script
  • view를 interface라고도 부른다
  • client는 view만 보며 소통하기 때문
    • client와 server의 소통 또한 view로 이루어짐






Controller

  • Data 처리 방법에 대한 논의, 중간 제어자 역할
    • client의 요청을 어떻게 처리할지에 대해 결정 후 Service에 전달
    • 실질적인 작업은 Service에서 진행
  • 중간 제어자 역할을 통해 서비스의 유지 보수성 증가 시킨다
  • 사용자의 요청을 받아 적합한 model 영역의 biz를 호출하고 view를 선택해 적절한 결과 보여줌
  • 결과 View에 전달
  • 방법
    1. @Controller
      • View 반환 주목적으로 전통적인 방식
    2. @RestController
      • JSON,XML 형태로 객체 데이터 변환 목적
      • @Controller + @ResponseBody
  • Request, Response는 모두 Controller에서 사용하는 작업
    • Service의 경우는 request, response 몰르는 상태에서 특정 비즈니스 로직을 운영

Service

  • Controller로 부터 받은 요청에 일치하는 작업을 Data access(DAO, Repository)에 요청하는 메서드
  • DAO, Repository에 Data 요청
  • DAO, Repository는 DB에 직접 접근





Dao

  • Data Access 프로세스 운영
  • DB를 이용하여 데이터를 검색, 추가, 수정, 삭제 로직을 전담하는 객체(model)
    • JDBC api와 sql 문장으로 구현
    • 데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용
    • 사용자는 interface를 DAO에 던지고 이 interface를 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환

Service <=> Data Access

  • 유사하다 볼 수 있지만 Service의 경우는 비즈니스 로직(프로그램 운영관련 알고리즘), Data Access(DAO, Repository)는 말 그대로 DB 접근 로직 운영

Data Access 관련

  • DAO, Repository, Mapper 등
  • DB에 직접적으로 접근하는 객체로 sql query와 관련이 깊다

Controller <-> Service 유지 보수와 관련해

  • Controller와 Service가 분리되어 있지 않은 경우에 Controller가 Client에 따라 여러 개로 분리되며 Client1, Client2가 모두 A작업을 한다했을 때 Controller(Client1) -> A, Controller(Client2) -> A처럼 동일한 메서드가 중복되는 현상 발생
  • 분리되어 있다면 Controller는 중복되는 현상 막을 수 있다






MVC Logic 과정

  • VIEW => CONTROLLER(호출 역할) => SERVICE(Logic의 대한 트랜잭션 처리) => DAO(DB와 직접적인 소통) => SERVICE => CONTROLLER => VIEW => CLIENT






ref

0개의 댓글