Boost.Asio是用于网络和底层I/O编程的跨平台C++库,它使用现代C++方法为开发人员提供一致的异步模型。
基本原理
大多数程序都以某种方式与外界交互,无论是通过文件,网络,串行电缆还是控制台。有时,与网络情况一样,单个I/O操作可能需要很长时间才能完成。这对应用程序开发提出了特殊的挑战。
Boost.Asio提供了用于管理这些长时间运行的操作的工具,而无需程序使用基于线程和显式锁定的并发模型。
Boost.Asio库供使用C++进行系统编程的程序员使用,该系统通常需要访问诸如网络之类的OS功能。特别是,Boost.Asio实现了以下目标:
- 可移植性。该库应支持一系列常用的OS,并在这些OS之间提供一致的行为。
- 可扩展性。该库应促进可扩展到数千个并发连接的网络应用程序的开发。每个操作系统的库实现应使用最能实现此可伸缩性的机制。
- 效率。该库应支持散布式聚集I / O等技术,并允许程序将数据复制减至最少。
- 来自已建立的API的模型概念,例如BSD套接字。BSD套接字API得到了广泛的实现和理解,并且在许多文献中都有涉及。其他编程语言通常将类似的接口用于网络API。在合理的范围内,Boost.Asio应该利用现有做法。
- 使用方便。该库应采用工具箱而非框架方法,从而为新用户提供较低的入门门槛。就是说,它应该尝试在学习一些基本规则和准则的情况下,尽量减少前期投资。之后,库用户只需要了解所使用的特定功能。
- 进一步抽象的基础。该库应允许开发提供更高抽象级别的其他库。例如,常用协议(例如HTTP)的实现。
尽管Boost.Asio最初是聚焦在网络,但它的异步I/O概念已经扩展到包括其他操作系统资源,例如串行端口,文件描述符等。
核心概念和功能
Boost.Asio可用于对I/O对象(例如套接字)执行同步和异步操作。但是使用Boost Asio之前,了解Boost Asio的相关组成部分的框架图,对您在程序种如何使用它将会变得很有用。