본문 바로가기

Frame Work

Frame Work & Library

 

프레임 워크(Frame Work) ?

일정한 형태의 틀을 가지고 작업을 하는 것을 말합니다.이는 개발자가 어떤 프로그램을 만들고자 할 때 일정한 툴과 규칙이 있는 프로그램을 제공하면서 생산성과 품질을 높여주는 효과가 있으며 대표적인 프로그램들로는 Spring, Django, Ruby on Rails 등등 다양합니다. 

 

즉, 특정 프로그램을 개발하기 위한 여러 요소들과 매뉴얼인 룰을 제공하는 프로그램을 소프트웨어에서의 프레임 워크라고 할 수 있습니다. 

 

프레임워크는 결국 프로그램을 조금 더 쉽게 만들기 위한 목적으로 만들어졌으며 이와 공통된 목적으로 만들어진 개념인 라이브러리도 있습니다. 

 

라이브러리(Library) ?

프레임 워크가 일정한 형태의 틀과 규칙을 제공했다면 라이브러리는 단순히 프로그램에 사용할 어떤 기능에 대한 도구를 제공하는 도구들의 집합이라고 할 수 있습니다. 프로그램의 목적에 따라 다양한 도구들을 사용 할 수 있기 때문에 라이브러리의 종류는 어마어마하게 많이 존재합니다. 

 

 

프레임 워크와 라이브러리의 차이점 

 

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게/ 어디에 있는가 에 있습니다. 

 

즉, 어플리케이션의 Flow(흐름)를 누가 가지고 있는지에 따라 나뉩니다.

 

프레임워크는 전체적인 흐름을 스스로 쥐고 있으며 사용자는 그 안에서 필요한 코드를 넣습니다. 반면에 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다. 

 

다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임 워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있습니다. 

 

프레임 워크는 가져다가 사용하는 것이라고 보다는 거기에 들어가서 사용한다는 관점으로 접근 가능합니다.

 

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어합니다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용 할 뿐입니다. 

 

반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용 되는 것입니다. 보통 프레임워크 위에 개발한 클래스를 등록해두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식입니다. 

 

프레임워크에는 분명한 제어의 역전 개념이 적용되어 있어야 합니다. 그래서 애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.

 

※ 제어의 역전이란?

 

어떤 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘기면서 클라이언트 코드가 신경 써야할 것을 줄이는 전략입니다. 이러한 전략은 제어가 역전되었다는 표현으로 쓰기도 합니다.

 

일반적으로 라이브러리는 프로그래머가 작성하는 클라이언트 코드가 라이브러리의 메소드를 호출해서 사용하지만 프레임워크를 사용하면 그 특성에 의해 프레임워크의 메소드가 사용자의 코드를 호출 한다는 것입니다. 

 

프레임워크에서 제어를 역전시키는 방법으로 event, delegate에 나의 메소드를 등록 시키는 것입니다. 전달되는 인자와 반환 형식만 일치 한다면, 프레임워크 코드는 내가 작성한 객체와 타입을 고려하지 않습니다. 즉, 등록한 메소드만 감지하여 실행 invoke 하는 것입니다. 

 

다른 방법으로는 프레임워크에 정의 되어 있는 인터페이스(interface), 추상타입(abtract)을 나의 코드에서 구현, 상속 한 후에 프레임워크에 넘겨주는 것입니다. 프레임워크는 인터페이스와 추상을 알고 있기 때문에 내가 하려는 작업을 처리할 수 있게 됩니다. 이를 객체를 프레임 워크에 주입하는 것, 의존성 주입(DI : Dependency Injection) 이라고 합니다. 

 

 

참고 사이트 

https://engkimbs.tistory.com/673

 

프레임워크(Framework)? 라이브러리(Library)? 둘의 차이점? 이것만 알면 됩니다.

막 프로그래밍을 배우기 시작했거나 프로그래밍을 모르는 분들에게 저 두 개념은 아주 헷갈리는 개념일 것입니다. 사실 어느정도 숙달된 프로그래머라도 일반인에게 저 두 개념을 쉽고 확실하

engkimbs.tistory.com

https://webclub.tistory.com/458

 

프레임워크와 라이브러리의 차이점

Framework Vs Library 프레임워크와 라이브러리의 정확한 차이점은 무엇일까요? 대중 알것 같지만 정확히 어떠한 차이점이 있는지 모르고 있는 경우가 많을지도 모릅니다. 프레임워크는 단지 미리 만

webclub.tistory.com