소프트웨어 프레임 워크 란 무엇입니까? [닫은]


194

소프트웨어 프레임 워크가 무엇인지 설명해 주시겠습니까? 왜 프레임 워크가 필요합니까? 프로그래밍을 쉽게하기 위해 프레임 워크는 무엇을합니까?

답변:


422

답변을 늦게 늦었습니다. 그러나 나는 오늘만 생각했던 하나의 예를 공유하고 싶습니다. 5m x 5m 크기의 종이를 자르라고한다면 분명히 그렇게 할 것입니다. 그러나 같은 크기의 종이 1000 장을 자르라고 요청한다고 가정합니다. 이 경우 측정을 1000 번 수행하지 않습니다. 분명히, 당신은 5m x 5m의 프레임을 만들고, 그것의 도움으로 더 적은 시간에 1000 장의 종이를자를 수 있습니다. 그래서 당신이 한 일은 특정 유형의 작업을 수행하는 프레임 워크를 만드는 것입니다. 동일한 유형의 응용 프로그램에 대해 동일한 유형의 작업을 반복해서 수행하는 대신 하나의 멋진 패킷으로 이러한 기능을 모두 갖춘 프레임 워크를 생성하므로 응용 프로그램과 더 중요한 많은 응용 프로그램에 대한 추상화를 제공합니다.


27
나는 투표를 거절 한 이유를 알고 싶다. 개선에 도움이 될 것입니다.
Neha Choudhary

4
이해하기 매우 쿨 ........... 감사합니다 많은
Premkumar

25
@NehaChoudhary, 내가 아니라, -1 당신이 말하는 것은 IoC가 없기 때문에 프레임 워크가 아닌 라이브러리이기 때문에 -1입니다.
Pacerier

11
게시물을 읽었지만 게시 한 내용은 라이브러리가 할 수있는 것과 비슷합니다. 프레임 워크와 라이브러리의 차이점을 설명하는 것은 어떻습니까?
Aaron Liu

2
이해가 안 돼요 당신이 설명한 것으로부터 그것이 도서관과 더 같을 것입니까?
라우터

92

기술적으로 는 프레임 워크 가 필요 하지 않습니다 . 정말 간단한 사이트를 만들고 있다면 (1992 년에 웹을 다시 생각해보십시오) 하드 코딩 된 HTML과 일부 CSS를 사용하여 모든 작업을 수행 할 수 있습니다.

그리고 현대적인 웹앱을 만들고 싶다면 실제로 프레임 워크를 사용할 필요 가 없습니다 .

대신 매번 필요한 모든 논리를 작성하도록 선택할 수 있습니다. 고유 한 데이터 지속성 / 스토리지 계층을 작성하거나 너무 바쁘면 모든 단일 데이터베이스 액세스에 대해 사용자 정의 SQL을 작성하십시오. 자체 인증 및 세션 처리 계층을 작성할 수 있습니다. 그리고 자신의 템플릿 렌더링 로직. 그리고 당신의 예외 처리 논리. 그리고 당신 자신의 보안 기능. 또한 모든 단위 테스트 프레임 워크가 제대로 작동하는지 확인하십시오. 그리고 당신은 ... [오랫동안 계속됩니다]

당신이 경우 다시, 이렇게 프레임 워크를 사용 , 당신은 일반적으로 좋은 혜택을 누릴 수 있습니다 피어 검토하고 아주 잘 수십 잘보다 더 좋을 수있는 다른 개발자의 경우하지 수백의 작업을 테스트했다. 위에 나열된 인프라 항목에 대해 너무 많은 시간을 투자하거나 걱정할 필요없이 원하는 것을 신속하게 구축 할 수 있습니다.

더 짧은 시간에 더 많은 작업을 수행 할 수 있으며 사용하거나 확장하는 프레임 워크 코드가 직접 수행하는 것보다 더 잘 수행 될 수 있음을 알고 있습니다.

그리고 이것의 비용? 프레임 워크를 배우는 데 시간을 투자합니다. 그러나 거의 모든 웹 개발자가 증명할 수 있듯이 선택한 프레임 워크를 사용하여 막대한 (실제로 막대한) 이점을 얻는 방법을 배우는 데 시간을 들일 가치가 있습니다.


17
왜 자신의 물건을 뭉개 버리지 않고 오픈 소스 프레임 워크에 기여하는 데 에너지를 투입하지 않겠습니까? '혼자, 우리는 바위를 움직일 수 있습니다. 함께 산과 그 모든 것을 움직일 수 있습니다
Steve Jalim

7
@Jefffrey "그런데 어떻게 배울 것인가? 프로그래머로서 어떻게 성장할 것인가?" 그러나 원하는 것을 배우십시오. 그러나 실제 고객을 위해 일하려는 경우 가장 짧은 시간 내에 최상의 솔루션을 제공해야합니다. "아마도 버그가 많은"코드는 허용되지 않습니다.
Cmorales

6
당신이 프로그래밍 언어 또는 당신은 분명히 (그리고 아마도 당신의 손에 시간을 많이해야합니다) 어떤 "진짜"클라이언트가하지 않을 도메인의 특정 문제를 배우고 싶은 경우 @Cmorales는, 이다 나는 초보자를하시기 바랍니다 프레임 워크에서 시작하지 않습니다.
구두

3
@Jefffrey 당신은 당신의 의견에 초보자에 대해 아무 말도하지 않았다, 그것은 일반적이었다. 나는 당신이 먼저 스스로 배워야한다는 것에 동의하지만, 당신의 의견은 그것을 명시하지 않았으며 실제 (일) 인생에서는 배우기 위해 버그가있는 코드를 사용할 여유가 없습니다. 나는 그들이 더 잘 알고 있다고 생각하기 때문에 프레임 워크를 사용하지 않는 사람들을 알고 있습니다 ... 각 프로젝트마다 두 배의 시간을 소비합니다.
Cmorales

1
@Cmorales 나는 프레임 워크를 사용하지만 각 프로젝트마다 두 배의 시간이 걸리는 사람들도 알고 있습니다. 프로그래밍 속도가 항상 사용되는 도구와 관련이있는 것은 아닙니다.
Cypher

53

Wikipedia (Software Framework)의 요약 (첫 번째 Google 히트 btw)은 다음과 같이 잘 설명합니다.

컴퓨터 프로그래밍에서 소프트웨어 프레임 워크는 일반 기능을 제공하는 공통 코드를 특정 기능을 제공하는 사용자 코드로 선택적으로 재정의하거나 특수화 할 수있는 추상화입니다. 프레임 워크는 잘 정의 된 API (Application Programming Interface)에 래핑 된 재사용 가능한 코드 추상화라는 점에서 소프트웨어 라이브러리의 특수한 사례이지만 일반 라이브러리와 구분되는 몇 가지 주요 기능이 포함되어 있습니다.

소프트웨어 프레임 워크에는 라이브러리 또는 일반 사용자 애플리케이션과 구분되는 다음과 같은 특징이 있습니다.

  1. 제어 역전 -라이브러리 또는 일반 사용자 응용 프로그램과 달리 프레임 워크에서 전체 프로그램의 제어 흐름은 호출자가 아니라 프레임 워크에 의해 결정됩니다. [1]
  2. 기본 동작 -프레임 워크에는 기본 동작이 있습니다. 이 기본 동작은 실제로 일련의 no-ops가 아닌 유용한 동작이어야합니다.
  3. 확장 성 -프레임 워크는 일반적으로 선택적 오버라이드 또는 특정 기능을 제공하는 사용자 코드로 특수화하여 확장 할 수 있습니다.
  4. 수정할 수없는 프레임 워크 코드 -프레임 워크 코드는 일반적으로 수정할 수 없습니다. 사용자는 프레임 워크를 확장 할 수 있지만 코드를 수정할 수는 없습니다.

이미 작성되고 테스트 된 기능이 많이 포함되어 있기 때문에 응용 프로그램을 개발할 때 훌륭한 지름길을 제공 할 수 있기 때문에 "필요"할 수 있습니다. 그 이유는 소프트웨어 라이브러리를 사용하는 이유와 매우 유사합니다.


13
질문의 유형에 따라 귀하의 답변의 흰색 부분은 회색 부분보다 훨씬 낫습니다 ...
OlimilOops

질문을하는 사람이 Wikipedia 항목도 발견했다고 확신합니다. 그 / 그녀는 아마도 더 포괄적 인 답변을 찾았을 것입니다.
Stophface

31

좋은 답변이 많이 있지만 다른 견해를 줄 수 있는지 알려 드리겠습니다.

일을 약간 단순화하면 실제 기능을 제외하고 프레임 워크를 완전한 응용 프로그램으로 볼 수 있습니다. 기능과 PRESTO를 연결하십시오! 당신은 응용 프로그램이 있습니다.

예를 들어, GUI 프레임 워크를 고려하십시오. 프레임 워크에는 응용 프로그램을 만드는 데 필요한 모든 것이 포함되어 있습니다. 실제로 아무 것도하지 않는 아주 적은 수의 소스로 최소한의 응용 프로그램을 만들 수도 있지만, 창 관리, 하위 창 관리, 메뉴, 단추 모음 등을 제공합니다. 이것이 프레임 워크 측면입니다. 응용 프로그램 기능을 추가하고 프레임 워크의 올바른 위치에 "연결"하면 창 관리 등을 수행하지 않는이 빈 응용 프로그램을 실제 응용 프로그램으로 활용할 수 있습니다.

웹 응용 프로그램, 서버 측 응용 프로그램 등을위한 유사한 유형의 프레임 워크가 있습니다. 각 경우에 프레임 워크는 실제 문제 도메인 기능을 제공하면서 지루하고 반복적 인 코드를 제공합니다. (이것이 이상적입니다. 실제로 프레임 워크의 성공은 매우 다양합니다.)

나는 이것이 프레임 워크가 무엇인지에 대한 단순화 된 견해임을 다시 강조한다. 대부분의 프레임 워크에는 이러한 무서운 개념이 내장되어 있지만 "제어의 반전"과 같은 무서운 용어를 사용하지 않습니다. 당신이 초보자이기 때문에, 나는 당신에게 전문 용어를 아끼고 쉬운 직유로 갈 것이라고 생각했습니다.


14

"프레임 워크"에 대한 명확한 정의가 있는지 확실하지 않습니다. 때로는 큰 라이브러리 세트를 프레임 워크라고하지만, 단어의 일반적인 사용은 aioobe가 가져온 정의에 더 가깝다고 생각합니다.

아주 좋은 기사 는 단지 라이브러리 세트와 프레임 워크의 차이점을 요약합니다.

프레임 워크는 "우리에게 전화하지 말고 전화 할 것"이라고하는 라이브러리 세트로 정의 될 수 있습니다.

프레임 워크가 어떻게 도움이됩니까? 처음부터 무언가를 쓰지 않고 기본적으로 주어진 응용 프로그램을 확장합니다. 이런 식으로 많은 생산성을 얻을 수 있습니다. 때로는 결과 응용 프로그램이 같은 시간 내에 직접 수행 할 수있는 것보다 훨씬 정교해질 수도 있지만 일반적으로 많은 유연성으로 거래됩니다.


8

간단한 설명은 다음과 같습니다. 프레임 워크는 응용 프로그램을 구축 할 수있는 스캐 폴드입니다.

프레임 워크는 일반적으로보다 복잡한 응용 프로그램을 만들기 위해 사용하고 확장 할 수있는 몇 가지 기본 기능을 제공합니다. 모든 종류의 프레임 워크가 있습니다. Microsoft의 MVC 프레임 워크가 이에 대한 좋은 예입니다. MVC 패턴을 사용하여 지상 건물 웹 사이트에서 내리는 데 필요한 모든 것을 제공하며 웹 요청, 경로 등을 처리합니다. "컨트롤러"를 구현하고 MVC 프레임 워크에 의해 정의 된 두 가지 구조 인 "뷰"를 제공하기 만하면됩니다. 그런 다음 MVC 프레임 워크는 컨트롤러 호출 및 뷰 렌더링을 처리합니다.

아마도 가장 좋은 표현은 아니지만 도움이되기를 바랍니다.


1
실제로, 스캐 폴딩에 응용 프로그램 구축 하는 것보다는 주변에 응용 프로그램 구축하는 것과 같습니다 .
Jörg W Mittag 2018 년

4

가장 낮은 수준에서, 프레임 워크는 작업 할 도구 세트가 제공되는 환경입니다.

이 도구는 라이브러리, 구성 파일 등의 형태로 제공됩니다.

소위 "환경"은 기본 설정 (오류보고, 로그 파일, 언어 설정 등)을 제공하며 수정, 확장 및 구축 할 수 있습니다.

사람들은 실제로 프레임 워크가 필요하지 않으며, 시간을 절약하고 싶고 다른 사람들은 개인적인 취향에 관한 문제 일뿐입니다.

사람들은 프레임 워크를 사용하여 처음부터 코딩 할 필요가 없다는 것을 정당화 할 것입니다. 그러나 이들은 라이브러리와 프레임 워크를 혼동하는 사람들입니다.

나는 여기서 편향되지 않고 실제로 프레임 워크를 사용하고 있습니다.


4

일반적으로 프레임 워크는 구조를 유용한 것으로 확장하는 것을 구축하기위한 지원 또는 가이드 역할을하는 실제 또는 개념적 구조입니다.


2

프레임 워크는 특정 문제 영역에 기능 / 솔루션을 제공합니다. 위키
에서 정의 :

컴퓨터 프로그래밍에서 소프트웨어 프레임 워크는 일반 기능을 제공하는 공통 코드를 특정 기능을 제공하는 사용자 코드로 선택적으로 재정의하거나 특수화 할 수있는 추상화입니다. 프레임 워크는 잘 정의 된 API (Application Programming Interface)에 래핑 된 재사용 가능한 코드 추상화라는 점에서 소프트웨어 라이브러리의 특수한 사례이지만 일반 라이브러리와 구분되는 몇 가지 주요 기능이 포함되어 있습니다.


첫 번째 문장에는 "abstraction"이라는 단어가 있습니다. 그게 무슨 뜻 이니 ? 추상화는 어디에 사용합니까?
Kumaresan Perumal

2

프레임 워크는 "이미 생성 된"사용에 대해 도움을줍니다.

지구 자료는 프로그래밍 언어라고 생각합니다.

예를 들어 "카메라"는 프로그램이며 노트북을 만들기로 결정했습니다. 매번 카메라를 다시 만들 필요는 없습니다. 지구 프레임 워크 (예 : 기술 상점)를 사용하여 카메라를 가져와 노트북에 통합하면됩니다.


2

프레임 워크에는 필요한 기능이 있습니다. 정렬 메커니즘이 내장 된 일종의 배열이 필요할 수 있습니다. 또는 프레임 워크에서 찾을 수있는 모든 컨트롤을 배치 할 창이 필요할 수도 있습니다. 그것은 당신의 일을 중심으로 한 프레임에 걸친 일종의 일입니다.

편집 : 좋아, 나는 너희들이 나에게 말하려고하는 것을 파고하려고한다.) 아마도 당신은 아마도 "프레임 주위에 걸친 작업 ..."이라는 줄 사이의 정보를 알아 차리지 못했다. 난 당신이 gracfully있어 희망 그것에 바닥을 제공하려고 :
질문 "라이브러리와 프레임 워크의 차이"에 대한 좋은 설명 내가 여기
http://ifacethoughts.net/2007/06/04/difference-between- 도서관 및 프레임 워크 /


다운 투표를 완전히 이해하지 못한다. 나는 그것에 대해 완전히 기절했다. 질문은 초급 기본 질문의 일종이며 내 대답은 상당히 훌륭합니다 ...
OlimilOops

4
명확하게 : 나는 투표를하지 않았다. 그러나 당신이 말하는 것은 프레임 워크가 염려하는 것보다 훨씬 낮은 수준에 있습니다. 컬렉션 및 정렬 알고리즘은 예를 들어 프레임 워크보다 표준 라이브러리입니다.
bakkal

1
답변 주셔서 감사하지만 ... 내 질문에 대한 답변이 아닙니다. OP의 질문에 따르면, "표준 라이브러리"와 "프레임 워크"사이의 구분은 잘못된 위치입니다. 예를 들어 .net-framework에서 네임 스페이스 충돌이 .netframework의 일부가 아니라는 말을 들어 본 적이없는 프레임 워크의 일부에서 네임 스페이스 컬렉션을 찾을 수 있습니다. 내 질문에 대한 귀하의 답변이 잘못되었습니다
OlimilOops

1
이것은 라이브러리 의 정의입니다 . 라이브러리와 대조적으로 프레임 워크의 구별되는 특성을 놓치고 있습니다 : Inversion of Control .
Jörg W Mittag 2018 년

2

이미 이해했을 때만 이해할 수있는 정의를 넘어서, 예가 도움이되었습니다.

.Net에서 목록을 정렬 할 때 이해가 번쩍 번쩍합니다. 특정 기능을 제공하는 사용자 코드에 따라 기능을 제공하는 프레임 워크의 예 List.Sort (IComparer)를 가져옵니다. Sort 메서드의 .Net 프레임 워크에있는 정렬 알고리즘은 일련의 비교를 수행해야합니다. 물체 A가 물체 B 앞이나 뒤에 오는가? 그러나 Sort 자체는 비교를 수행하는 방법에 대한 실마리가 없습니다. 정렬되는 유형 만 알고 있습니다. 많은 사용자가 재사용 할 수있는 비교 정렬 알고리즘을 작성할 수 없었으며 정렬해야 할 모든 다양한 유형을 예상 할 수 있습니다. 약간의 작업을 사용자 자신에게 맡겨야합니다. 여기서 프레임 워크 인 정렬은 사용자 코드의 메소드를 다시 호출하여 유형을 정렬하여 비교할 수 있도록합니다. 또는 대리인을 사용할 수도 있습니다.

내가 이걸 얻었 니?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.