ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ model2 ] 모델2 개발방식, MVC 패턴
    PROGRAMMING/model2 2022. 6. 30. 23:50

    하루입니다.

     


     

    오늘 적을 것

    모델1 개발방식

    모델2 개발방식

    MVC가 뭔가요

     

     

     

    !! 아직 배우는 중이라 설명이 미흡한 부분 혹은 오개념이 있을 수 있습니다. 해당 부분에 대한 피드백은 언제든 환영입니다. !!

     

     

    1. MVC가 뭔가요

    Model, View, Controller입니다.

    Model : 로직 수행. DB와 관련있다.우리로 따지면 자바로 만들어진 Dao 이런 것들 아닐까?

    View: 사용자가 보는 화면. 데이터를 받아서 보여주는 JSP 페이지. 

    Controller: Model과 View를 연결시켜주는 역할. 

     

    구글링 유튜블링(?) 했을 때 공통적으로 말하는 부분은 1. model과 view는 서로 직접 데이터를 주고받는 게 아니다. 2. controller가 그 역할을 한다. 라고 말했다. 이 부분이 M과 V는 서로의 존재를 모르지만 C는 M과 V의 존재를 안다는 말과 상통하는 듯. 

     

     

     

    2. Model1

    모델1 개발방식이다. 우리가 세미프로젝트를 끝내기 전까지 한 모든 코딩의 형태가 이러했다. 세미프로젝트도 이 형태오 진행했고.

     

     사용자가 요청을 보내면, jsp에서는 사용자의 요청처리 - 업무로직, 데이터 획득, 표현까지 세 가지 일을 맡아서 한다. controller와 view의 역할을 하는 것이다. DB만 안 다룰 뿐 for문이나 dao 소환도 한다.

     java에서는 업무로직을 수행하고 DB에 엑세스한다. model의 역할이다.

     

     한마디로 JSP가 C와 V의 역할을 동시에 하고, Java는 Model의 역할을 하는 것이다.

     

    장점

    • 구조가 단순하다.
    • 개발 속도가 빠르다.
    • 개발 초기에 복잡한 설정을 할 필요가 없다.
    • 그래서 소규모 프로젝트에 적당하다.

     

    단점

    • 디자인코드와 자바코드가 섞여있다. (디자이너와 개발자가 분업 비용이)
    • 유지보수가 어렵다.
    • 코드가 복잡하다.

     

     

     

    Model2 

    세미프로젝트 이후로 배우게 될 개발방식이다. 모델1을 보완해서 만든 개발방식이라고 한다.

     

    1. 클라이언트가 요청한다.
    2. 프론트컨트롤러(C)가 요청을 받는다.
    3. 적절한 컨트롤러를 실행하고, 해당 컨트롤러(C)는 업무로직을 처리한다.
    4. 업무로직을 처리하면 데이터를 요청객체에 담아 프론트 컨트롤러로 보낸다.
    5. 프론트컨트롤러는 적절한 JSP로 요청객체를 이동시킨다. 왜 가능하냐면 내부이동에서는 요청객체를 공유하기 때문이다. 
    6. 이제 JSP에서는 요청객체에서 데이터 꺼내기, 디자인만 하면 된다. 

    앞서 말했지만 모델에서 뷰로 바로 데이터가 가는 게 아니다. 모델은 DB를 다루고, 뷰는 DB에서 데이터를 꺼내 쓰는 거임. 서로의 존재를 몰라야 한다.

     

    장점

    • 디자인과 로직 요소가 분리된다. (협업에 용이하다.)
    • 유지보수에 용이하다.
    • JSP페이지에서 <% %> <%= %> 이런 거 안 써도 된다.

     

    단점

    • 초기 개발할 때 시간과 복잡도가 올라간다.
    • 구조가 복잡해진다.

     

    직접 해보니까 구조는 복잡해지지만 페이지 각각은 복잡도가 확연히 줄었다는 걸 느꼈다. 구조도 하다 보면 별로 복잡하다고 안 느낄 듯. 

     

     


     

    ~ 비교 ~

    모댈2 / 모델1

    캡처하니까 잘 안 보이네요 ... 왼쪽은 MODEL2, 오른쪽은 MODEL1 방식임.

     

    일단 모델1에 있던 수많은 황금빛 <% %> <%= %>들이 사라짐. for문 dao 이런 것도 사라짐. 

     

    ${   } 이걸 EL표현식이라고 하던데, 잘 연결된 C와 M만 있다면 V에서는 ${   }와 원하는 것의 name을 통해 뭐든(?) 얻을 수 있다. 이걸 보면 확실히 페이지 자체는 간결해졌죠?

     

    하지만 새로운 방식 적응 / 아직 스프링 사용 전이라 FrontController 만들어 사용 / Controller, Model, View 분업체계에 익숙해져야 함 / 스프링 혹은 다른 툴 배우기 등의 또다른 '복잡함'도 분명 있다고 생각함.

     

    그래도 많이 기대가 됩니다 ... 이 방식으로는 또 어떤 걸 어떤 방식으로 만들 수 있을지! 분명 파이널프젝 시작하면 세미프젝과 비슷한 경험을 한 번을 할텐데, 그 땐 어떤 다른 방식으로 개발하고 구현하고 해결하게 될 지가 궁금합니당 ㅎㅎ.

     

     


     

     

    감사합니다죤하루되세요피드백환영

     

     

     

    'PROGRAMMING > model2' 카테고리의 다른 글

    [ EL, JSTL ]  (0) 2022.07.04
Designed by Tistory.