Framework
프레임워크는 뼈대를 제공하는것이다. 앱 개발시 코드, 알고리즘, 디비연동, 화면 이동의 룰 등 과 같이 기능들을 위해 뼈대를 제공하고 프로그래머는 제공된 뼈대 위에서 코드를 작성한다.
Framework는 통합성, 일관성 부족등의 문제를 해결할 방법중 하나라고 할 수 있다.
프레임워크의 특징
- 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어있다.
- 컴포넌트들을 재사용이 가능하다.
- 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
- 제어의 역전(Inversion Of Control)이 적용 되어 있다.
Library
라이브러리는 활용가능한 코드의 집약체라고 할 수 있다. 흔히들 cocoapods으로 라이브러리를 임포트 하고 라이브러리에 작성된 코드를 사용하듯이 바로 그 느낌이다.
Framework와 Library의 차이
애플리케이션의 제어 흐름에 대한 주도성이 어디에 있냐에 따라 다르다.
프레임워크는 전체적인 흐름을 스스로 갖고 있으며 사용자는 그 안에서 코드를 작성하는 반면,
라이브러리는 사용자가 주도성을 갖고 라이브러리에서 필요한 부분을 사용하는것이다.
제어의 역전(Inversion Of Control)이란?
일반적인 프로그램은 사용자가 시작점(Main함수와 같은)을 만들고 애플리케이션 흐름을 사용자가 주도권을 갖고 조작할 수 있다.
그러나 프레임워크의 경우 제어의 역전이 적용되어 있다. 애플리케이션의 흐름을 프레임워크가 갖고 사용자는 프레임워크 안에 코드를 작성해서 개발을 한다. 사용자가 가질 제어의 권한을 프레임워크가 가지는 것이다.
일반적으로 사용자가 갖고 있어야할 제어 권한이 프레임워크에게 넘어갔기 때문에 우린 이를 제어의 역전이라고 한다.
'CS' 카테고리의 다른 글
프로세스 와 스레드 (0) | 2021.10.13 |
---|