문제

a의 차이점은 무엇입니까? 뼈대 그리고 a 도서관?

나는 항상 도서관을 특정 문제 또는 특정 애플리케이션 개발 영역 (즉, 데이터베이스 액세스)을 해결하는 데 중점을 둔 객체 및 기능 세트로 생각했습니다. 반면에 특정 방법론 (IE MVC)을 중심으로 한 라이브러리 모음으로서의 모든 영역을 다루는 프레임 워크.

도움이 되었습니까?

해결책

실제로이 용어는 그들이 사용하는 컨텍스트에 따라 많은 다른 것들을 의미 할 수 있습니다.

예를 들어, Mac OS X Framework는 번들에 포장 된 라이브러리 일뿐입니다. 번들 안에는 실제 동적 라이브러리 (libwhate.dylib)가 있습니다. Bare Library와 Mac의 프레임 워크의 차이점은 프레임 워크에 여러 다른 버전의 라이브러리가 포함될 수 있다는 것입니다. 추가 리소스 (이미지, 현지화 된 문자열, XML 데이터 파일, UI 객체 등)가 포함될 수 있으며 프레임 워크가 공개되지 않으면 일반적으로 라이브러리를 사용하는 데 필요한 .h 파일이 포함됩니다.

따라서 단일 패키지 내에 모든 것이있어 응용 프로그램에서 라이브러리를 사용해야합니다 (일부 라이브러리 문서에 따라 직접 작성하지 않는 한 .h 파일이없는 C/C ++/Objective-C 라이브러리는 쓸모가 없습니다). 이동할 파일이 많이 있습니다 (Mac 번들은 UNIX 레벨의 디렉토리 일 뿐이지 만 UI는 하나의 파일처럼 취급합니다. 콘텐츠를 명시 적으로 선택하지 않는 한 내부의 내용은).

Wikipedia는 프레임 워크를 "버즈 워드"라고 부릅니다. 소프트웨어 프레임 워크를 다음과 같이 정의합니다

소프트웨어 프레임 워크는 소프트웨어 시스템 (또는 하위 시스템)을위한 재사용 가능한 설계입니다. 소프트웨어 프레임 워크에는 지원 프로그램, 코드 라이브러리, 스크립팅 언어 또는 기타 소프트웨어가 포함되어있어 소프트웨어 프로젝트의 다양한 구성 요소를 개발하고 붙잡는 데 도움이 될 수 있습니다. 프레임 워크의 다양한 부분이 API를 통해 노출 될 수 있습니다.

그래서 나는 도서관이 "도서관"이라고 말하고 싶습니다. 객체/함수/방법 (언어에 따라 다름) 및 응용 프로그램에 대한 "링크"에 대한 모음이므로 객체/함수/메소드를 사용할 수 있습니다. 기본적으로 다양한 응용 프로그램에서 일반적으로 공유 할 수있는 재사용 가능한 코드가 포함 된 파일입니다 (동일한 코드를 반복해서 쓰지 않아도됩니다).

프레임 워크는 애플리케이션 개발에 사용하는 모든 것이 될 수 있습니다. 라이브러리, 많은 라이브러리 모음, 스크립트 모음 또는 애플리케이션을 작성하는 데 필요한 소프트웨어 일 수 있습니다. 프레임 워크는 매우 모호한 용어입니다.

주제에 관한 어떤 사람에 관한 기사가 있습니다. "도서관 대 프레임 워크". 나는 개인적 으로이 기사가 논쟁의 여지가 있다고 생각합니다. 그가 말하는 것은 잘못이 아니지만, 그는 프레임 워크의 여러 정의 중 하나를 선택하고 라이브러리의 고전적인 정의와 비교하고 있습니다. 서브 클래스. 실제로? 나는 라이브러리에 객체를 정의 할 수 있습니다. 나는 그것에 반대하고 내 코드에 서브 클래스를 할 수 있습니다. 나는 어떻게 "프레임 워크"가 필요한지 알 수 없습니다. 오히려 요즘 프레임 워크라는 용어가 어떻게 사용되는지 설명합니다. 이전에 말했듯이 과장된 단어 일뿐입니다. 일부 회사는 정상적인 라이브러리 (클래식 라이브러리의 의미에서)를 방출하고 더 화려하게 들리기 때문에 "프레임 워크"라고 부릅니다.

다른 팁

도서관 구체적이고 잘 정의 된 작업을 수행합니다.

뼈대 응용 프로그램이 골격을 채워 작업의 "고기"를 정의하는 골격입니다. 골격에는 여전히 부품을 연결하는 코드가 있지만 가장 중요한 작업은 응용 프로그램에서 수행됩니다.

라이브러리의 예 : 네트워크 프로토콜, 압축, 이미지 조작, 문자열 유틸리티, 정규식 평가, 수학. 작전은 자체 포함됩니다.

프레임 워크의 예 : 웹 애플리케이션 시스템, GUI 시스템 플러그인 관리자. 프레임 워크는 개념을 정의하지만 응용 프로그램은 최종 사용자가 관리하는 기본 기능을 정의합니다.

주된 차이점은 프레임 워크가 다음을 따른다는 것입니다.할리우드 원리",, 즉"우리에게 전화하지 마십시오. 우리는 당신을 부를 것입니다. "

에 따르면 마틴 파울러:

도서관 본질적으로 전화 할 수있는 일련의 기능입니다. 요즘에는 일반적으로 수업으로 구성됩니다. 각 통화는 일부 작업을 수행하고 고객에게 제어를 반환합니다.

뼈대 더 많은 동작이 내장되어있는 일부 추상적 인 디자인을 구현합니다.이를 사용하려면 서브 클래스 또는 자신의 클래스를 연결하여 프레임 워크의 다양한 장소에 동작을 삽입해야합니다. 프레임 워크의 코드는이 시점에서 코드를 호출합니다.

도서관:

그것은 단지 A입니다 수집루틴 (기능적 프로그래밍) 또는 클래스 정의(객체 지향 프로그래밍). 뒤에있는 이유는 간단합니다 코드 재사용, 즉, 다른 개발자가 이미 작성한 코드를 얻습니다. 클래스 또는 루틴은 일반적으로 정의됩니다 도메인 특정 영역에서의 특정 작업. 예를 들어, 개발자가 알고리즘의 작동 방식을 구현하지 않고도 기능을 호출 할 수있는 일부 수학 라이브러리가 있습니다.

뼈대:

프레임 워크에서 제어 흐름 이미 거기에 있습니다 사전 정의 된 흰색 반점이 많이 있습니다 우리가해야합니다 코드로 작성하십시오. 프레임 워크는 일반적으로 더 복잡합니다. 그것 골격을 정의합니다 응용 프로그램은 해골을 채우기 위해 자체 기능을 정의합니다. 이러한 방식으로, 귀하의 코드는 적절하게 프레임 워크에 의해 호출됩니다. 이점은 개발자가 디자인이 좋은지 아닌지에 대해 걱정할 필요가 없으며 도메인 별 기능을 구현하는 것입니다.

라이브러리, 프레임 워크 및 코드 이미지 표현 :

Library,Framework and your Code image relation

키거 :

라이브러리와 프레임 워크의 주요 차이점은 "통제의 역전". 라이브러리에서 메소드를 호출하면 통제 중입니다. 그러나 프레임 워크를 사용하면 컨트롤이 반전됩니다. 프레임 워크가 당신을 부릅니다. 원천.

관계:

둘 다 프로그래머를 사용하는 데 사용되는 API를 정의했습니다. 이를 종합하기 위해 라이브러리를 애플리케이션의 특정 함수, 응용 프로그램의 골격으로 프레임 워크로 생각할 수 있으며 API는 이들을 합치기위한 커넥터입니다. 일반적인 개발 프로세스는 일반적으로 프레임 워크로 시작하여 API를 통해 라이브러리에서 정의 된 기능을 작성합니다.

당신은 도서관에 전화합니다.

프레임 워크가 당신을 부릅니다.


図 図 助け
足場 足場 痛い
多く 多く 涙

내가 항상 설명했듯이 :

도서관은 도구입니다.

프레임 워크는 삶의 방식입니다.

작은 부품이 당신에게 도움이 될 수있는 도서관. 전체 프로젝트를 저장 해야하는 프레임 워크.

코헨스 대답이 마음에 들지만보다 기술적 인 정의는 다음과 같습니다. 코드는 라이브러리를 호출합니다. 프레임 워크가 코드를 호출합니다. 예를 들어 GUI 프레임 워크는 이벤트 핸들러를 통해 코드를 호출합니다. 웹 프레임 워크는 일부 요청-응답 모델을 통해 코드를 호출합니다.

이것은 또한 호출됩니다 제어의 역전 - 갑자기 프레임 워크가 라이브러리와의 다른 방식이 아닌 코드를 언제 어떻게 실행하는지 결정합니다. 이는 프레임 워크가 코드를 구성하는 방법에 훨씬 더 큰 영향을 미친다는 것을 의미합니다.

웹 개발자 관점에서 :

  1. 라이브러리는 다른 라이브러리에서 쉽게 교체 할 수 있습니다. 그러나 프레임 워크는 할 수 없습니다.

    jQuery Date Picker 라이브러리가 마음에 들지 않으면 부트 스트랩 날짜 선택기 또는 PickAdate와 같은 다른 날짜 선택기로 교체 할 수 있습니다.

    제품을 제작 한 AngularJS가 마음에 들지 않으면 다른 프레임 워크로 대체 할 수 없습니다. 전체 코드 기반을 다시 작성해야합니다.

  2. 대부분 라이브러리는 프레임 워크에 비해 학습 곡선이 매우 적습니다. EG : alterscore.js는 라이브러리입니다. ember.js는 프레임 워크입니다.

나는이 정의를 본 곳을 잊어 버렸지 만 꽤 좋다고 생각합니다.

라이브러리는 코드에서 호출하는 모듈이며 프레임 워크는 코드를 호출하는 모듈입니다.

다른 라이브러리로 프레임 워크를 만들 수 있습니다. 예를 들어 봅시다.

생선 카레를 요리하고 싶다고 가정 해 봅시다. 그런 다음 재료가 필요합니다 기름, 향료 및 기타 유용. 당신은 또한 필요합니다 생선 그것은 당신의 접시를 준비 할 기초입니다 (이것은 당신의 응용 프로그램의 데이터입니다). 모든 재료는 함께 a 뼈대. 이제 당신은 그들을 하나씩 또는 결합하여 당신의 물고기 카레를 당신의 최종 제품. a와 비교하십시오 웹 프레임 워크 그것은 만들어졌습니다 aUNDSCORE.JS, bootstrap.css, bootstrap.js, fontawesome, Angularjs 등. 예를 들어, 트위터 부트 스트랩 v.35.

이제 말처럼 하나의 성분 만 고려하면 기름. 당신은 당신이 원하는 기름을 사용할 수 없습니다. 그러면 물고기를 망칠 것이기 때문입니다 (데이터). 당신은 만 사용할 수 있습니다 올리브유. 비교하십시오 aUNDSCORE.JS. 이제 사용하려는 브랜드의 오일은 당신에게 달려 있습니다. 일부 요리는 함께 만들어졌습니다 미국 올리브 오일 (indentscore.js) 또는 인도 올리브 오일 (lodash.js). 이것은 응용 프로그램의 맛만을 변경합니다. 그들은 거의 같은 목적을 달성하기 때문에 그들의 사용은 개발자의 선호도에 달려 있으며 쉽게 교체 할 수 있습니다.

enter image description here


뼈대 : 응용 프로그램에 고유 한 속성과 동작을 제공하는 라이브러리 모음. (모든 재료)

도서관 : 데이터에 고유 한 속성과 동작을 제공하는 잘 정의 된 지침 세트. (물고기에 기름)

플러그인 : 라이브러리 (UI -Router-> AngularJS) 또는 많은 라이브러리를위한 유틸리티 빌드 (date -picker-> bootstrap.css + jquery)는 이제 플러그인이 예상대로 작동 할 수 있습니다.


PS AngularJS는 MVC 프레임 워크이지만 JavaScript 라이브러리입니다. 라이브러리가 기본 기술의 기본 동작을 확장한다고 생각하기 때문입니다 (이 경우 JavaScript).

이것이 내가 생각하는 방법입니다 (그리고 다른 사람들이 합리화 한 것을 보았습니다) :

라이브러리는 코드 내에 포함 된 것입니다. 프레임 워크는 응용 프로그램의 컨테이너입니다.

다음은 연결되어 있습니다 Joel Spolsky의 쓴 기사, 그러나 도구 상자, 라이브러리, 프레임 워크 등의 좋은 차이가 포함되어 있습니다.

라이브러리는 좁은 점령 목적으로 기능을 구현하는 반면 프레임 워크는 더 넓은 범위의 기능을 지원하는 라이브러리 모음 인 경향이 있습니다. 예를 들어, Library System.Drawing.dll은 그리기 기능을 처리하지만 전체 .NET 프레임 워크의 일부일뿐입니다.

라이브러리 - 클라이언트로 사용할 수있는 모든 클래스 또는 구성 요소 세트는 특정 작업을 수행하기에 적합하다고 생각합니다.
프레임 워크 - 귀하가 "플러그인"할 수 있도록 특정 지침을 귀하보다 더 큰 것으로 의무화합니다. 귀하는 단지 출판 된 인용 방식으로 귀하의 응용 프로그램/요구 사항에 특정한 작품을 제공하여 'Framwwork가 인생을 쉽게 만들 수 있습니다'

도서관은 사용이 용이하고 효율성을위한 것이며 예를 들어 Zend Library는 잘 정의 된 클래스 및 기능으로 다양한 작업을 수행하는 데 도움이된다고 말할 수 있습니다. 프레임 워크는 일반적으로 MVC (모델과 같은 솔루션을 구현하는 특정 방법을 강요하는 것입니다. -View-Controller)(참조). MVC에서와 같이 작업을 배포하기위한 잘 정의 된 시스템입니다. 모델에는 데이터베이스 측면이 포함되어 있고, 뷰는 UI 인터페이스이며, 컨트롤러는 비즈니스 로직입니다.

나는 당신이 차이를 잘 고정 시켰다고 생각합니다. 프레임 워크는 우리가 우리의 일을하는 프레임을 제공합니다. 어쨌든 간단한 라이브러리보다 더 "제한적"입니다.
이 프레임 워크는 또한 일련의 라이브러리에 일관성을 추가해야합니다.

도서관은 목표에 도달 할 수있는 일련의 유틸리티라고 생각합니다 (예 : 소켓, 암호화 등). 프레임 워크는 라이브러리 + 런타임 einvironnement입니다. 예를 들어, asp.net은 프레임 워크입니다. HTTP 요청을 수락하고, 페이지 개체 생성, Lyfe Cicle 이벤트를 호출하는 등을 수락합니다. 프레임 워크는이 모든 것을 수행합니다. 현재 요청!

어쨌든, 매우 관심있는 질문!

나는이 답의 출처를 기억하지 못한다 (인터넷에서 .ppt에서 그것을 발견 한 것 같다). 그러나 대답은 매우 간단하다.

라이브러리 및 프레임 워크는 응용 프로그램에서 사용할 수 있고 특별한 "문제"를 해결하는 데 도움이되는 클래스, 모듈 및/또는 코드 (프로그래밍 언어에 따라 다름) 세트입니다.

이 문제는 응용 프로그램에서 로그 또는 디버깅 정보 일 수 있으며, 차트를 그리거나, 특정 파일 형식 (HTML, PDF, XLS)을 작성하고 데이터베이스에 연결하고 응용 프로그램의 일부 또는 완전한 응용 프로그램 또는 디자인 패턴.

이러한 모든 문제를 해결하기 위해 프레임 워크 나 라이브러리를 가질 수 있으며, 더 많은 프레임 워크는 더 복잡하거나 더 큰 문제를 해결하는 데 도움이되지만, 주된 차이의 주된 정의는 둘 다의 주요 정의가 아닙니다.

라이브러리와 프레임 워크에 대한 주요 차이점은 FW에서 거의 모든 클래스, 모듈 또는 코드를 사용하는 데 필요한 프레임 워크를 사용하는 데 필요한 단어로 자체 코드를 사용하는 종속성입니다. 그러나 라이브러리를 사용할 수 있습니다. 자신의 애플리케이션에있는 LIB의 클래스, 모듈 또는 코드가 거의 없습니다.

즉, 프레임 워크에 예를 들어 사용해야하는 앱에서 프레임 워크를 사용하기 위해 50 개의 클래스가있는 경우, 코드에서 10-15 개 이상의 클래스가 프레임 워크를 설계 한 방법이기 때문에 일부는 코드에서 10-15 개 이상의 클래스를 사용합니다. 클래스 (해당 클래스의 객체)는 프레임 워크의 다른 클래스의 메소드에 대한 입력/매개 변수입니다. .NET 프레임 워크, 스프링 또는 MVC 프레임 워크를 참조하십시오.

그러나 예를 들어 로그 라이브러리와 같은 코드에서 로그 클래스를 사용할 수 있으며 "로깅 문제"를 해결하는 데 도움이 될 수 있습니다. 즉, 로그 라이브러리가 클래스와 같이 그의 코드에 더 많은 클래스가 없다는 것을 의미하지 않습니다. 파일을 처리하려면 화면 출력 또는 데이터베이스를 처리하지만 코드에서 해당 클래스를 터치/사용하지 않으므로 라이브러리가 프레임 워크가 아닌 이유입니다.

또한 프레임 워크 및 라이브러리보다 더 많은 범주가 있지만 주제가 아닙니다.

당신의 해석은 나에게 꽤 좋은 것 같습니다 ... a 도서관 다른 코드에서 재사용을 위해 편집되고 독립적 인 것이 될 수 있습니다. 말 그대로 내용에는 제한이 없습니다.

뼈대 반면에 예제 인 MVC와 마찬가지로 일부 응용 프로그램 개발 분야에서 사용할 수있는 다양한 시설이있을 것으로 예상됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top