프레임워크와 라이브러리의 차이를 대략적으로만 알고 있지만 정리를 다시 하기 위하여 다루어 보려고 합니다.
📌 프레임워크 (Framework)
✔️ 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
- 프레임워크는 뼈대나 기반구조를 뜻하는데, 앱 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도 뼈대(구조)를 제공해준다.
- 그러므로 뼈대 위에 프로그래머가 코드를 작성하여 Applicatioln을 완성시켜야 한다.
- 뼈대를 제공해 주기 때문에 객체 지향 개발을 하면서 일관성 부족 등의 문제를 해결해준다.
📌 라이브러리 (Library)
✔️ 단순 활용이 가능한 도구들의 집합
- 라이브러리는 특정 기능에 대한 도구 혹은 함수들을 모은 집합이다. 즉, 프로그래머가 개발하는데 필요한 것들을 모아둔 것을 말한다.
📌 제어의 역전 (Inversion of Control)
✔️ 제어의 역전이란 어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경써야 할 것들을 줄이는 전략이다.
- 프레임워크와 라이브러리의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이이다.
- 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며 프로그래머가 그 안에 필요한 코드를 작성한다.
- 라이브러리는 사용자가 흐름에 대한 제어를 하며 필요한 상황에 가져다 쓴다.
- 즉, 프레임워크에는 제어의 역전(IoC)이 적용되어있다.
- 위 그림을 해석해보면, 사용자가 라이브러리를 호출하여 사용하므로 사용자가 제어의 권한을 가지고있다는 것을 의미한다.
- 반면, 프레임워크는 사용자가 작성한 코드를 호출하므로 제어의 권한이 프레임워크에 있다는 것을 의미한다. 이를 제어의 역전이 일어났다고 말한다.
Reference