ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Framework와 Library의 차이점은 누가 누구를 호출(call)하느냐이다
    웹/기본 2016. 11. 11. 13:03

    이 글로 알 수 있는 것

    • 프레임워크와 라이브러리의 정확한 차이점을 알 수 있다.

    이 글을 쓰는 이유

    • 프레임워크와 라이브러리는 다르다는 것은 알고 있었으나 그 차이점을 제대로 알지 못해서, 서너번 검색해 보았으나 여전히 그 둘을 구분하는 것은 애매할 뿐이었다.
    • 프레임워크와 라이브러리의 차이점을 명확하게 알려주는 유투브를 보고 그 내용을 정리한다.

    프레임워크 vs 라이브러리

    • 프레임워크란 라이브러리들을 모아논 것이다? (a framework just being a collection of libraries?)
      • No! 라이브러리를 아예 쓰지 않거나 의존하지 않는 프레임워크도 있기 때문이다.
    • 프레임워크와 라이브러리를 구별하는 것은 누가 누구를 호출하느냐(who calls who)의 차이이다.

      • 프레임워크에서는, 프레임워크 코드당신 코드를 호출하고 (In a framework, the framework code calls on your code.)
      • 라이브러리에서는, 당신 코드라이브러리를 호출한다. (In a library, it is your code that makes calls to the library.)
    • 위 관계는 서버와 클라이언트 사이의 관계와 유사하게 생각할 수 있다.
      • 전통적인 서버와 클라이언트 관계에서, 클라이언트는 서버에게 요청하고, 서버는 클라이언트에게 응답한다. (The client makes request to the server, server responds to the client.)
      • PHP 라이브러리인 curl에서, 당신이 curl 함수들 중 하나를 사용할 때,
        • curl 라이브러리의 함수를 호출하는 것은 당신의 PHP 코드이다.
        • 당신의 코드는 호출자(caller)이고, 라이브러리 코드는 호출된 자(callee)가 된다.
      • 당신이 PHP 프레임워크인 larval를 사용할 때, 이 관계는 역전된다.
        • 프레임워크 위에 썼던 당신의 앱 코드를 호출하는 것은 프레임워크 코드이다. (It is the framework code that makes calls to your application code that you have written in the framework.)
    • Inversion of Control
      • 위 디자인은 IoC로 일반적으로 알려져있다.

      • 호출자와 호출된자 관계는 기능 또는 프로그램의 행동을 정의하기 위해 호출자가 호출된 자에 따라 달렸을때 역전된다. (Caller callee relationship becomes inverted when the caller depends on the callee to define the functionality or behavior of the program.)
      • 그리고 프로그램에서 통제 흐름을 정의하기 위해 호출된 자는 호출자에 따라 달렸다. (And the callee depends on the caller to define the flow of control in the program.)
    • JavaScript 프레임워크인 jquery로, 다큐먼트가 준비 상태(document on ready)일 때 당신이 무엇인가를 하려 할 때를 생각해 보자.
      • 다큐먼트가 준비 상태일 때 당신이 정의했던 콜백을 호출하는 것은 프레임워크이다.

      • 이것은 프레임워크가 담당하는 프레임워크의 통제부분의 흐름이다.

        • this is the flow of control portion /of the framework /which is now responsible for.
    • 전통적인 PHP MVC 프레임워크도 마찬가지이다.

      • 들어오는 모든 요청을 받아들이고 사용자 정의를 통한 당신의 기본적인 앱 코드로 그 정보를 전달하는 프론트 컨트롤러를 정의하는 것은 프레임워크이다. (It is the framework /that defines the front controller /which takes on all of the incoming requests /and hands down this information /to your underlying application code through/ some user defined controller.)
      • 그러면 프레임워크는 앱의 통제 흐름 대부분을 유지하면서 응답을 수집한다. 하지만 앱 코드로의 행동을 정의하는 것은 포기한다. (This then collects the response /mostly maintaining the control flow over the application /but relinquishing the definition of behavior /to the application code.)
    • 프레임워크와 라이브러리의 차이점은 control에 관한 것이다. 통제의 흐름(flow of control)이 그 차이이다.
      • 프레임워크는 당신의 애플리케이션의 흐름을 통제하고, 라이브러리는 그러지 않는다.


Designed by Tistory.