대부분의 프로그램은 외부 세계와 교류한다. 이것은 파일을 통해서, 네트워크를 통해서, 시리얼 케이블을 통해서 또는 콘솔을 통해서 한다. 네트워크의 경우 I/O 명령 완료까지 긴 시간이 걸린다. 이것은 애플리케이션 개발에게 있어서 피할 수 없는 도전이다.

Boost.Asio
는 이와 같이 긴 실행 시간이 걸리는 조작을 다룬다. 스레드나 명시적인 lock 없이.

Boost.Asio
C++ 시스템 프로그래밍 프로그래머를 대상으로 하고 있다. 이들은 네트워크와 같은 OS의 기능에 빈번하게 접근할 필요가 있는 프로그래머 이다. Boost.Asio는 다음의 목표를 가지고 있다.

 

이식성:폭 넓게 사용되고 있는 OS를 지원 해야 한다. OS가 달라도 일관된 동작을 제공한다.

확장성:1000대 규모의 병렬 처리의 네트워크 애플리케이션 개발에도 사용할 수 있는 라이브러리이다. OS 마다 확장성을 실현하기 위한 최적의 사양을 가지고 있다.

효율성Scatter-gather I/O등의 수법을 사용할 수 있어야 한다. 또 데이터 복사를 최소화 해야 한다.

 

BSD소켓과 같이 확립된 API에서 모델의 컨셉을 얻는다: BSD 소켓 API는 널리 구현되어 있다. 다른 프로그래밍 언어에서도 네트워크 API로 비슷한 인터페이스를 가지고 있다. 이치에 맞게 Boost.Asio는 존재하는 프랙티스를 살려야 한다.

 

간단하게 사용할 수 있어야 한다:이 라이브러리는 툴 킷을 사용하는 새로운 유저에 대해서 참가 장벽이 낮을 필요가 있으므로 프레임워크 방식이 아닌 툴 킷 방식을 취한다. 적은 룰과 가이드 라인을 학습하는 것만으로 사용할 수 있게 한다. 그 후는 라이브러리의 특정 함수의 사용 법에 대해서 이해하면 사용할 수 있다.

 

진화된 추상화에 의한 기초: 라이브러리는 높은 레벨의 추상화를 다른 라이브러리 개발자가 할 수 있도록 해야 한다. 예를 들면 HTTP와 같이 자주 사용되는 프로토콜의 구현에 관해서 처음은 Boost.Asio는 네트워크를 통한 비동기 I/O만으로 목표를 한정하고 있지만 다른 OS의 리소스 예를 들면 시리얼포트나 파일 등을 사용할 수 있도록 확장하고 있다.

 

 

출처: http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview.html

 

by 흥배 2013. 6. 12. 08:00