728x90
반응형
이론적 해석 (Rationale)
대부분의 프로그램은 어떤 방식(파일, 네트워크, 직렬 케이블 또는 콘솔을 통해)으로든 외부 세계와 상호 작용한다. 때로는 네트워크의 경우와 마찬가지로 개별 I / O 작업을 완료하는데 오랜 시간이 걸릴 수 있다. 이것은 응용프로그램 개발에 특별한 도전을 제기한다.
Boost.Asio는 프로그램이 스레드와 명시적 잠금을 기반으로 하는 동시 실행 모델을 사용할 필요 없이 장기 실행 작업을 관리할 수 있는 도구를 제공한다.
Boost.Asio 라이브러리는 네트워크와 같이 운영 체제 기능에 대한 접근이 필요한 시스템 프로그래밍에 C++를 사용하는 프로그래머를 위한 것이다. 특히 Boost.Asio는 다음과 같은 목표를 다룬다:
- 이식성: 라이브러리는 일반적으로 사용되는 다양한 운영 체제를 지원해야 하며, 이러한 운영 체제에서 일관된 동작을 제공해야 한다.
- 확장성: 라이브러리는 수천 개의 동시 연결까지 확장되는 네트워크 응용 프로그램의 개발을 가능하게 해야 한다. 각 운영 체제에서 라이브러리 구현은 이러한 확장성을 가장 잘 사용하는 메커니즘으로 구현되어야 한다.
- 효율성: 라이브러리는 분산-수집 I/O와 같은 기술을 지원해야 하며 프로그램에서 데이터 복사를 최소화해야 한다.
- BSD 소켓과 같은 확실한 API 모델 개념: BSD 소켓 API는 널리 구현되고 이해되며, 많은 문헌에서 다루고 있다. 다른 프로그램 언어들은 네트워크 API를 위해 유사한 인터페이스를 종종 사용한다. 합리적이라면, Boost.Asio는 기존 관행을 활용해야 한다.
- 사용의 편리성: 라이브러리는 신규 사용자에게 프레임워크가 아닌 툴킷 접근 방식의 낮은 진입장벽을 제공해야 한다. 즉, 몇 가지 기본 규칙과 지침을 배우기 위한 초기 투자 시간을 최소화해야 한다. 그 후, 라이브러리 사용자는 사용 중인 특정 기능만 이해하면 된다.
- 추가 추상화의 기반: 라이브러리는 더 높은 수준의 추상화를 제공하는 다른 라이브러리의 개발을 허용해야 한다. 예를 들면 HTTP와 같이 일반적으로 사용되는 프로토콜의 구현이 있다.
Boost.Asio는 주로 네트워킹에 중점을 두지만, 비동기 I/O의 개념은 직렬 포트, 파일 설명자 등 다른 운영 체제 리소스를 포함하도록 확장되었다.
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 개요 - 핵심 개념 및 기능 - Boost.Asio 기본 구조 (0) | 2020.12.05 |
---|---|
Boost.Asio 개요 - 핵심 개념 및 기능 (0) | 2020.12.05 |
Boost.Asio 개요 (0) | 2020.12.04 |
Boost.Asio 홈 (0) | 2020.12.04 |
Boost.Asio 란? (0) | 2020.12.04 |