MVC? Model, View, Controller
뭔가가 거대해지고 복잡해질때는 특정 기준으로 분리, 모듈화해서 접근하는 것!
웹사이트를 비롯한 소프트웨어에는 MVC란 접근법이 많이 사용된다.
Model : 데이터와 관련된 부분
View : 사용자에게 보여지는 부분 (웹의 경우 html이랑 css로 나타내는 요소)
Controller : Model과 View를 이어주는/제어하는 프로그래밍 부분
MVC 패턴?
1. Model은 Controller와 View에 의존하지 않아야 한다. (Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다.)
2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안된다. (View 내부에 Model의 코드만 있을 수 있고, Controller의 코드가 있으면 안된다.)
3. View와 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여줘야 하는 데이터에 대해서만 받아야한다.
4. Controller는 Model과 View에 의존해도 된다. (Controller 내부에는 Model과 View의 코드가 있을 수 있다.)
5. View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야한다.
MVC 패턴 왜 사용할까?
- 도메인의 재사용 > 확장성 증가
- 중복코딩 제거
- 각 요소들에 집중 (분업이 잘 된다)
문제점? 비대한 컨트롤러 , 컨트롤러의 중복 로직, DB
> 컨트롤러와 뷰의 강한 결합으로 인해 뷰가 조금만 수정되도 컨트롤러를 모두 고쳐야하는 불편함이 생긴다.
대안..?
MVP : Presenter를 사용해 뷰의 인터페이스와 결합
MVVM : Veiw가 ViewModel을 구독
>>>>> 이부분은 추가로 더 공부해보자.
프레임워크와 라이브러리
두 용어를 구별하는 것은 "누가 누구를 호출하느냐"이다.
프레임워크
개발할 때 빈번히 쓰여지는 범용 기능을 한꺼번에 제공해 개발 효율의 향상을 목표로하는 소프트웨어 환경. 즉, 프로그램에 기본이 되는 뼈대와 틀.
1) 공통적인 개발 환경을 제공한다.
2) 개발할 수 있는 범위가 정해져 있다.
3) 제어의 역전 IoC(Inversion of Controll)이 발생한다?
(프레임워크에선 개발자가 아닌 프레임워크가 소프트웨어의 흐름을 제어한다. 즉, 소프트웨어 제어권이 개발자에서 프레임워크로 역전된 것.)
+ 검색해보니 Spring 프레임워크와 관련된 IoC 외에도 DI (Dependency Injection)의존성 주입에 관련된 이야기가 많다.
인기 MVC 프레임워크
언어
|
프레임워크
|
사이트
|
Java
|
Spring
|
|
Python
|
django
|
|
JavaScript
|
Node JS
Vue JS
Angular JS
Express
|
|
C#
|
ASP.NET
|
|
Ruby
|
Ruby on Rails
|
|
PHP
|
Laravel
|
라이브러리
: 개발자가 사용할 수 있는 *API들을 종류나 목적에 따라 나누어 정의한 API 묶음을 말한다. 재사용 가능한 코드의 집합! 시스템에 기본적으로 설치된 기본 라이브러리와 제조사나 외부 메이커에 의해 만들어지거나 스스로 만들 수 있는 확장 라이브러리로 나뉜다.
1) 개발하는 데 필요한 것들을 모아둔 일정의 저장소.
2) 필요할 때 목적에 맞는 라이브러리를 호출해 사용한다.
3) 흐름을 제어한다?(라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있다)
대표적인 라이브러리
js의 라이브러리 : jQuery, Bootstrap ...
java의 라이브러리 : Apache commons library ...
python의 라이브러리 : numpy, pandas ...
*API
: 라이브러리를 제어하기 위해 운영체제와 프로그램을 이어주는 역할
1) 다른 프로그램과 연결해주는 다리 역할을 한다.
2) 구현이 아닌 제어를 담당한다.
3) API를 조합해 원하는 프로그램을 만들 수 있다.
프레임워크와 라이브러리 주요 차이점
여러 회사, 혹은 개인들이 MVC 구조의 기본 설계가 갖춰진 상태인 MVC 웹 프레임워크를 제공한다.
'프레임워크'는 남이 이미 짜놓은 코드란 점에서 '라이브러리'와도 비슷한데 '라이브러리'가 각각 개별적인 기능들.
즉, 문짝이나 욕조 등의 부속품이라고 한다면, '프레임워크'는 이것들이 연결되어 기초적인 제품 형태를 갖춘 상태. 즉, 집의 구조 자체를 말한다.
내가 뭔가를 가져다 쓴다는 느낌이 들면 라이브러리, 내가 무언가의 틀 안에서 작업한다는 느낌이 들면 프레임워크라 생각하면 간단하다.
참고자료
[10분 테코톡] 우아한테크코스 제리의 MVC패턴 : https://www.youtube.com/watch?v=ogaXW6KPc8I
[10분 테코톡] 우아한테크코스 욘의 프레임워크 vs라이브러리 vs AP I: https://youtu.be/_j4u4ftWwhQ
[interviewbit] Framework vs Library: Full Comparison : https://www.interviewbit.com/blog/framework-vs-library/
[castingn] 프레임워크(framework)란? : https://www.castingn.com/sourcing/kkultip_detail/110
[yalco] 얄코 MVC 웹 프레임워크가 뭔가요? : https://www.yalco.kr/12_mvc_framework/
'IT > 프로그래밍' 카테고리의 다른 글
MySQL 데이터베이스에 SQL 파일 가져오기 (0) | 2025.02.02 |
---|---|
개인정보처리방침 생성 웹사이트 (0) | 2024.02.22 |
개인정보 정책 (0) | 2024.02.22 |
스파르타 무료코딩강의 정리 (0) | 2022.07.08 |
댓글