프레임 워크 와 라이브러리 의 차이점은 무엇입니까 ?
나는 항상 라이브러리를 특정 문제 또는 특정 응용 프로그램 개발 영역 (예 : 데이터베이스 액세스)을 해결하는 데 중점을 둔 일련의 객체 및 함수로 생각했습니다. 반면에 특정 방법론 (예 : MVC)을 중심으로하고 응용 프로그램 개발의 모든 영역을 다루는 라이브러리 모음으로서의 프레임 워크.
답변
실제로 이러한 용어는 사용되는 컨텍스트에 따라 많은 다른 의미를 가질 수 있습니다.
예를 들어, Mac OS X에서 프레임 워크는 번들로 묶인 라이브러리 일뿐입니다. 번들 안에 실제 동적 라이브러리 (libWhatever.dylib)가 있습니다. Bare 라이브러리와 Mac의 프레임 워크의 차이점은 프레임 워크에 여러 버전의 라이브러리가 포함될 수 있다는 것입니다. 여기에는 추가 리소스 (이미지, 지역화 된 문자열, XML 데이터 파일, UI 개체 등)가 포함될 수 있으며 프레임 워크가 공개되지 않은 경우 일반적으로 라이브러리를 사용하는 데 필요한 .h 파일이 포함됩니다.
따라서 단일 패키지 내에 응용 프로그램에서 라이브러리를 사용해야하는 모든 것이 있습니다 (.h 파일이없는 C / C ++ / Objective-C 라이브러리는 라이브러리 설명서에 따라 직접 작성하지 않는 한 매우 쓸모가 없습니다). 많은 파일 이동 (Mac 번들은 Unix 레벨의 디렉토리 일 뿐이지 만 UI는 JAR 파일이 Java에 JAR 파일이 있고 클릭하면 일반적으로 표시되지 않는 것처럼 단일 파일처럼 취급합니다 내용을 표시하도록 명시 적으로 선택하지 않는 한 내부 내용).
Wikipedia는 프레임 워크를 “버즈 워드”라고 부릅니다. 소프트웨어 프레임 워크를 다음과 같이 정의합니다.
소프트웨어 프레임 워크는 소프트웨어 시스템 (또는 서브 시스템)에 재사용 가능한 디자인입니다. 소프트웨어 프레임 워크에는 지원 프로젝트, 코드 라이브러리, 스크립팅 언어 또는 소프트웨어 프로젝트의 여러 구성 요소를 함께 개발하고 접착하는 데 도움이되는 기타 소프트웨어가 포함될 수 있습니다. 프레임 워크의 다양한 부분이 API를 통해 노출 될 수 있습니다.
그래서 저는 도서관이 바로 “도서관”이라고 말하고 싶습니다. 객체 / 기능 / 메소드 (언어에 따라 다름)와 응용 프로그램이 “링크”로되어있어 객체 / 기능 / 메소드를 사용할 수 있습니다. 기본적으로 재사용 가능한 코드가 포함 된 파일이며 일반적으로 여러 응용 프로그램간에 공유 할 수 있습니다 (동일한 코드를 반복해서 쓸 필요는 없음).
프레임 워크는 응용 프로그램 개발에 사용하는 모든 것이 될 수 있습니다. 라이브러리, 많은 라이브러리 모음, 스크립트 모음 또는 응용 프로그램을 만드는 데 필요한 소프트웨어가 될 수 있습니다. 프레임 워크는 매우 모호한 용어입니다.
다음은 ” Library vs. Framework ” 주제에 관한 기사 입니다. 나는 개인적으로이 기사가 논쟁의 여지가 있다고 생각합니다. 그가 말한 것은 잘못이 아니지만 프레임 워크의 여러 정의 중 하나를 골라 라이브러리의 고전적인 정의와 비교합니다. 예를 들어 그는 서브 클래 싱을위한 프레임 워크가 필요하다고 말합니다. 정말? 라이브러리에 객체를 정의하고 객체에 링크하여 코드에서 하위 클래스로 만들 수 있습니다. 나는 그것을 위해 “프레임 워크”가 어떻게 필요한지 알지 못한다. 어떤면에서 그는 오늘날 프레임 워크라는 용어가 어떻게 사용되는지 설명합니다. 내가 전에 말했듯이 그것은 단지 과장된 말입니다. 일부 회사는 일반 라이브러리 (클래식 라이브러리의 의미에서) 만 공개하고 더 멋진 소리로 “프레임 워크”라고 부릅니다.
답변
라이브러리 를 수행 특정, 잘 정의 된 작업.
프레임 워크는 응용 프로그램이 골격을 작성하여 작업의 “고기”를 정의하는 골격이다. 골격에는 여전히 부품을 연결하는 코드가 있지만 가장 중요한 작업은 응용 프로그램에서 수행됩니다.
라이브러리의 예 : 네트워크 프로토콜, 압축, 이미지 조작, 문자열 유틸리티, 정규식 평가, 수학. 작업은 독립적입니다.
프레임 워크의 예 : 웹 애플리케이션 시스템, 플러그인 관리자, GUI 시스템. 프레임 워크는 개념을 정의하지만 응용 프로그램은 최종 사용자가 관심을 갖는 기본 기능을 정의합니다.
답변
가장 큰 차이점은 프레임 워크가 ” 할리우드 원칙 “을 따르는 것입니다. 즉 “전화하지 마십시오. 전화하겠습니다.”
Martin Fowler 에 따르면 :
라이브러리는 기본적으로 당신이 호출 할 수있는 함수의 집합이며, 요즘은 일반적으로 클래스로 구성. 각 호출은 일부 작업을 수행하고 클라이언트에게 제어권을 반환합니다.
프레임 워크 에 내장 된 더 행동 몇 가지 추상적 인 디자인을 구현한다. 당신은 서브 클래스로 또는 자신의 클래스에 연결하여 두 프레임 워크의 다양한 장소에 당신의 행동을 삽입 할 필요가 그것을 사용하기 위해. 그런 다음 프레임 워크의 코드는이 시점에서 코드를 호출합니다.
답변
도서관에 전화하십시오.
프레임 워크가 전화합니다.
図 書館 助 け
足 場 が 痛 い
多 く の 涙
답변
도서관:
그것은 단지이다 콜렉션 의 루틴 (함수 프로그래밍) 또는 클래스 정의 (객체 지향 프로그래밍). 그 이유는 단순히 코드 재사용입니다 . 즉, 이미 다른 개발자가 작성한 코드를 가져옵니다. 클래스 또는 루틴은 일반적으로 도메인 특정 영역에서 특정 작업을 정의 합니다 . 예를 들어, 개발자가 알고리즘 작동 방식의 구현을 다시 실행하지 않고도 함수를 호출 할 수있는 일부 수학 라이브러리가 있습니다.
뼈대:
프레임 워크에는 모든 제어 흐름 이 이미 있으며 코드로 채워야 할 미리 정의 된 흰 반점 이 많이 있습니다 . 프레임 워크는 일반적으로 더 복잡합니다. 그것은 해골 정의 응용 프로그램이 골격을 채우기 위해 자신의 기능을 정의합니다. 이런 식으로, 적절한 경우 프레임 워크에서 코드를 호출합니다. 이점은 개발자가 디자인이 좋은지 아닌지 걱정할 필요가없고 도메인 특정 기능을 구현하는 것만 걱정할 수 있다는 것입니다.
라이브러리, 프레임 워크 및 코드 이미지 표현 :
키 차이 :
라이브러리와 프레임 워크의 주요 차이점은 “제어의 반전” 입니다. 라이브러리에서 메소드를 호출하면 제어 할 수 있습니다. 그러나 프레임 워크를 사용하면 제어가 반전됩니다. 프레임 워크가 호출합니다 . 출처.
관계:
둘 다 프로그래머가 사용할 API를 정의했습니다. 이를 결합하기 위해 라이브러리를 애플리케이션의 특정 기능으로, 프레임 워크를 애플리케이션의 골격으로 생각하고 API를 연결하는 API를 생각할 수 있습니다. 일반적인 개발 프로세스는 일반적으로 프레임 워크로 시작하고 API를 통해 라이브러리에 정의 된 함수를 채 웁니다.
답변
항상 설명했듯이 :
라이브러리는 도구입니다.
프레임 워크는 삶의 방식입니다.
도움이되는 작은 부분을 사용할 수있는 라이브러리입니다. 전체 프로젝트를 커밋해야하는 프레임 워크
답변
웹 개발자 관점에서 :
-
라이브러리는 다른 라이브러리로 쉽게 교체 할 수 있습니다. 그러나 프레임 워크는 할 수 없습니다.
jquery 날짜 선택기 라이브러리가 마음에 들지 않으면 부트 스트랩 날짜 선택기 또는 선택 날짜와 같은 다른 날짜 선택기로 바꿀 수 있습니다.
제품을 빌드 한 AngularJS가 마음에 들지 않으면 다른 프레임 워크로 바꿀 수 없습니다. 전체 코드베이스를 다시 작성해야합니다.
-
대부분의 라이브러리는 프레임 워크에 비해 학습 곡선이 매우 적습니다. 예 : underscore.js는 라이브러리이고 Ember.js는 프레임 워크입니다.