ACE技術內幕

內容介紹

本書從構架模式、編程示例和原始碼3個維度系統地對經典網路框架ACE(Adaptive Communication Environment)的架構設計和實現原理進行了深入分析,它能解決4個方面的問題:第一,幫助框架設計者領略軟體框架設計的普適原則和思想,進而設計出自己的軟體框架;第二,幫助ACE套用開發人員加深對ACE框架的理解,提升開發水平,更好地去定製和擴展ACE框架,以及解決C++網路通信中的難題;第三,幫助C++開發人員加深C++語言功底,書中有大量對C++原始碼的分析,包括網路編程、動態庫編程和異步編程等,還涉及10餘個經典的設計模式的解析;第四,增強平台開發人員和軟體架構師的技術修養,ACE的設計和實現都極其優秀,它的實現源碼和架構思想非常值得去學習和研究。
全書一共7章,詳細分析了ACE的Reactor、Service Configurator、Task、Acceptor_Connector、Proactor和Streams等6個框架的架構設計與實現原理。每個框架的分析分為3部分:第一,框架的設計分析,每個框架(除Task框架)都有一個構架模式與之對應,構架模式闡述了框架的設計原理,給出了框架的總體結構,是學習框架的理論基礎;第二,框架的套用分析,每個框架都有一個套用實例與之對應,套用實例既幫助讀者了解框架的使用方法,又為讀者提供了一個可以調試的應用程式,便於讀者使用調試器探索框架的內部秘密;第三,框架的實現分析,這是本書的重點,對框架的實現原理進行了詳細的分析,並且對重點的類和流程給出了UML類圖和UML順序圖,可以讓讀者在短時間內掌握框架的實現技術。

作品目錄

前 言
第1章 概述 / 1
1.1 模式與框架 / 1
1.1.1 模式 / 1
1.1.2 框架 / 2
1.1.3 模式與框架的關係 / 3
1.2 ACE框架 / 3
1.3 關於本書 / 7
1.3.1 本書的內容 / 7
1.3.2 原始碼的表示 / 8
1.3.3 測試組網 / 9
1.3.4 幾個常用術語 / 9
1.4 ACE Socket封裝器 / 9
1.4.1 示例分析 / 10
1.4.2 Socket IPC分析 / 13
1.4.3 ACE_SOCK_Acceptor類的分析 / 15
1.4.4 ACE_SOCK_Connector類的分析 / 19
1.5 進一步學習 / 23
1.6 總結 / 23
第2章 Reactor框架 / 24
2.1 Reactor構架模式 / 24
2.2 Reactor框架概述 / 26
2.3 Reactor框架套用示例 / 27
2.3.1 I/O事件處理器的實現 / 27
2.3.2 Accept事件處理器的實現 / 31
2.3.3 main函式 / 34
2.4 事件處理器接口實現 / 35
2.4.1 事件處理器接口的構造與析構 / 38
2.4.2 事件處理器接口的使用規範 / 38
2.5 Reactor管理器的設計分析 / 39
2.5.1 Reactor管理器接口分析 / 40
2.5.2 Bridge設計模式接口 / 44
2.5.3 ACE_Select_Reactor_Impl類的分析 / 45
2.5.4 ACE_Select_Reactor_T類的分析 / 46
2.6 I/O事件調度的分析 / 47
2.6.1 I/O事件調度集的設計 / 47
2.6.2 調度集操作函式的分析 / 50
2.6.3 I /O事件處理器倉庫的分析 / 53
2.6.4 I/O事件註冊流程的分析 / 59
2.6.5 I/O事件調度流程的分析 / 61
2.6.6 I/O事件刪除流程的分析 / 70
2.7 信號量事件調度的分析 / 71
2.7.1 信號量事件管理器的分析 / 71
2.7.2 Reactor管理器中的信號量事件處理 / 77
2.7.3 信號量事件刪除流程的分析 / 78
2.8 定時器事件調度的分析 / 79
2.8.1 定時器事件管理器的分析 / 80
2.8.2 定時器事件註冊流程的分析 / 93
2.8.3 定時器事件調度流程的分析 / 94
2.8.4 定時器事件刪除流程的分析 / 95
2.9 Notify事件調度的分析 / 96
2.9.1 Notify事件管理器的分析 / 97
2.9.2 Notify事件註冊流程的分析 / 105
2.9.3 Notify事件調度流程的分析 / 106
2.10 進一步學習 / 107
2.11 總結 / 107
第3章 Service Configurator框架 / 108
3.1 Component Configurator構架模式 / 108
3.2 Configurator框架概述 / 109
3.3 Configurator框架套用示例1 / 111
3.3.1 配置檔案 / 111
3.3.2 可配置組件 / 111
3.3.3 main函式 / 113
3.4 ACE動態庫接口封裝的分析 / 114
3.5 配置組件接口的分析 / 115
3.6 組件工廠函式的分析 / 117
3.7 組件配置器設計的分析 / 119
3.7.1 組件配置器控制接口的分析 / 119
3.7.2 組件配置器實現的分析 / 128
3.7.3 語法分析器的分析 / 138
3.8 動態庫符號定位的分析 / 141
3.8.1 ACE_Location_Node類分析 / 142
3.8.2 ACE_Object_Node類的分析 / 143
3.8.3 ACE_Function_Node類的分析 / 144
3.9 配置組件倉庫的分析 / 147
3.9.1 find函式 / 148
3.9.2 remove函式 / 149
3.9.3 suspend函式 / 150
3.9.4 resume函式 / 150
3.10 配置組件類型的分析 / 151
3.10.1 ACE_Service_Type類 / 152
3.10.2 ACE_Service_Type_Impl類 / 153
3.10.3 ACE_Service_Object_Type類 / 154
3.10.4 ACE_Service_Type_Factory類 / 154
3.11 指令解析功能的分析 / 156
3.12 配置檔案解析流程的分析 / 157
3.13 Configurator框架套用示例2 / 160
3.13.1 可配置組件 / 160
3.13.2 配置檔案 / 161
3.13.3 配置檔案解析流程的分析 / 162
3.14 配置改變 / 162
3.15 Configurator框架套用示例3 / 162
3.15.1 靜態配置組件 / 163
3.15.2 配置檔案 / 165
3.15.3 靜態配置組件分析 / 166
3.16 進一步學習 / 169
3.17 總結 / 169
第4章 Task框架 / 170
4.1 Task框架概述 / 170
4.2 Task框架套用示例 / 171
4.2.1 生產者 / 171
4.2.2 消費者 / 173
4.2.3 main函式 / 174
4.3 ACE訊息佇列實現分析 / 175
4.3.1 數據塊結構分析 / 176
4.3.2 訊息塊結構的分析 / 180
4.3.3 訊息佇列實現的分析 / 182
4.4 ACE多執行緒編程 / 185
4.4.1 執行緒的創建 / 186
4.4.2 執行緒的運行 / 189
4.4.3 執行緒的退出 / 191
4.4.4 執行緒等待 / 195
4.5 Task框架接口的分析 / 198
4.5.1 ACE_Task_Base類 / 199
4.5.2 ACE_Task類 / 200
4.6 Active Object設計模式 / 201
4.6.1 模式概述 / 201
4.6.2 套用示例 / 203
4.6.3 ACE_Future和ACE_Future_Rep類 / 207
4.7 進一步學習 / 210
4.8 總結 / 210
第5章 Acceptor_Connector框架 / 211
5.1 Acceptor_Connector構架模式 / 211
5.2 Acceptor_Connector框架概述 / 212
5.3 Acceptor_Connector框架套用示例 / 213
5.3.1 open函式 / 214
5.3.2 handle_input函式 / 214
5.3.3 handle_close函式 / 215
5.3.4 main函式 / 215
5.4 服務處理器接口的分析 / 216
5.4.1 open函式 / 217
5.4.2 handle_close函式 / 218
5.4.3 close函式 / 219
5.4.4 shutdown函式 / 219
5.5 Acceptor設計的分析 / 220
5.5.1 ACE_Acceptor類 / 220
5.5.2 open函式 / 221
5.5.3 handle_input函式 / 222
5.5.4 handle_close函式 / 224
5.6 Connector設計的分析 / 225
5.6.1 ACE_Connector類 / 226
5.6.2 阻塞模式連線的分析 / 226
5.6.3 非阻塞模式連線的分析 / 229
5.7 進一步學習 / 236
5.8 總結 / 236
第6章 Proactor框架 / 237
6.1 Proactor構架模式 / 237
6.2 Proactor框架概述 / 239
6.3 Proactor框架套用示例 / 240
6.3.1 I/O事件完成處理器的實現 / 240
6.3.2 異步Acceptor的實現 / 245
6.3.3 main函式 / 245
6.4 事件完成處理器接口的分析 / 246
6.5 Proactor管理器的設計分析 / 247
6.5.1 Proactor管理器接口的分析 / 248
6.5.2 Bridge設計模式接口 / 252
6.5.3 ACE_POSIX_Proactor接口分析 / 252
6.6 異步操作初始化器和操作結果分析 / 253
6.6.1 公共接口介紹 / 256
6.6.2 ACE_POSIX_Asynch_Operation類 / 256
6.6.3 ACE_POSIX_Asynch_Result類 / 258
6.6.4 ACE_POSIX_Asynch_Read_Stream_Result類 / 261
6.6.5 ACE_POSIX_Asynch_Read_Stream類 / 263
6.7 ACE_POSIX_AIOCB_Proactor管理器實現的分析 / 265
6.7.1 構造函式 / 267
6.7.2 start_aio函式 / 268
6.7.3 handle_events_i函式 / 271
6.7.4 find_completed_aio函式 / 274
6.7.5 start_deferred_aio函式 / 275
6.7.6 application_specific_code函式 / 277
6.8 異步非I/O事件調度的分析 / 278
6.8.1 ACE_AIOCB_Notify_Pipe_Manager類 / 278
6.8.2 post_completion函式 / 281
6.8.3 putq_result函式 / 282
6.8.4 process_result_queue函式 / 283
6.9 定時器事件調度的分析 / 283
6.9.1 定時器事件操作結果的分析 / 284
6.9.2 定時器管理器實現的分析 / 285
6.10 網路連線之accept事件調度的分析 / 290
6.10.1 Reactor任務分析 / 292
6.10.2 異步Acceptor分析 / 293
6.10.3 ACE_POSIX_Asynch_Accept類 / 294
6.10.4 ACE_POSIX_Asynch_Accept_Result類 / 300
6.10.5 ACE_Asynch_Acceptor類 / 302
6.11 Proactor框架的調度分析 / 311
6.11.1 調度函式分析 / 311
6.11.2 退出調度分析 / 311
6.12 進一步學習 / 313
6.13 總結 / 313
第7章 Streams框架 / 314
7.1 管道和過濾器構架模式 / 314
7.2 Streams框架的概述 / 315
7.2.1 ACE_Task類 / 315
7.2.2 put函式 / 316
7.2.3 put_next函式 / 316
7.3 Streams框架套用示例 / 317
7.3.1 Logrec_Reader類 / 317
7.3.2 Logrec_Timer類 / 318
7.3.3 Logrec_Suffix類 / 319
7.3.4 Logrec_Writer類 / 319
7.3.5 main函式 / 320
7.4 ACE_Module類的分析 / 322
7.4.1 open函式 / 323
7.4.2 link函式 / 324
7.4.3 ACE_Module的關閉 / 325
7.5 ACE_Stream類的分析 / 326
7.5.1 構造函式 / 326
7.5.2 open函式 / 327
7.5.3 push函式 / 329
7.5.4 close函式 / 330
7.6 進一步學習 / 331
7.7 總結 / 331
參考文獻 / 332

相關詞條

相關搜尋

熱門詞條

聯絡我們