譯者序
序言
前言
第一部分 COM+基礎
第1章 錯誤處理 1
1.1 COM+錯誤和結構化異常處理 1
1.2 COM+ 錯誤處理模型 2
1.2.1 結果代碼 3
1.2.2 錯誤上下文 5
1.3 Visual Basic 環(huán)境需要考慮的問題 6
1.4 Visual C++ 環(huán)境需要考慮的問題 7
1.5 C++錯誤模型綜合處理方法 8
1.5.1 結果代碼的框架 8
1.5.2 報告函數 10
1.5.3 異常類 12
1.5.4 異常處理宏 18
1.5.5 應用模式 19
第2章 靈巧指針 22
2.1 靈巧指針的優(yōu)點 23
2.2 應用模式 23
2.3 靈巧指針的比較 27
2.4 擴充的接口 28
2.4.1 UUID 類型綁定 29
2.4.2 異常 29
2.4.3 返回值 29
2.4.4 語法屬性 32
2.5 作為參數的靈巧指針 33
2.6 靈巧指針的缺陷 35
2.6.1 Release 35
2.6.2 SetErrorInfo 36
2.6.3 互操作的漏洞 37
2.7 通用程序設計的考慮 38
第3章 字符串 39
3.1 字符編碼 39
3.1.1 ANSI 39
3.1.2 DBCS 40
3.1.3 Unicode 40
3.2 平臺考慮 41
3.3 項目設置 42
3.4 TCHAR.H 44
3.5 字符串轉換宏 45
3.6 OLECHAR 數據類型 46
3.7 BSTR 數據類型 47
3.8 BSTR的替代物 49
3.9 字符串模板和類 50
3.10 BSTR 包裹器類 52
3.10.1 功能比較 53
3.10.2 應用模式 54
第4章 并發(fā)性 56
4.1 截取的要素 57
4.1.1 并發(fā)與可重入的比較 57
4.1.2 截取的實現 57
4.1.3 套間 58
4.1.4 STA 并發(fā)操作的管理 61
4.1.5 環(huán)境 62
4.1.6 消息過濾器 67
4.1.7 截取服務 68
4.2 環(huán)境中立性 70
4.2.1 實現 70
4.2.2 內部對象引用 71
4.2.3 難道這樣更快嗎 73
4.2.4 FTM與TNA的比較 73
4.2.5 它是對象的選擇 74
4.3 并發(fā)設計指南 74
4.3.1 最好的并發(fā)性是沒有并發(fā)性 74
4.3.2 異常:客戶通知的示例 75
4.3.3 標準同步設置 76
4.4 本地服務器中的并發(fā)性 76
4.4.1 本地服務器中的套間 77
4.4.2 本地服務器的缺陷 77
4.4.3 部分位置透明性 78
4.4.4 結論 78
4.5 鎖 79
4.5.1 粗粒度鎖 79
4.5.2 細粒度鎖 90
第5章 COM+開發(fā)環(huán)境 107
5.1 對象膠:IDL和類型庫 108
5.2 Visual C++ 110
5.2.1 COM+ 集成方法 111
5.2.2 調用 COM+ 對象 112
5.2.3 實現COM+ 對象 116
5.2.4 事件支持 124
5.2.5 類廠 128
5.2.6 多個雙重繼承 130
5.2.7 關于大型項目的特殊考慮 131
5.3 Visual Basic 132
5.3.1 調用COM+ 對象 132
5.3.2 實現COM+ 對象 134
5.3.3 事件支持 139
5.3.4 多個雙重繼承 141
5.4 Visual J++ 141
5.4.1 調用COM+ 對象 142
5.4.2 實現COM+ 對象 146
5.4.3 事件支持 151
5.4.4 類廠 158
5.4.5 多個雙重繼承 159
5.5 腳本 159
5.5.1 調用COM+ 對象 160
5.5.2 實現COM+ 對象 161
5.5.3 事件支持 166
5.6 選擇實現環(huán)境 168
第二部分 體系結構模式與解決方案
第6章 體系結構模式與解決方案的重用 171
6.1 通過面向對象的重用 171
6.2 COM+中的面向對象 172
6.3 分層的重用 173
6.4 隔離接口實現的案例 174
6.5 COM+解決方案 176
6.5.1 包容 176
6.5.2 聚合 176
6.6 實現繼承 178
6.7 多重實現繼承 183
6.8 用C++模板增強源代碼重用 189
6.8.1 參數化派生類的類型 190
6.8.2 參數化基類的類型 193
6.8.3 實現還未定義的接口 195
第7章 流和持久性 198
7.1 輕量持久性 199
7.2 持久性的解決方案 201
7.2.1 手工數據轉換 201
7.2.2 框架或其他專有的解決方案 204
7.2.3 選擇一種可移植的格式 206
7.3 類型流結構 217
7.3.1 ITypeStream接口 217
7.3.2 CTypeStreamImpl類 220
7.3.3 類型流移動運算符 232
7.3.4 編碼器和適配器 241
7.3.5 類型流持久性接口 243
7.3.6 CTypeStreamOnIStream 248
7.4 C++ IOStream適配器和編碼器 254
7.5 網絡數據表示 274
7.6 NDR流 280
7.7 應用模式 310
第8章 按值排列 314
8.1 按值排列的時候和原因 315
8.2 IMarshal的研究 318
8.3 自然的MBV實現 320
8.4 可重用MBV 323
8.5 IMarshal的再研究 324
8.6 一種解決方案 325
8.7 按值排列Visual Basic對象 350
8.8 精確調節(jié)MBV 365
8.9 結論 366
第9章 引用循環(huán)管理 368
9.1 資源管理 368
9.2 廢棄的環(huán) 372
9.3 特殊解決方案與通用解決方案的比較 375
9.4 垃圾收集環(huán)境中的COM+對象 377
9.4.1 Visual Basic 378
9.4.2 Visual J++ 382
9.5 C++解決方案的框架 385
9.6 利用通用授權器來簡化模型 392
9.7 在其他語言下重用分割身份 394
第10章 通用程序設計 396
10.1 通用程序設計的威力 396
10.2 STL的回顧 401
10.2.1 容器 402
10.2.2 迭代器 403
10.2.3 通用算法 404
10.3 與組件技術的對立 406
10.4 CSB體系結構 408
10.5 CSB指南 414
10.5.1 主導思想 415
10.5.2 集合包裹器 415
10.5.3 預定義特性 422
10.5.4 預定義的接口方法實現 431
10.5.5 持久性支持 432
10.5.6 STL適配器 436
10.5.7 支持結構 445
10.5.8 可選功能 447
10.5.9 項目配置 451
10.5.10 編譯器和STL支持 451
10.6 CSB的內部類型安全性 452
10.7 應用模式 453
第三部分 企業(yè)環(huán)境中的COM+
第11章 四層企業(yè)應用體系結構 475
11.1 COM+ 設計模型概念 475
11.1.1 N層應用體系結構 476
11.1.2 商務對象 477
11.2 設計模型體系結構 479
11.2.1 表示服務層 480
11.2.2 對象服務層 480
11.2.3 事務服務層 481
11.2.4 數據服務層 481
11.2.5 簡化對象持久性 481
11.3 基于COM的層次對象模型 482
11.4 從行和列到集合和對象 485
11.4.1 IPersistObjectStream接口 486
11.4.2 IObjectStream接口 488
11.4.3 IPersistTransStream 接口 492
11.4.4 ITransStream接口 494
11.4.5 使用設計模型接口 497
11.4.6 檢索一個復雜的對象 497
11.4.7 根據需要獲取孩子對象 506
11.4.8 創(chuàng)建一個目錄對象 507
11.5 對象持久性和COM+事務 511
11.5.1 把更改保存到現存的對象中 513
11.5.2 保存新對象 521
11.5.3 刪除對象 525
11.6 使用設計模型來實現基于Web
的應用程序 527
第12章 SOAP 529
12.1 為何使用SOAP 530
12.2 SOAP細節(jié) 532
12.2.1 SOAP請求 533
12.2.2 SOAP響應 535
12.2.3 SOAP錯誤 536
12.3 SOAP 代碼示例 537
12.4 SOAP 工具包 544
12.4.1 使你的SOAP服務器為用戶所知 544
12.4.2 描述SOAP服務器 545
12.4.3 調用SOAP方法 546
12.5 設計SOAP解決方案 551
12.5.1 互操作性 553
12.5.2 性能 553
12.5.3 支持現存的組件 554
12.5.4 安全性 554
12.5.5 缺點 554
12.5.6 優(yōu)點 554
12.5.7 工具包 554
第13章 MTS革命 556
13.1 可伸縮性的簡單歷史回顧 557
13.2 單并發(fā)客戶模型 562
13.3 可伸縮性設計 567
13.3.1 Web 示例的精化 567
13.3.2 內存中的替代物 572
13.3.3 線程控制 579
13.4 事務 582
13.5 無狀態(tài)性 590
13.6 Internet的項目模型 593
第14章 數據訪問 598
14.1 資源分配器 599
14.2 數據訪問技術概述 602
14.3 OLE DB速成教程 606
14.3.1 透明的 OLE DB服務 608
14.3.2 OLE DB提供者服務組件 610
14.3.3 OLE DB對象 611
14.3.4 事務支持 613
14.3.5 游標 615
14.3.6 行集合的處理 618
14.4 ActiveX數據對象概覽 619
14.5 資源池 624
14.6 C++數據訪問 627
14.7 提供者細節(jié)問題:快速加載 636