답변:
답변을 늦게 늦었습니다. 그러나 나는 오늘만 생각했던 하나의 예를 공유하고 싶습니다. 5m x 5m 크기의 종이를 자르라고한다면 분명히 그렇게 할 것입니다. 그러나 같은 크기의 종이 1000 장을 자르라고 요청한다고 가정합니다. 이 경우 측정을 1000 번 수행하지 않습니다. 분명히, 당신은 5m x 5m의 프레임을 만들고, 그것의 도움으로 더 적은 시간에 1000 장의 종이를자를 수 있습니다. 그래서 당신이 한 일은 특정 유형의 작업을 수행하는 프레임 워크를 만드는 것입니다. 동일한 유형의 응용 프로그램에 대해 동일한 유형의 작업을 반복해서 수행하는 대신 하나의 멋진 패킷으로 이러한 기능을 모두 갖춘 프레임 워크를 생성하므로 응용 프로그램과 더 중요한 많은 응용 프로그램에 대한 추상화를 제공합니다.
기술적으로 는 프레임 워크 가 필요 하지 않습니다 . 정말 간단한 사이트를 만들고 있다면 (1992 년에 웹을 다시 생각해보십시오) 하드 코딩 된 HTML과 일부 CSS를 사용하여 모든 작업을 수행 할 수 있습니다.
그리고 현대적인 웹앱을 만들고 싶다면 실제로 프레임 워크를 사용할 필요 가 없습니다 .
대신 매번 필요한 모든 논리를 작성하도록 선택할 수 있습니다. 고유 한 데이터 지속성 / 스토리지 계층을 작성하거나 너무 바쁘면 모든 단일 데이터베이스 액세스에 대해 사용자 정의 SQL을 작성하십시오. 자체 인증 및 세션 처리 계층을 작성할 수 있습니다. 그리고 자신의 템플릿 렌더링 로직. 그리고 당신의 예외 처리 논리. 그리고 당신 자신의 보안 기능. 또한 모든 단위 테스트 프레임 워크가 제대로 작동하는지 확인하십시오. 그리고 당신은 ... [오랫동안 계속됩니다]
당신이 경우 다시, 이렇게 프레임 워크를 사용 , 당신은 일반적으로 좋은 혜택을 누릴 수 있습니다 피어 검토하고 아주 잘 수십 잘보다 더 좋을 수있는 다른 개발자의 경우하지 수백의 작업을 테스트했다. 위에 나열된 인프라 항목에 대해 너무 많은 시간을 투자하거나 걱정할 필요없이 원하는 것을 신속하게 구축 할 수 있습니다.
더 짧은 시간에 더 많은 작업을 수행 할 수 있으며 사용하거나 확장하는 프레임 워크 코드가 직접 수행하는 것보다 더 잘 수행 될 수 있음을 알고 있습니다.
그리고 이것의 비용? 프레임 워크를 배우는 데 시간을 투자합니다. 그러나 거의 모든 웹 개발자가 증명할 수 있듯이 선택한 프레임 워크를 사용하여 막대한 (실제로 막대한) 이점을 얻는 방법을 배우는 데 시간을 들일 가치가 있습니다.
Wikipedia (Software Framework)의 요약 (첫 번째 Google 히트 btw)은 다음과 같이 잘 설명합니다.
컴퓨터 프로그래밍에서 소프트웨어 프레임 워크는 일반 기능을 제공하는 공통 코드를 특정 기능을 제공하는 사용자 코드로 선택적으로 재정의하거나 특수화 할 수있는 추상화입니다. 프레임 워크는 잘 정의 된 API (Application Programming Interface)에 래핑 된 재사용 가능한 코드 추상화라는 점에서 소프트웨어 라이브러리의 특수한 사례이지만 일반 라이브러리와 구분되는 몇 가지 주요 기능이 포함되어 있습니다.
소프트웨어 프레임 워크에는 라이브러리 또는 일반 사용자 애플리케이션과 구분되는 다음과 같은 특징이 있습니다.
- 제어 역전 -라이브러리 또는 일반 사용자 응용 프로그램과 달리 프레임 워크에서 전체 프로그램의 제어 흐름은 호출자가 아니라 프레임 워크에 의해 결정됩니다. [1]
- 기본 동작 -프레임 워크에는 기본 동작이 있습니다. 이 기본 동작은 실제로 일련의 no-ops가 아닌 유용한 동작이어야합니다.
- 확장 성 -프레임 워크는 일반적으로 선택적 오버라이드 또는 특정 기능을 제공하는 사용자 코드로 특수화하여 확장 할 수 있습니다.
- 수정할 수없는 프레임 워크 코드 -프레임 워크 코드는 일반적으로 수정할 수 없습니다. 사용자는 프레임 워크를 확장 할 수 있지만 코드를 수정할 수는 없습니다.
이미 작성되고 테스트 된 기능이 많이 포함되어 있기 때문에 응용 프로그램을 개발할 때 훌륭한 지름길을 제공 할 수 있기 때문에 "필요"할 수 있습니다. 그 이유는 소프트웨어 라이브러리를 사용하는 이유와 매우 유사합니다.
좋은 답변이 많이 있지만 다른 견해를 줄 수 있는지 알려 드리겠습니다.
일을 약간 단순화하면 실제 기능을 제외하고 프레임 워크를 완전한 응용 프로그램으로 볼 수 있습니다. 기능과 PRESTO를 연결하십시오! 당신은 응용 프로그램이 있습니다.
예를 들어, GUI 프레임 워크를 고려하십시오. 프레임 워크에는 응용 프로그램을 만드는 데 필요한 모든 것이 포함되어 있습니다. 실제로 아무 것도하지 않는 아주 적은 수의 소스로 최소한의 응용 프로그램을 만들 수도 있지만, 창 관리, 하위 창 관리, 메뉴, 단추 모음 등을 제공합니다. 이것이 프레임 워크 측면입니다. 응용 프로그램 기능을 추가하고 프레임 워크의 올바른 위치에 "연결"하면 창 관리 등을 수행하지 않는이 빈 응용 프로그램을 실제 응용 프로그램으로 활용할 수 있습니다.
웹 응용 프로그램, 서버 측 응용 프로그램 등을위한 유사한 유형의 프레임 워크가 있습니다. 각 경우에 프레임 워크는 실제 문제 도메인 기능을 제공하면서 지루하고 반복적 인 코드를 제공합니다. (이것이 이상적입니다. 실제로 프레임 워크의 성공은 매우 다양합니다.)
나는 이것이 프레임 워크가 무엇인지에 대한 단순화 된 견해임을 다시 강조한다. 대부분의 프레임 워크에는 이러한 무서운 개념이 내장되어 있지만 "제어의 반전"과 같은 무서운 용어를 사용하지 않습니다. 당신이 초보자이기 때문에, 나는 당신에게 전문 용어를 아끼고 쉬운 직유로 갈 것이라고 생각했습니다.
"프레임 워크"에 대한 명확한 정의가 있는지 확실하지 않습니다. 때로는 큰 라이브러리 세트를 프레임 워크라고하지만, 단어의 일반적인 사용은 aioobe가 가져온 정의에 더 가깝다고 생각합니다.
이 아주 좋은 기사 는 단지 라이브러리 세트와 프레임 워크의 차이점을 요약합니다.
프레임 워크는 "우리에게 전화하지 말고 전화 할 것"이라고하는 라이브러리 세트로 정의 될 수 있습니다.
프레임 워크가 어떻게 도움이됩니까? 처음부터 무언가를 쓰지 않고 기본적으로 주어진 응용 프로그램을 확장합니다. 이런 식으로 많은 생산성을 얻을 수 있습니다. 때로는 결과 응용 프로그램이 같은 시간 내에 직접 수행 할 수있는 것보다 훨씬 정교해질 수도 있지만 일반적으로 많은 유연성으로 거래됩니다.
간단한 설명은 다음과 같습니다. 프레임 워크는 응용 프로그램을 구축 할 수있는 스캐 폴드입니다.
프레임 워크는 일반적으로보다 복잡한 응용 프로그램을 만들기 위해 사용하고 확장 할 수있는 몇 가지 기본 기능을 제공합니다. 모든 종류의 프레임 워크가 있습니다. Microsoft의 MVC 프레임 워크가 이에 대한 좋은 예입니다. MVC 패턴을 사용하여 지상 건물 웹 사이트에서 내리는 데 필요한 모든 것을 제공하며 웹 요청, 경로 등을 처리합니다. "컨트롤러"를 구현하고 MVC 프레임 워크에 의해 정의 된 두 가지 구조 인 "뷰"를 제공하기 만하면됩니다. 그런 다음 MVC 프레임 워크는 컨트롤러 호출 및 뷰 렌더링을 처리합니다.
아마도 가장 좋은 표현은 아니지만 도움이되기를 바랍니다.
가장 낮은 수준에서, 프레임 워크는 작업 할 도구 세트가 제공되는 환경입니다.
이 도구는 라이브러리, 구성 파일 등의 형태로 제공됩니다.
소위 "환경"은 기본 설정 (오류보고, 로그 파일, 언어 설정 등)을 제공하며 수정, 확장 및 구축 할 수 있습니다.
사람들은 실제로 프레임 워크가 필요하지 않으며, 시간을 절약하고 싶고 다른 사람들은 개인적인 취향에 관한 문제 일뿐입니다.
사람들은 프레임 워크를 사용하여 처음부터 코딩 할 필요가 없다는 것을 정당화 할 것입니다. 그러나 이들은 라이브러리와 프레임 워크를 혼동하는 사람들입니다.
나는 여기서 편향되지 않고 실제로 프레임 워크를 사용하고 있습니다.
프레임 워크는 특정 문제 영역에 기능 / 솔루션을 제공합니다. 위키
에서 정의 :
컴퓨터 프로그래밍에서 소프트웨어 프레임 워크는 일반 기능을 제공하는 공통 코드를 특정 기능을 제공하는 사용자 코드로 선택적으로 재정의하거나 특수화 할 수있는 추상화입니다. 프레임 워크는 잘 정의 된 API (Application Programming Interface)에 래핑 된 재사용 가능한 코드 추상화라는 점에서 소프트웨어 라이브러리의 특수한 사례이지만 일반 라이브러리와 구분되는 몇 가지 주요 기능이 포함되어 있습니다.
프레임 워크에는 필요한 기능이 있습니다. 정렬 메커니즘이 내장 된 일종의 배열이 필요할 수 있습니다. 또는 프레임 워크에서 찾을 수있는 모든 컨트롤을 배치 할 창이 필요할 수도 있습니다. 그것은 당신의 일을 중심으로 한 프레임에 걸친 일종의 일입니다.
편집 : 좋아, 나는 너희들이 나에게 말하려고하는 것을 파고하려고한다.) 아마도 당신은 아마도 "프레임 주위에 걸친 작업 ..."이라는 줄 사이의 정보를 알아 차리지 못했다. 난 당신이 gracfully있어 희망 그것에 바닥을 제공하려고 :
질문 "라이브러리와 프레임 워크의 차이"에 대한 좋은 설명 내가 여기
http://ifacethoughts.net/2007/06/04/difference-between- 도서관 및 프레임 워크 /
이미 이해했을 때만 이해할 수있는 정의를 넘어서, 예가 도움이되었습니다.
.Net에서 목록을 정렬 할 때 이해가 번쩍 번쩍합니다. 특정 기능을 제공하는 사용자 코드에 따라 기능을 제공하는 프레임 워크의 예 List.Sort (IComparer)를 가져옵니다. Sort 메서드의 .Net 프레임 워크에있는 정렬 알고리즘은 일련의 비교를 수행해야합니다. 물체 A가 물체 B 앞이나 뒤에 오는가? 그러나 Sort 자체는 비교를 수행하는 방법에 대한 실마리가 없습니다. 정렬되는 유형 만 알고 있습니다. 많은 사용자가 재사용 할 수있는 비교 정렬 알고리즘을 작성할 수 없었으며 정렬해야 할 모든 다양한 유형을 예상 할 수 있습니다. 약간의 작업을 사용자 자신에게 맡겨야합니다. 여기서 프레임 워크 인 정렬은 사용자 코드의 메소드를 다시 호출하여 유형을 정렬하여 비교할 수 있도록합니다. 또는 대리인을 사용할 수도 있습니다.
내가 이걸 얻었 니?