boost.asio源碼剖析(一) ---- 前 言


* 前言

源碼之前,了無秘密。
                                                       ——侯捷

      Boost庫是一個可移植、提供源代碼的C++庫,作為標准庫的后備,是C++標准化進程的開發引擎之一。Boost庫由C++標准委員會庫工作組成員發起,其中有些內容有望成為下一代C++標准庫內容。在C++社區中影響甚大,是不折不扣的“准”標准庫。


      boost.asio是Boost庫中非常著名的I/O組件,是用於網絡和低層IO編程的跨平台C++庫,為開發者提供了C++環境下穩定的異步模型。其在性能、移植性、擴展性等方面均為人稱道,甚至被很多業內人士稱為“網絡神器”。asio是目前唯一有希望進入C++標准庫以彌補標准庫在網絡方面的缺失的C++網絡庫,因此對asio的學習在某種意義上可以說是學習C++網絡編程的必修課。

      當前網絡上從用戶角度介紹asio的文獻很多也很完善,所以本文決定另辟蹊徑,從asio源碼角度出發,由內而外、深入淺出地剖析asio的架構和設計理念,將asio的一切秘密呈現在讀者眼前。

      本文適合已有較完善的C++基礎知識、具備一定程度的泛型技術和面向對象技術、並對boost.asio有一定的了解的讀者。

      首先,本文先從面向對象的角度對asio的架構開始剖析,由粗至細。先讓讀者對asio有一個高屋建瓴的認識,再逐步細化,最終透徹地了解asio的架構。
      然后,本文以Windows平台下的Tcp協議為例,以跟蹤流程的方式探究asio的運作原理。(如果作者時間充足或有讀者願意共享,后續會給出其他平台下的流程)
      再次,本文從泛型編程的角度對asio的架構做進一步剖析。在此,讀者將會看到asio中的各個泛型組件、泛型約束/概念(concepts)、擴展方向與方法、以及泛型技術與面向對象技術的完美結合。
      最后,本文從用戶的角度分析asio的優缺點,再分享一個基於asio封裝的開源網絡庫<asioex>,力求揚長避短、充分發揮asio的強大威力。

      由於作者技術水平有限,文中難免謬誤,誠望讀者指正。

      於洋子敬上
      2014年6月6日

 

由於本文會實時根據讀者反饋的寶貴意見更新,為防其他讀者看到過時的文章,因此本系列專題謝絕轉載!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM