昆山軒轅高端IT培訓---ACE高性能網(wǎng)絡編程
一、課程目標
本次課程針對使用ACE工具包進行高性能網(wǎng)絡應用開發(fā),通過本次課程的學習,學員將具備以下能力:
- 了解ACE的架構和組件;
- 理解現(xiàn)代操作系統(tǒng)線程模型、并發(fā)以及同步機制;
- 熟練使用ACE線程管理和同步機制接口開發(fā)并發(fā)應用;
- 熟練使用ACE基本的IPC SAP接口,如SOCK_Stream、SOCK_Dgram等;
- 深刻理解現(xiàn)代操作系統(tǒng)中事件多路分離和分派機制如select、epoll等、了解異步I/O以及完成事件的分派;
- 熟練使用ACE Reactor組件、Acceptor-Connector組件、Proactor組件等構建穩(wěn)定、高效和靈活的網(wǎng)絡應用。
二、參訓要求
參加本次課程的學員須具備以下能力:
- 熟練掌握C++語法,理解C++面向對象和泛型(模板)機制;
- 了解TCP/IP協(xié)議,有網(wǎng)絡編程概念。
四、課程大綱
本次課程由以下幾個部分構成:
1、 ACE簡介
- 什么是ACE?
- ACE的使用范圍;
- ACE工具包的架構層次;
- ACE的組件簡介。
2、ACE基礎的網(wǎng)絡I/O對象
- 詳細介紹ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。
- ACE Socket基類:ACE_SOCK;
- TCP主動連接對象:ACE_SOCK_Connector;
- 基于TCP、面向連接的Socket:ACE_SOCK_Stream;
- TCP被動連接對象:ACE_SOCK_Acceptor;
- 基于UDP、無連接的Socket:ACE_SOCK_Dgram (Unicast)、ACE_SOCK_Dgram_Mcast (Multicast)、ACE_SOCK_Dgram_Bcast (Broadcast)。
3、ACE并發(fā)編程:線程與同步
- 線程與進程之區(qū)別;
- 用戶線程與內核線程;
- 不同操作系統(tǒng)中的線程模型;
- ACE線程管理:Thread_Manager;
- ACE線程同步:ACE_Guard、ACE_Thread_Mutex等;
- ACE Task框架:Message_Block、Message_Queue、ACE_Task。
4、ACE Reactor框架
ACE Reactor框架簡化事件驅動程序的開發(fā),而事件驅動是很多網(wǎng)絡化應用的基本特征,這些應用常見的事件源包括I/O事件、Posix信號或 Windows句柄激發(fā)以及定時器到期等。
- 關于ACE Reactor框架;
- 關于事件多路分離和分派 (Event demultiplexing and dispatching );
- Linux下 I/O事件多路分離機制:select、epoll;
- 事件處理器 ACE_Event_Handler:
- I/O事件(輸入、輸出)、信號、超時事件、異常事件的捕獲和處理;
- ACE_Timer_Queue和ACE_Time_Value:
- 定時器的應用;
- ACE_Reactor:ACE的反應器為ACE Reactor框架的核心,負責事件的檢測、多路分離和事件處理器的分派;
- 例程:基于ACE Reactor框架實現(xiàn)一個多人聊天室。
5、ACE Acceptor-Connector框架
ACE Acceptor-Connector框架實現(xiàn)了Acceptor-Connector模式,這種模式通過解除:1,網(wǎng)絡化應用中相互協(xié)作的對等服務的連接和初始化所需的活動、2,以及它們一旦連接和初始化后所執(zhí)行的處理的耦合,增強了軟件復用和可擴展性。
- 集成了Message_Queue的ACE_Event_handler:ACE_Svc_Handler;
- 接受器:ACE_Acceptor;
- 連接器:ACE_Connector;
- 例程:基于Acceptor-Connector框架實現(xiàn)一個轉發(fā)服務器。
6、ACE Proactor框架
Proactor框架引入異步I/O機制,既保留了Reactor框架的事件多路分離,避免多線程的開銷,同時還緩和了反應式的同步I/O的瓶頸效應。
- 關于Proactor模式和Proactor框架;
- 關于異步I/O;
- 異步I/O工廠類:
- ACE_Asynch_Read_Stream和ACE_Asynch_Write_stream;
- ACE_Handler;
- 前攝式Acceptor-Connector;
- 前攝器:ACE_Proactor;
- 例程:基于Proactor框架重新實現(xiàn)多人聊天室。
7、ACE實用工具
- ACE日志實用工具:ACE_Log_Msg;
- 讀寫配置文件:ACE_Configuration_Heap;
- Singleton模式 (單例模式) 的ACE實現(xiàn):ACE_Singleton類模板。
8、高性能網(wǎng)絡編程討論
- 考究高性能網(wǎng)絡編程中應該遵循的原則,討論并發(fā)、同步、事件多路分離等機制的適用場合。
- 網(wǎng)絡應用的瓶頸在何處?
- 事件多路分離 vs 一連接一線程 (Event demultiplexing vs One thread per connection);
- 同步I/O vs 異步I/O (Synchronous I/O vs Asynchronous I/O);
- 如何適當?shù)厥褂枚嗑€程?
- 什么時候需要多個 事件多路分離線程?
9、應用層協(xié)議定義與實現(xiàn)
- 為什么要自定義應用層協(xié)議?
- 定義應用層協(xié)議 (以XMMEP協(xié)議為例);
- 用C++實現(xiàn)自定義的協(xié)議 (以XMMEP協(xié)議為例)。
- 注:XMMEP為X-Messenger Message Exchanging Protocol。
六、課程資源
可獲取的課程資源見:教學資源。