본문 바로가기
카테고리 없음

라이브러리(Library), 프레임워크(Framework), API, 엔진(Engine)

by Luyin 2013. 9. 27.

1. 프레임워크
사용자가 프로그래밍할수있도록 만든 틀

프로그래밍은 이미 기본틀이있고 
그아래에서 기본틀을 완성시켜가는 방식의 프로그래밍
그리고 실행은 기본틀을 실행시킴

# 예
MFC, SPRING, ibatiS 등
MFC가 프로그램전체를 짜는게아니라. 기본적인게 다되어있고
필요한부분만 구현하는구동되는방식임.

#관계
- 사용자는 틀을 완성시킴
- 사용자는 모듈단위의 프로그램을 만들어야함.
- 실행은 자신이 만든 프로그램모듈을 실행할수없고 틀자체를 실행해야함.
- SPRING등은 API로 구현된 사용자 프로그래밍부분을 틀에 끼워맞춰 엔진이 틀을 실행하여 구동함.
- 프레임워크=틀+라이브러리

----------------------------------------------------------------------


2. API
사용자가 직접 가져다 쓸수있는 자원,
즉, 사용자가 직접 코딩하는부분은 모두 API라고 볼수있음


# 관계 :
- API는 엔진과 매칭(매핑)될수있지만 독립해서 쓸수있음.
- API는 해당 프로젝트에서 사용하기위해 사용자가 직접 제작할수있음(method)
- API의 실체는 객체지향에서는 class단위를 의미하고
비객체지향에서는 함수단위를 의미함.
- c언어의 printf는 api임

# 범위
- 사용자는 API로 메인을 제작할수있다.
- 사용자는 API로 모듈을 제작할수있음.
- 사용자는 API로 엔진을 제작할수있다.
- 사용자는 API로 프레임워크에서 내용을 완성시킬수있다.
- 사용자는 API를 통해서 엔진을 제어하거나 자원을 활용할수있음.( ex: dbms를 콘솔로 접근하는경우)
물론 printf자체가 스스로 자신이 할수있는 기능을 다한다면 api와 엔진을 포함하는 라이브러리라고 볼수있겠지만.
만약 printf가 다른 자원에 의존을 하여 수행한다면 엔진이라고 볼수는 없음.

----------------------------------------------------------------------

3. 라이브러리

#정의
API와 엔진을 포함하는 개념

# 관계 :
라이브러리 = API+엔진
----------------------------------------------------------------------

4. 엔진

사용자가 직접 가져다 쓸수없는 자원
api를 통해서만 쓸수있음
사용자프로그램부분을 실행시켜주는 역할을 함.
어떤환경을 제공함.
엔진은 주로 혼자서 쓰이지않고 사용자가 제어할수있도록 API나 명령어를 제공함. 

#관계
- API들이 모여져서 구성되어있다.
- API들은 엔진에 속한다.

#예
ex) 3d엔진 : 3d로 보여질수있도록 환경을 제공하고 사용자가 환경에서 프로그래밍할수있도록 aPI를 제공함.
ex) jre : 자바환경에서 실행해주도록 환경을 제공(가비지컬렉터나, 바이너리엔진)하고
사용자가 환경에서 프로그래밍 할수있도록 API를 제공함.
ex) DBMS : DB엔진을 통해 DB를 제어하고 DBMS를 통해서 사용자의 명령을 받음.