📚 라이브러리
프로그래밍에 사용할 수 있게 미리 만들어져 있는 함수나 변수들의 묶음. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미한다.
소프트웨어를 개발할 때, 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 구성 데이터, 문서, 도움말 자료, 메세지 틀, 미리 작성된 코드, 서브루틴, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다. 미리 컴파일된 오브젝트(목적 코드 object code)파일 형태로 존재하며 컴파일 과정(링킹 과정)에서 링킹되어 실행 가능한 프로그램을 이룬다.
※ *.lib라고 무조건 정적 라이브러리는 아니다.(암시적 링킹)
⌨️ API (Application Programming interface)
프로그램이나 서비스간에 데이터를 교환하고 기능을 공유하기 위한 인터페이스이다. 소프트웨어 컴포넌트(독립된 기능을 수행하는 모듈)들이 상호 작용하는 방법을 정의한 규약이나 명세서이다.
+ REST API (Representational State Transfer)
일종의 Architecture(서비스의 동작 원리, 설계도)이며, 웹을 위한 네트워크 기반 아키텍쳐라 할 수 있다.
REST API를 구성하는 요소
1. 자원(Resource) : URL을 이용하여 자원을 표현한다.
2. 행위(Verb) : HTTP 프로토콜의 Method로 행위를 표현한다.
3. 표현(Representation oof Resource) : 응답 JSON, XML 등의 형태로 나타낸다.
존재하는 많은 자원들 중 URL을 부여하여 자원을 명시하고(동사를 사용하지 않는다) ==> 1.Resource
HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD를 통해 ==> 2. Verb
데이터를 처리하는 것 ==> 3. Representation of Resource 이라고 설명할 수 있다.
API와 라이브러리 비교
API는 특정 서비스나 기능에 대한 요청을 전송하고 응답을 받는 방식으로 작동한다. 개발자는 API 호출을 통해 외부 서비스에 접근하고, 해당 서비스의 기능을 사용할 수 있다.
라이브러리는 프로그램에 직접 포함되어 실행된다. 개발자는 라이브러리의 함수, 클래스, 객체 등을 호출하여 프로그램의 기능을 구현한다.
✅ 둘이 햇갈리는 점
외부 컴포넌트의 경우 라이브러리 형태로 제공 받는 경우가 많아서 라이브러리와 API뜻을 햇갈려하는 경우가 많다. 하지만 라이브러리는 컴포넌트 자체를 뜻하며 API는 이 컴포넌트를 활용하기 위한 규약에 따른 매개체이기 때문에 이 두가지는 엄연히 다르다.
🚗 프레임워크 (Framework)
뼈대나 기반구조라는 뜻. 응용프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경이다. 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주는 또는 기반이 되는 역할을 한다. 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합이다.
라이브러리와 프레임워크의 차이
일반적으로 프레임워크 안에 라이브러리가 포함되는 경우가 많다. SW 프레임워크는 보통 어떤 거대한 응용프로그램 등을 만들기 위한 "틀"인 경우가 많은데, 이를 위해 미리 코딩된 코드 조각들은 거의 당연히 들어가 있다고 볼 수 있다. 이 "미리 코딩된 코드조각"들은 라이브러리에 해당된다고 볼 수 있다.
다만 라이브러리만 가져다 쓰는 경우는, 프로그램의 메인은 개발자가 직접 쓰고, 필요한 부분만 라이브러리로 가져와서 쓰는 형태인 반면, 프레임워크를 가져다 쓰는 경우, 그 프레임워크의 본디 목적과 다른 프로그램은 만들 수 없다.
프레임워크는 전체적인 흐름을 자체적으로 가지고 있어 프로그래머는 그 안에서 필요한 코드를 작성한다. 라이브러리는 개발자가 전체적인 흐름을 만들며 가져다 쓰는 것이라 할 수 있다.
🚉 플랫폼
디지털 공간에서 다양한 행위자들이 네트워크에 참여하여 서로 연결된 관계를 맺으며 가치를 만들어 내는 체계(system)를 말한다.
마이크로 소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다. CLR(Common Language Runtime)이라고 불리는 가상머신(VM)위에서 작동하는데, 프로그램의 실행 요청이 발생하면 CLR이 먼저 메모리에 적재되고, 이 CLR 위에서 프로그램이 실행되는 구조이다. 이 구조가 복잡해 보일 수 있지만 닷넷이 설치되어 있는 한, 사용자의 운영체제와 상관없이 프로그램을 실행할 수 있다는 점에서 획기적이고 강력한 개념이다. 서로 다른 컴퓨터 환경을 위해 프로그램의 코드를 다시 짜고, 또 각각의 환경이 변할 때마나 코드를 수정해야 하는 불편함을 해소했기 때문이다.
C#으로 프로그램을 작성하든 F#으로 작성하든 아니면 비주얼 베이직으로 작성하든 이것을 컴파일하면 기계어가 아닌, 마이크로소프트사의 중간 언어(MSIL)로 변환되는데, CLR은 바로 이 중간언어를 기계어로 번역하여 실행하는 것이다. 이 말은 곧 닷넷을 기반으로 하는 모든 언어는 동일한 '중간 언어'를 생성한다는 것이고, 때문에 복잡한 과정 없이 손쉽게 상호 호출을 할 수 있다.