인터넷 상점, 온라인 은행, 소셜 네트워크와 같은 대형 응용 프로그램은 종종 사용자 인증, 데이터베이스 상호 작용, 알림 보내기 등과 같은 동일한 전형적인 구성 요소와 기능이 필요합니다.
이를 재사용하기 위해 개발자들은 모든 인기 있는 프로그래밍 언어에 대한 특수한 종류의 소프트웨어인 프레임워크를 만들었습니다.
프레임워크는 전형적인 응용 프로그램이나 그 부분의 개발을 간편하게 하는 범용적이고 재사용 가능한 소프트웨어입니다.
구조화된 코드 템플릿으로 구성되어 있으며 특정 응용 프로그램의 요구에 쉽게 확장할 수 있는 일반 기능을 제공합니다.
저수준 작업에서 제어를 양보하고 고수준 문제에 중점을 둘려면 프레임워크에서 제공하는 API를 사용해야 합니다. 이는 전체 개발 시간을 크게 줄일 수 있습니다.
일부 프레임워크는 사실상 하나의 이름 아래 여러 프레임워크와 라이브러리를 통합한 것입니다.
프레임워크를 사용하는 애플리케이션은 프레임워크 위에 구축되어 특정 기능을 얻기 위해 코드를 확장합니다.
어떤 의미에서 프레임워크는 응용 프로그램이나 그 부분의 뼈대로 기능하며 "게임의 규칙"을 설정합니다.
반면 라이브러리는 전역적인 영향을 가지지 않고 특정 작업을 수행하는 일부 특정 작업만 제공합니다.
여기에 프레임워크와 라이브러리의 주요 차이점이 있습니다. 그러나 라이브러리는 프레임워크의 일부로 제공될 수 있습니다.
물론 프레임워크와 라이브러리 간에 명백한 유사성을 피할 수는 없습니다. 프레임워크를 사용하는 프로그래머는 프레임워크의 소스 코드를 수정하지 않으며 그저 사용자로서 동작합니다.
framework calls your code
but your code calls library
프레임워크와 함께 제공되는 가장 일반적인 원칙은 제어의 역전(Inversion of Control, IoC)입니다.
프레임워크에서는 라이브러리나 표준 사용자 응용 프로그램과는 달리 전체 프로그램의 제어 흐름이 호출자가 아니라 프레임워크에 의해 결정됩니다. 즉, 프레임워크가 사용자의 코드를 호출합니다.
사용자의 코드가 라이브러리를 호출하는 것과는 달리 프레임워크에서는 프레임워크가 사용자의 코드를 호출하지만 사용자의 코드에서는 라이브러리를 호출합니다.
이는 1)프레임워크가 가능한 작업에 대한 템플릿을 제공하고 2)프레임워크 개발자가 템플릿 간의 상호 작용을 정의했기 때문에 발생합니다.
프레임워크 사용자는 단순히 템플릿을 가져다가 응용 프로그램별 코드로 확장합니다.
적절하지 않은 프레임워크 선택은 응용 프로그램을 더 어렵게 만들 수 있습니다.
1. 응용 프로그램 지연: 프레임워크는 종종 프로그래머에게 숨겨진 많은 중량의 작업을 수행합니다.
2. 더 이상 적합하지 않은 프레임워크를 다른 것으로 대체하는 것은 라이브러리처럼 쉽지 않을 수 있습니다.
3. 프레임워크에서 버그를 만날 수 있으며 이는 작업에 영향을 미칠 수 있습니다.
일반적으로 각 프로그래밍 언어에는 여러 프레임워크가 있습니다. 물론 이미 어떤 프레임워크가 사용되고 있는 회사에 가면 선택의 여지가 없을 수 있습니다.
그러나 선택의 여지가 있는 경우에는 결정을 내릴 때 모든 가능한 이점과 문제를 고려하려고 노력해야 합니다.
여기 몇 가지 적절한 프레임워크를 선택하는 일반적인 조언이 있습니다:
잘 알려진 프레임워크와 좋은 문서에 주목하세요. 이는 사용을 간편하게 만들 뿐만 아니라 이미 이 프레임워크에 익숙한 개발자를 쉽게 찾을 수 있도록 해줍니다.
일부 인기있는 프레임워크는 특정 유형의 응용 프로그램을 개발하는 데 대한 사실상의 표준이 될 수 있습니다. 이러한 프레임워크를 먼저 고려해보는 것이 좋습니다.
프레임워크 선택에 대한 일반적인 조언입니다. 작은 응용 프로그램을 작성하고 해당 응용 프로그램이 아마도 변경되지 않을 경우에는 프레임워크 없이 개발할 수 있습니다.
게다가 그러한 응용 프로그램에는 불필요한 추가 복잡성을 도입할 수 있습니다. 그러나 가벼운 프레임워크를 사용하거나 응용 프로그램 일부에만 프레임워크를 선택할 수도 있습니다.
이는 일반 정보이며 프로그램이 다양하고 가능한 프레임워크도 다양하다는 점을 상기하십시오. 가장 중요한 것은 특정 프레임워크를 직접 알아보고 밀접하게 작업하는 것입니다.
How does a programmer use generic framework functionality to write application-specific code?
-> By extending it
What does a framework do? Find the most suitable statement.
-> It defines the skeleton of an application and provides generic functionality