"MVC패턴을 적용하였고, 3tier구조로 되어있는 프레임워크를 갖추고 있다"
이게 무슨말인지 배워보자!!
아키텍쳐
Software Architecture
: 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고, 스프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙
Layering Model: n-tier Architecture(Multi-tier)
: [ 클라이언트 - 비지니스로직 - 데이터베이스시스템 ] 을 완전 분리한 '클라이언트-서버'시스템의 일종
ex. 데이터 요구 서비스에 있는 미들웨어
- n-tier라고 하지만, 보통 3-tier 아키텍쳐를 쓴다
디자인 패턴
- 물리적으로 구분할 수 없는 설계를 문서화 하면서 고안된 방법
- 프로그램의 규모가 커질수록 다양한 문제를 겪게 되는데, 이 문제들을 효율적으로 해결할 수 있게 하기위해 유형별로 패턴화 한 것!
3-tier vs MVC
3-tier 'Architecture'
: [ 프레젠테이션 계층 - 비지니스 계층 - 데이터 계층 ] 을 각각 '물리적으로 독립된'모듈로 개발하고 유지하는 구조. 각 계층(레이어)는 접촉 계층과의 통신만 하면 된다. 무조건 비지니스 계층을 통해야 한다는 말!
- 프레젠테이션 계층 (Presentation Layer)
- 응용 프로그램의 최상위에 위치하고있으며, 서로 다른층에 있는 데이터 등과 커뮤니케이션 함
- 비지니스 계층/ 애플리케이션 계층 (Business Layer)
- '비지니스 로직' '트랜잭션 계층' 이라고도 불림
- 클라이언트 요청에 대해 마치 '서버처럼 행동'함 + 데이터 계층에 대해선 '클라이언트처럼 행동'함
- 데이터 계층 (Data Access Layer)
- 데이터베이스 + 데이터베이스에 액세스해서 읽거나 쓰는 프로그
MVC 'pattern'
: [ 모델 - 뷰 - 컨트롤러 ]로 분리된 애플리케이션. '물리적으로 구분할 수 없음'.
[ view -> controller ]: 사용자의 요청을 view에서 받아 controller로 전달
[ controller -> model ]: controller에서 model단에 데이터 처리 요청
[ model -> view ]: 처리 결과를 view로 보여줌
-> 트라이앵글 패턴
- 모델 (Model)
- 어떤 동작을 수행하는 코드
- 표시형식에 의존하지 않음 (사용자가 이것을 볼 수 없음)
- public함수로만 이루어짐 (애플리케이션의 모든 코드에서 사용할 수 있어야 함)
- 함수는 사용자의 query에 대해 상태 정보를 제공하거나 그 상태를 수정함
- 뷰 (View)
- 모델에게 query하여 모델로부터 값을 가져와 사용자에게 보여줌
- MVC에서 모델은 여러 뷰를 가질 수 있음
- 컨트롤러 (Controller)
- 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다
- 컨트롤러는 모델의 mutator함수를 호출하여 상태를 바꾼다
- 모델의 상태가 바뀔 때, 모델은 등록된 뷰에 자신의 상태가 바뀌었다고 알린다
3tier와 MVC의 관계
- 3계층이 물리적으로 구분되어 있고, 이 안에 MVC가 통신 중
ref
3티어 = 물리적 개념, mvc는 3티어의 논리적 개념 맞나요?
개발자끼리 커뮤니케이션할 떄는 거의 동의어로 봐도 되나요?