注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計.NETC#和.NET實戰(zhàn):平臺、語言與框架

C#和.NET實戰(zhàn):平臺、語言與框架

C#和.NET實戰(zhàn):平臺、語言與框架

定 價:¥99.00

作 者: Patrick Smacchia
出版社: 人民郵電出版社
叢編項: 圖靈程序設(shè)計叢書
標(biāo) 簽: .NET

ISBN: 9787115166203 出版時間: 2007-12-01 包裝: 平裝
開本: 16 頁數(shù): 765 字?jǐn)?shù):  

內(nèi)容簡介

  本書是一本知識密集的C# 技術(shù)經(jīng)典圖書,Microsoft .NET MVP 力作,眾多.NET 專家口口相傳的一本秘籍。全書分為三個部分,第一部分講述底層的.NET 平臺,涵蓋了.NET 各方面的基礎(chǔ)知識和工作原理;第二部分是C# 語言部分,通過與C++ 比較的方式進(jìn)行講解,清晰易懂;第三部分講述.NETFramework 中的基本類庫,內(nèi)容幾乎涉及.NET 常見領(lǐng)域的全部知識。本書主要面向熟悉.NET 的編程人員,也適合.NET 技術(shù)的初學(xué)者閱讀。

作者簡介

暫缺《C#和.NET實戰(zhàn):平臺、語言與框架》作者簡介

圖書目錄

第1章 .NET簡介        1
1.1 什么是.NET        1
1.1.1 微軟軟件開發(fā)平臺        1
1.1.2 一組規(guī)范        1
1.1.3 .NET概覽        1
1.2 發(fā)展歷程        2
1.2.1 過去        2
1.2.2 現(xiàn)在        2
1.2.3 未來        3
1.3 微軟和Windows以外的.NET        3
1.3.1 ECMA組織與.NET        3
1.3.2 W3C聯(lián)盟        4
1.3.3 Mono項目        4
1.3.4 微軟SSCLI項目        4
1.4 .NET資源鏈接        5
1.4.1 網(wǎng)站        5
1.4.2 新聞組        5
1.4.3 博客        6
第一部分 .NET平臺
第2章 程序集、模塊和IL語言        10
2.1 程序集、模塊和資源文件        10
2.1.1 程序集和模塊        10
2.1.2 資源文件        10
2.1.3 程序集、模塊、類型和資源        10
2.1.4 為何對多模塊程序集感興趣        11
2.1.5 ILMerge工具        11
2.2 模塊的剖析        11
2.2.1 可移植的可執(zhí)行文件簡介        11
2.2.2 模塊的結(jié)構(gòu)        11
2.2.3 清單的結(jié)構(gòu)        12
2.2.4 類型元數(shù)據(jù)段的結(jié)構(gòu)        12
2.3 使用ildasm.exe和Reflector工具分析程序集        14
2.3.1 創(chuàng)建需要分析的程序集        14
2.3.2 使用ildasm.exe分析模塊        15
2.3.3 Reflector工具        16
2.4 程序集attribute和版本設(shè)定        17
2.4.1 程序集的標(biāo)準(zhǔn)attribute        17
2.4.2 程序集的版本設(shè)定        18
2.4.3 友元程序集        18
2.5 強(qiáng)名稱程序集        19
2.5.1 簡介        19
2.5.2 sn.exe工具        19
2.5.3 公鑰記號        20
2.5.4 為程序集簽名        21
2.5.5 具體示例        21
2.5.6 程序集的延遲簽名        23
2.6 國際化/本地化與衛(wèi)星程序集        23
2.6.1 區(qū)域設(shè)置和本地化        23
2.6.2 資源文件        24
2.6.3 在代碼中使用資源        25
2.6.4 創(chuàng)建衛(wèi)星程序集        26
2.6.5 部署和使用衛(wèi)星程序集        26
2.6.6 避免在資源無法找到時引發(fā)異常        27
2.6.7 Visual Studio與衛(wèi)星程序集        28
2.6.8 區(qū)域設(shè)置與字符串格式化        28
2.7 IL語言簡介        29
2.7.1 棧及其特殊的IL指令        29
2.7.2 示例1:局部變量與棧        29
2.7.3 示例2:方法調(diào)用與棧        30
2.7.4 用于比較、分支和跳轉(zhuǎn)的IL指令        31
2.7.5 IL的面向?qū)ο筇匦?nbsp;       32
2.7.6 元數(shù)據(jù)符號        32
第3章 生成、部署以及配置.NET應(yīng)用程序        34
3.1 用MSBuild生成應(yīng)用程序        34
3.2 MSBuild:目標(biāo)、任務(wù)、屬性、項與條件        34
3.2.1 .proj文件、目標(biāo)與任務(wù)        34
3.2.2 屬性        36
3.2.3 項        36
3.2.4 條件        37
3.3 高級 MSBuild        38
3.3.1 增量生成與目標(biāo)間的依賴        38
3.3.2 MSBuild轉(zhuǎn)換        38
3.3.3 將一個MSBuild項目分解到多個文件        39
3.3.4 Visual Studio 2005如何利用MSBuild        39
3.3.5 創(chuàng)建自定義MSBuild任務(wù)        39
3.4 配置文件        41
3.4.1 machine.config文件        41
3.4.2 標(biāo)準(zhǔn)配置參數(shù)        41
3.4.3 使用 < appSettings >元素定義配置參數(shù)        42
3.4.4 使用配置節(jié)定義配置參數(shù)        42
3.4.5 使用Visual Studio 2005創(chuàng)建配置節(jié)        44
3.4.6 配置節(jié)的注意事項        44
3.5 程序集部署:XCopy與GAC        45
3.5.1 XCopy部署        45
3.5.2 共享程序集與GAC文件夾        45
3.5.3 GAC的并存存儲模型是如何解決DLL hell問題的        46
3.5.4 并存執(zhí)行        46
3.5.5 查看及編輯GAC文件夾        46
3.6 發(fā)布者策略程序集        47
3.6.1 潛在的問題        47
3.6.2 解決方案        47
3.6.3 創(chuàng)建發(fā)布者策略程序集        48
3.7 .NET應(yīng)用程序部署簡介        49
3.7.1 MSI、cab、XCopy、ClickOnce 和NTD之間的對比        49
3.7.2 MSI與ClickOnce的對比        50
3.8 使用cab文件部署應(yīng)用程序        50
3.9 使用MSI技術(shù)部署應(yīng)用程序        52
3.9.1 添加文件        52
3.9.2 安裝快捷方式        52
3.9.3 在GAC文件夾中添加一個共享程序集        52
3.9.4 安裝項目屬性        53
3.9.5 更新注冊表        53
3.9.6 指定在安裝期間執(zhí)行的自定義動作        53
3.9.7 為安裝提供一個自定義用戶界面        54
3.10 使用ClickOnce技術(shù)部署應(yīng)用程序        54
3.10.1 部署文件夾        54
3.10.2 為ClickOnce部署做準(zhǔn)備        55
3.10.3 ClickOnce部署與移動代碼安全        56
3.10.4 按需安裝與下載組        57
3.10.5 更新一個使用ClickOnce安裝的應(yīng)用程序        58
3.10.6 應(yīng)用程序所需的CAS權(quán)限集的工作機(jī)制        58
3.10.7 ClickOnce應(yīng)用程序安裝與執(zhí)行的細(xì)節(jié)        59
3.11 使用無接觸部署(NTD)技術(shù)部署應(yīng)用程序        60
3.12 如果目標(biāo)機(jī)器上沒有安裝.NET運行庫怎么辦        61
第4章 CLR        62
4.1 應(yīng)用程序域        62
4.1.1 簡介        62
4.1.2 線程與AppDomain        62
4.1.3 卸載AppDomain        63
4.1.4 AppDomain和孤立性        63
4.1.5 System.AppDomain類        63
4.1.6 在一個進(jìn)程中承載多個應(yīng)用程序        63
4.1.7 在其他AppDomain的上下文中運行代碼        65
4.1.8 AppDomain類的事件        65
4.1.9 在同一個進(jìn)程的AppDomain之間共享信息        66
4.2 在Windows進(jìn)程內(nèi)通過運行庫宿主加載CLR        67
4.2.1 mscorsvr.dll和mscorwks.dll        67
4.2.2 mscorlib.dll程序集        67
4.2.3 運行庫宿主介紹        67
4.2.4 在同一臺計算機(jī)上承載多個版本的CLR        68
4.2.5 使用CorBindToRuntimeEx()函數(shù)加載CLR        68
4.2.6 創(chuàng)建一個自定義的運行庫宿主        69
4.2.7 在自定義運行庫宿主中調(diào)整CLR        71
4.2.8 SQL Server 2005運行庫宿主的特性        71
4.3 剖析.NET應(yīng)用程序的執(zhí)行狀況        73
4.4 定位和加載程序集        73
4.4.1 CLR何時嘗試定位程序集        74
4.4.2 CLR使用的定位算法        74
4.4.3 配置文件的 < assemblyBinding >元素        75
4.4.4 定位算法示意圖        76
4.4.5 影子復(fù)制機(jī)制        76
4.5 運行庫類型解析        77
4.5.1 顯式或隱式加載程序集        77
4.5.2 編譯時引用程序集        78
4.5.3 示例        78
4.5.4 類型解析算法示意圖        79
4.6 JIT(即時)編譯        79
4.6.1 可移植的二進(jìn)制代碼        79
4.6.2 即時編譯技術(shù)簡介        80
4.6.3 ngen.exe工具        81
4.6.4 性能計數(shù)器與JIT編譯        81
4.7 垃圾收集器和托管堆        83
4.7.1 垃圾收集技術(shù)簡介        83
4.7.2 垃圾收集算法遇到的問題        83
4.7.3 .NET的GC        84
4.7.4 第一步:尋找根對象        84
4.7.5 第二步:建立活動對象樹        84
4.7.6 第三步:解除分配非活動對象        84
4.7.7 第四步:清理堆碎片        85
4.7.8 第五步:重新計算托管引用所使用的物理地址        85
4.7.9 推薦做法        85
4.7.10 針對大對象的特殊堆        86
4.7.11 多線程環(huán)境下的垃圾收集        86
4.7.12 弱引用        86
4.7.13 使用System.GC類影響GC的行為        87
4.8 提高代碼可靠性的機(jī)制        89
4.8.1 異步異常及托管代碼可靠性        89
4.8.2 受約束執(zhí)行區(qū)域        90
4.8.3 如何定義CER        90
4.8.4 內(nèi)存門        90
4.8.5 可靠性契約        91
4.8.6 關(guān)鍵終結(jié)器        91
4.8.7 臨界區(qū)        92
4.9 CLI和CLS        92
4.9.1 .NET語言必須滿足的要求        92
4.9.2 從開發(fā)人員的觀點看CLI和CLS        93
第5章 進(jìn)程、線程與同步        94
5.1 簡介        94
5.2 進(jìn)程        94
5.2.1 簡介        94
5.2.2 System.Diagnostics.Process類        95
5.2.3 創(chuàng)建和銷毀子進(jìn)程        95
5.2.4 避免在一臺機(jī)器上同時運行同一應(yīng)用程序的多個實例        95
5.2.5 終止當(dāng)前進(jìn)程        96
5.3 線程        96
5.3.1 簡介        96
5.3.2 受托管的線程與Windows線程        97
5.3.3 搶占式多任務(wù)處理        97
5.3.4 進(jìn)程與線程的優(yōu)先級        97
5.3.5 System.Threading.Thread類        98
5.3.6 創(chuàng)建與聯(lián)結(jié)線程        99
5.3.7 掛起線程        99
5.3.8 終止線程        100
5.3.9 前臺線程與后臺線程        100
5.3.10 受托管線程的狀態(tài)圖        101
5.4 訪問資源同步簡介        101
5.4.1 競態(tài)條件        101
5.4.2 死鎖        102
5.5 使用volatile字段與Interlocked類實現(xiàn)同步        102
5.5.1 volatile字段        102
5.5.2 System.Threading.Inter-locked類        103
5.5.3 Interlocked類提供的其他功能        104
5.6 使用System.Threading.Monitor類與C#的lock關(guān)鍵字實現(xiàn)同步        104
5.6.1 Enter()方法和Exit()方法        104
5.6.2 C#的lock關(guān)鍵字        105
5.6.3 SyncRoot模式        106
5.6.4 線程安全類        106
5.6.5 Monitor.TryEnter()方法        107
5.6.6 Monitor類的Wait()方法、Pulse()方法以及PulseAll()方法        107
5.7 使用Win32對象同步:互斥體、事件與信號量        109
5.7.1 共享Win32同步對象        109
5.7.2 互斥體        110
5.7.3 事件        110
5.7.4 信號量        112
5.8 利用System.Threading.Reader-WriterLock類實現(xiàn)同步        113
5.9 利用System.Runtime.Remoting.Contexts.SynchronizationAttr-ibute實現(xiàn)同步        114
5.9.1 同步域簡介        115
5.9.2 System.Runtime.Remoting.Contexts.Synchronization與同步域        116
5.9.3 重入與同步域        117
5.9.4 另一個名為Synchronization 的attribute        119
5.10 CLR的線程池        119
5.10.1 簡介        119
5.10.2 使用線程池        120
5.11 定時器        121
5.11.1 System.Timers.Timer類        121
5.11.2 System.Threading.Timer類        122
5.11.3 System.Windows.Forms.Timer類        123
5.12 異步方法調(diào)用        123
5.12.1 異步委托        123
5.12.2 回調(diào)方法        124
5.12.3 向回調(diào)方法傳遞狀態(tài)        125
5.12.4 one-way調(diào)用        126
5.13 線程—資源親緣性        126
5.13.1 System.ThreadStatic-Attribute        127
5.13.2 線程本地存儲(TLS)        127
5.13.3 System.ComponentModel. ISynchronizeInvoke接口        130
5.14 執(zhí)行上下文簡介        130
第6章 安全性        133
6.1 代碼訪問安全性(CAS)概述        133
6.1.1 什么是移動代碼        133
6.1.2 CAS:全局觀        133
6.1.3 給程序集代碼授予權(quán)限        134
6.1.4 在運行程序集的代碼時檢查權(quán)限        134
6.2 CAS:證據(jù)和權(quán)限        134
6.2.1 什么是證據(jù)        134
6.2.2 .NET Framework所提供的標(biāo)準(zhǔn)證據(jù)        134
6.2.3 誰提供證據(jù)        137
6.2.4 權(quán)限        137
6.2.5 標(biāo)準(zhǔn)權(quán)限        137
6.2.6 標(biāo)識權(quán)限        138
6.2.7 安全權(quán)限        138
6.2.8 自定義權(quán)限        138
6.3 CAS:通過應(yīng)用安全策略根據(jù)證據(jù)授予權(quán)限        139
6.3.1 安全策略級別        139
6.3.2 剖析安全策略        139
6.3.3 用于應(yīng)用安全策略的算法        139
6.3.4 默認(rèn)安全策略配置        140
6.3.5 配置安全策略        141
6.4 CAS:FullTrust權(quán)限        142
6.5 CAS:從源代碼進(jìn)行命令式的權(quán)限檢查        142
6.5.1 CodeAccessPermissions類和PermissionSet類        143
6.5.2 Demand()方法        143
6.5.3 Deny()方法、RevertDeny()方法、PermitOnly()方法和RevertPermitOnly()方法        143
6.5.4 Assert()方法和RevertAssert()方法        144
6.5.5 FromXml()方法和ToXml()方法        145
6.5.6 System.Security.IPermission接口        145
6.6 CAS:使用attribute進(jìn)行聲明式的權(quán)限檢查        145
6.6.1 加載程序集時調(diào)整所授權(quán)限集合的attribute        146
6.6.2 命令式與聲明式的對比        146
6.7 CAS:測試和調(diào)試移動代碼的實用機(jī)制        147
6.8 CAS:獨立存儲區(qū)權(quán)限        147
6.9 .NET、Windows 用戶與角色        147
6.9.1 Windows安全簡介        148
6.9.2 IIdentity接口與IPrincipal接口        149
6.9.3 Windows 安全標(biāo)識符        149
6.9.4 在底層Windows線程中模擬用戶        150
6.10 .NET與Windows資源的訪問控制        151
6.10.1 Windows訪問控制簡介        151
6.10.2 在.NET代碼中使用特殊的SD        152
6.10.3 在.NET代碼中使用通用的SD        154
6.11 .NET與角色        155
6.11.1 定義應(yīng)用程序域的主體策略        155
6.11.2 檢查用戶是否屬于某個特定角色        156
6.11.3 COM+角色        157
6.12 .NET與密碼學(xué):對稱算法        158
6.12.1 對稱算法概述        158
6.12.2 .NET Framework與對稱算法        158
6.13 .NET與密碼學(xué):非對稱算法(公鑰/私鑰)        160
6.13.1 非對稱算法概述        160
6.13.2 安全會話簡介        161
6.13.3 RSA 算法        161
6.13.4 非對稱算法與數(shù)字簽名        161
6.13.5 .NET Framework與RSA算法        162
6.14 數(shù)據(jù)保護(hù)API        163
6.14.1 Windows的數(shù)據(jù)保護(hù)API        163
6.14.2 System.Security.Crypto-graphy.ProtectedData類        163
6.14.3 System.Security.Crypto-graphy.ProtectedMemory類        164
6.14.4 System.Security.SecureString類        164
6.14.5 保護(hù)配置文件中的數(shù)據(jù)        165
6.14.6 確保網(wǎng)絡(luò)傳輸中數(shù)據(jù)的安全        166
6.15 使用Authenticode 技術(shù)與X.509證書驗證程序集        166
6.15.1 Authenticode與強(qiáng)名稱        166
6.15.2 證書與證書認(rèn)證中心        167
6.15.3 根證書        167
6.15.4 Windows、.NET與Authenti- code技術(shù)        167
第7章 反射、后期綁定與attribute        168
7.1 反射        168
7.1.1 何時需要反射        168
7.1.2 .NET反射有何新意        168
7.1.3 對載入AppDomain的程序集的反射        170
7.1.4 從元數(shù)據(jù)獲取信息        170
7.2 后期綁定        171
7.2.1 “綁定類”的含義        171
7.2.2 早期綁定與動態(tài)綁定        172
7.2.3 后期綁定        172
7.2.4 在C#編譯到IL期間如何實例化一個未知的類        173
7.2.5 使用后期綁定        176
7.2.6 利用接口:使用后期綁定的正確方法        178
7.3 attribute        180
7.3.1 attribute是什么        180
7.3.2 何時需要attribute        180
7.3.3 關(guān)于attribute應(yīng)該知道的事        180
7.3.4 可以應(yīng)用attribute的代碼元素        181
7.3.5 .NET Framework中的一些標(biāo)準(zhǔn)attribute        181
7.3.6 自定義的attribute的示例        182
7.3.7 條件attribute        185
7.4 動態(tài)生成程序集并在運行中使用        185
7.4.1 為什么要考慮動態(tài)生成程序集        185
7.4.2 一個實際的問題        186
7.4.3 理想的第三種解決方案——動態(tài)創(chuàng)建程序集        187
7.4.4 將程序集保存到磁盤上的能力        190
7.4.5 結(jié)論        190
第8章 .NET與本機(jī)代碼/COM/COM+之間的互操作性        191
8.1 P/Invoke        191
8.1.1 DllImportAttribute        191
8.1.2 類型轉(zhuǎn)換        192
8.1.3 使用指針傳遞參數(shù)        193
8.1.4 傳遞字符串        193
8.1.5 傳遞結(jié)構(gòu)與聯(lián)合        195
8.1.6 方向attribute        196
8.1.7 委托與非托管的函數(shù)指針        196
8.2 C++/CLI語言互操作性簡介        196
8.2.1 IJW功能        196
8.2.2 托管類型與非托管類型共存        197
8.2.3 在本機(jī)代碼中使用托管對象        199
8.3 .NET與Win32句柄        200
8.3.1 簡介        200
8.3.2 HandleCollector類        201
8.3.3 SafeHandle類與Critical-Handle類        201
8.4 在.NET 中使用COM 對象        201
8.4.1 類型元數(shù)據(jù)與類型庫        201
8.4.2 Interop程序集與Runtime Callable Wrapper類        202
8.4.3 訪問不使用類型庫的COM組件中的COM類        204
8.4.4 使用Visual Studio導(dǎo)入ActiveX        204
8.4.5 使用RCW類時需要牢記的COM特性        205
8.4.6 COM類的顯式后期綁定        206
8.4.7 免注冊COM        207
8.5 將.NET對象包裝成CCW        208
8.5.1 CCW簡介        208
8.5.2 從.NET程序集中生成描述CCW類的COM類型庫        209
8.5.3 在操作系統(tǒng)上注冊CCW        211
8.5.4 將.NET程序集作為COM組件使用        212
8.5.5 .NET異常與CCW        213
8.5.6 處理對象生命周期        213
8.6 COM+簡介        214
8.6.1 COM+是什么        214
8.6.2 在.NET中使用COM+:企業(yè)服務(wù)        214
8.7 COM+企業(yè)服務(wù)簡介        214
8.7.1 COM+企業(yè)服務(wù)的完整列表        214
8.7.2 你需要COM+企業(yè)服務(wù)嗎        215
8.8 在.NET類中利用COM+服務(wù)        216
8.8.1 服務(wù)組件簡介        216
8.8.2 聲明服務(wù)組件使用的企業(yè)服務(wù)        216
8.8.3 COM+上下文與服務(wù)組件        217
8.8.4 COM+應(yīng)用程序簡介        217
8.8.5 COM+目錄        218
8.8.6 COM+應(yīng)用程序的激活模式        218
8.8.7 安裝服務(wù)組件        219
8.8.8 查看并操作COM+目錄        221
8.8.9 構(gòu)建一個使用服務(wù)組件的客戶        221
第二部分 C#語言
第9章 語言基本概念        224
9.1 源代碼組織        224
9.1.1 命名空間        224
9.1.2 命名空間中可聲明的全套語法元素        225
9.1.3 C#項目的結(jié)構(gòu)        226
9.1.4 命名空間和程序集的組織        226
9.2 編譯步驟        226
9.3 預(yù)處理器        227
9.3.1 預(yù)處理符號與條件編譯        227
9.3.2 預(yù)處理符號與條件attribute        228
9.3.3 #error指令和#warning指令        228
9.3.4 #pragma warning disable 指令和#pragma warning restore指令        229
9.3.5 #line指令        229
9.3.6 #region指令和#endregion指令        230
9.4 csc.exe編譯器        230
9.5 別名機(jī)制        232
9.5.1 創(chuàng)建命名空間和類型的別名        232
9.5.2 命名空間別名限定符        232
9.5.3 全局限定符        233
9.5.4 外部別名        234
9.6 注釋和自動文檔        234
9.6.1 注釋        234
9.6.2 使用Visual Studio的任務(wù)列表        235
9.6.3 自動文檔        235
9.7 標(biāo)識符        237
9.8 控制結(jié)構(gòu)        237
9.8.1 條件語句(if/else、?:和switch)        238
9.8.2 循環(huán)語句(do、while、for和foreach)        241
9.8.3 goto語句        243
9.9 Main()方法        243
第10章 從C# 2.0的角度看.NET 2.0類型系統(tǒng)        245
10.1 對象在內(nèi)存中的存儲        245
10.1.1 對象的分配和解除分配        245
10.1.2 托管線程棧        245
10.1.3 托管堆        245
10.1.4 對象存儲:托管線程棧與托管堆的比較        246
10.1.5 靜態(tài)分配與動態(tài)分配的比較        246
10.2 引用類型和值類型        246
10.3 公共類型系統(tǒng)(CTS)        249
10.3.1 .NET類型不與任何編程語言關(guān)聯(lián)        249
10.3.2 CTS:全局觀        249
10.4 System.Object類        249
10.5 對象比較        251
10.5.1 等價與恒等        251
10.5.2 自定義相等比較規(guī)則        252
10.5.3 相等性與散列表        252
10.5.4 自定義大小比較規(guī)則        253
10.6 對象克隆        253
10.7 裝箱和拆箱        255
10.7.1 裝箱        255
10.7.2 裝箱導(dǎo)致的危險問題        256
10.7.3 拆箱        257
10.8 基本類型        257
10.8.1 整型        258
10.8.2 實型        259
10.8.3 布爾型        260
10.8.4 字符型        260
10.8.5 整數(shù)和字符串之間的轉(zhuǎn)換        260
10.9 基本類型的運算        261
10.9.1 同一基本類型上的算術(shù)運算        261
10.9.2 處理被零除的錯誤        262
10.9.3 處理溢出        262
10.9.4 運算符的優(yōu)先級        262
10.9.5 前綴和后綴遞增/遞減運算符        263
10.9.6 不同基本類型之間的算術(shù)運算        263
10.9.7 位運算        264
10.10 結(jié)構(gòu)        265
10.11 枚舉        267
10.11.1 枚舉和整型        267
10.11.2 System.Enum類        268
10.11.3 位域(一組標(biāo)志)        269
10.12 字符串        269
10.12.1 System.String類        269
10.12.2 字符串字面常量        270
10.12.3 無轉(zhuǎn)義字符串字面常量        270
10.12.4 使用字符串        271
10.12.5 格式化字符串        272
10.12.6 System.Text.StringBui-lder類        273
10.13 委托類和委托對象        275
10.13.1 簡介        275
10.13.2 委托對象與靜態(tài)方法        275
10.13.3 C# 2.0編譯器的委托類推測功能        276
10.13.4 委托對象與實例方法        276
10.13.5 用一個委托對象引用多個方法        277
10.13.6 System.Delegate類        278
10.13.7 更改引用方法列表        279
10.14 可空類型        280
10.14.1 值類型和空值范式        280
10.14.2 System.Nullable < T >結(jié)構(gòu)        280
10.14.3 C#語法革新:Nullable < T >關(guān)鍵字和null關(guān)鍵字        281
10.14.4 C#語法革新:Nullable < T >的等價寫法T?        282
10.14.5 C# 2.0中bool?的無差別對待        283
10.14.6 可空類型與裝箱/拆箱        283
10.14.7 可空結(jié)構(gòu)和可空枚舉        284
10.15 部分類型        285
10.15.1 必須在每個部分聲明上重復(fù)出現(xiàn)的類型聲明元素        285
10.15.2 在每個部分聲明上可選重復(fù)出現(xiàn)的類型聲明元素        286
10.15.3 在多個部分聲明上重復(fù)出現(xiàn)就會累積效果的類型聲明元素        286
10.15.4 僅在某個部分聲明上起作用的類型聲明元素        286
第11章 類和對象        287
11.1 簡介        287
11.2 術(shù)語        287
11.3 類的定義        288
11.4 字段        288
11.4.1 字段初始化        289
11.4.2 常數(shù)字段        289
11.4.3 字段初始化的潛在問題        290
11.5 方法        290
11.5.1 按值或按引用傳遞參數(shù)        290
11.5.2 C#的默認(rèn)規(guī)則        291
11.5.3 按引用傳遞任意參數(shù)        291
11.5.4 在引用類型上使用ref關(guān)鍵字        292
11.5.5 參數(shù)初始化        292
11.5.6 輸出參數(shù)        293
11.5.7 params關(guān)鍵字        294
11.5.8 方法重載        294
11.6 屬性        295
11.6.1 get訪問器        296
11.6.2 set訪問器        296
11.6.3 關(guān)于屬性的注釋        297
11.7 索引器        297
11.8 事件        298
11.8.1 介紹        298
11.8.2 C#語法        298
11.8.3 一個實際的例子        299
11.8.4 異步事件處理        301
11.8.5 在同步條件下保護(hù)代碼不受訂閱者方法所拋異常的影響        302
11.9 嵌套類型        302
11.10 封裝性和可見性        303
11.10.1 成員的可見性        303
11.10.2 類型的可見性        304
11.10.3 屬性和索引器訪問器的可見性        304
11.10.4 私有成員的附加說明        304
11.10.5 IL語言可見性的附加說明        304
11.11 this關(guān)鍵字        304
11.12 構(gòu)造函數(shù)        305
11.12.1 構(gòu)造函數(shù)的聲明        305
11.12.2 創(chuàng)建對象時訪問構(gòu)造函數(shù)        306
11.13 對象終結(jié)和析構(gòu)        307
11.13.1 析構(gòu)函數(shù)、終結(jié)器和Object.Finalize()方法        307
11.13.2 IDisposable接口和Dispose()方法        308
11.13.3 何時需要終結(jié)器和Dispose()方法        310
11.14 靜態(tài)成員        312
11.14.1 靜態(tài)字段、屬性和事件        312
11.14.2 靜態(tài)方法        313
11.14.3 靜態(tài)構(gòu)造函數(shù)        313
11.14.4 靜態(tài)類        314
11.15 運算符重載        314
11.15.1 算術(shù)運算符的重載        314
11.15.2 類型轉(zhuǎn)換運算符的重載        316
11.15.3 比較運算符的重載        318
11.15.4 運算符重載和CLS        320
第12章 繼承、多態(tài)性與抽象性        321
12.1 目標(biāo):代碼重用        321
12.1.1 潛在問題        321
12.1.2 解決方案之一:類的繼承        322
12.2 類的繼承        322
12.2.1 語法        322
12.2.2 保護(hù)及內(nèi)部或保護(hù)可見性級別        322
12.2.3 類繼承圖        322
12.2.4 調(diào)用基類的構(gòu)造函數(shù)        323
12.2.5 基類成員的可見性        324
12.2.6 封閉類        324
12.3 虛方法和多態(tài)性        324
12.3.1 潛在問題        325
12.3.2 解決方案之一:虛方法和多態(tài)性        325
12.3.3 示例一則        325
12.3.4 屏蔽多態(tài)性        327
12.4 抽象性        328
12.4.1 潛在的問題        328
12.4.2 解決方案之一:抽象類和抽象方法        328
12.4.3 示例一則        328
12.4.4 同時使用abstract關(guān)鍵字和override關(guān)鍵字        329
12.5 接口        330
12.5.1 強(qiáng)制代碼使用者使用抽象體代替實現(xiàn)體        331
12.5.2 解決方法命名的沖突        331
12.5.3 解決接口擴(kuò)展帶來的沖突        332
12.5.4 覆寫接口的實現(xiàn)方法        333
12.5.5 接口與結(jié)構(gòu)        334
12.6 虛擬或抽象屬性、事件和索引器        335
12.7 is和as運算符        336
12.7.1 is運算符        336
12.7.2 as運算符        337
12.8 代碼重用的解決方案        338
第13章 泛型        339
13.1 C# 1.0的一個問題以及使用C# 2.0 泛型的解決方法        339
13.1.1 C# 1.0中集合項的類型化問題        339
13.1.2 C# 2.0泛型帶來的理想方案        340
13.2 .NET 2.0泛型概覽        341
13.2.1 聲明多個類型參數(shù)        341
13.2.2 開放和封閉泛型類型        342
13.2.3 .NET泛型與C++模板的比較        342
13.2.4 泛型類型的可見性        343
13.2.5 泛型結(jié)構(gòu)與接口        344
13.2.6 泛型類型與別名        344
13.3 類型參數(shù)的約束        344
13.3.1 默認(rèn)構(gòu)造函數(shù)約束        345
13.3.2 派生約束        345
13.3.3 引用類型或值類型約束        347
13.4 泛型類型的成員        347
13.4.1 方法重載        347
13.4.2 靜態(tài)字段        348
13.4.3 靜態(tài)方法        349
13.4.4 類構(gòu)造函數(shù)        349
13.4.5 運算符重載        349
13.4.6 嵌套類型        350
13.5 運算符與泛型        351
13.5.1 類型參數(shù)的相等、不等及比較運算符        351
13.5.2 typeof運算符與泛型        351
13.5.3 params及l(fā)ock關(guān)鍵字與泛型        352
13.5.4 default運算符        352
13.6 類型轉(zhuǎn)換與泛型        353
13.6.1 基本規(guī)則        353
13.6.2 類型轉(zhuǎn)換與泛型數(shù)組        353
13.6.3 is和as運算符        353
13.7 繼承與泛型        354
13.7.1 基本規(guī)則        354
13.7.2 覆寫泛型類型的虛方法        354
13.8 泛型方法        355
13.8.1 簡介        355
13.8.2 泛型方法與約束        356
13.8.3 虛擬泛型方法        356
13.8.4 泛型方法類型參數(shù)的推測        356
13.8.5 C# 2.0語法的二義性        357
13.9 委托、事件與泛型        358
13.9.1 簡介        358
13.9.2 泛型委托與泛型方法        358
13.9.3 泛型與委托的協(xié)變性及反變性        359
13.9.4 事件和泛型委托        360
13.10 反射、attribute、IL與泛型        360
13.10.1 泛型與System.Type類        360
13.10.2 泛型與System.Reflection.MethodBase類及System.Reflection.MethodInfo類        362
13.10.3 attribute與泛型        363
13.10.4 IL語言與泛型        364
13.11 .NET Framework 2.0中的泛型        364
13.11.1 對象序列化與泛型        364
13.11.2 .NET Remoting與泛型        365
13.11.3 集合與泛型        366
13.11.4 不支持泛型的領(lǐng)域        366
第14章 不安全代碼、異常、匿名方法和迭代器        367
14.1 指針和不安全代碼        367
14.1.1 允許不安全代碼的編譯器選項        368
14.1.2 在C#中聲明不安全代碼        368
14.2 在C#中使用指針        368
14.2.1 .NET中支持指針的類型        368
14.2.2 聲明指針        368
14.2.3 提領(lǐng)和間接運算符        369
14.2.4 取大小運算符        369
14.2.5 指針運算        369
14.2.6 指針類型轉(zhuǎn)換        369
14.2.7 雙重指針        369
14.2.8 定址對象        370
14.2.9 指針和數(shù)組        370
14.2.10 固定數(shù)組        371
14.2.11 使用stackalloc關(guān)鍵字在棧上分配內(nèi)存        372
14.2.12 字符串與指針        372
14.3 利用異常處理錯誤        372
14.3.1 潛在問題:如何恰當(dāng)處理運行時出現(xiàn)的大多數(shù)錯誤        372
14.3.2 C#異常處理簡介        373
14.4 異常對象和定義自己的異常類        374
14.4.1 System.Exception類        375
14.4.2 定義自己的異常類        375
14.4.3 從自己的代碼中拋出異常        376
14.4.4 C#的非檢查型異常        377
14.5 catch塊和finally塊        377
14.5.1 catch塊的一些說明(異常處理程序)        377
14.5.2 finally塊        378
14.5.3 增加異常語義        378
14.6 從構(gòu)造函數(shù)或終結(jié)器中拋出的異常        379
14.6.1 靜態(tài)構(gòu)造函數(shù)所拋異?;蜢o態(tài)字段初始化時所拋異常        379
14.6.2 終結(jié)器所拋異常        380
14.7 異常處理與CLR        380
14.8 異常處理與Visual Studio        382
14.9 異常管理使用指南        382
14.9.1 何時考慮拋出異常        382
14.9.2 在異常處理程序中做什么        382
14.9.3 在何處放置異常處理程序        383
14.9.4 異常與返回錯誤代碼的對比        383
14.9.5 永遠(yuǎn)不要預(yù)測bug造成的后果能夠被異常處理程序所捕獲        383
14.10 匿名方法        383
14.10.1 C# 2.0匿名方法簡介        383
14.10.2 匿名方法可以接受參數(shù)        385
14.10.3 一個精妙的特殊語法        386
14.10.4 匿名方法與泛型        386
14.10.5 匿名方法的實際應(yīng)用        386
14.11 C# 2.0編譯器與匿名方法        387
14.11.1 簡單的方式        387
14.11.2 捕獲局部變量        388
14.11.3 捕獲的局部變量與代碼復(fù)雜性        389
14.11.4 匿名方法訪問外圍方法的參數(shù)        391
14.11.5 匿名方法訪問外圍類的成員        391
14.12 匿名方法的高級用法        392
14.12.1 定義:閉包與詞法環(huán)境        392
14.12.2 漫談閉包        393
14.12.3 使用閉包代替類        393
14.12.4 委托與閉包        394
14.12.5 使用匿名方法處理集合        395
14.13 C# 1.x迭代器        395
14.13.1 可枚舉對象、枚舉器和Iterator設(shè)計模式        395
14.13.2 實例一則        395
14.13.3 一個可枚舉對象對應(yīng)多個枚舉器        397
14.13.4 C# 1.x迭代器的缺點        397
14.14 C# 2.0迭代器        397
14.14.1 yield return關(guān)鍵字        397
14.14.2 迭代器與泛型        398
14.14.3 一個可枚舉對象對應(yīng)多個枚舉        399
14.14.4 yield break關(guān)鍵字        400
14.14.5 yield return關(guān)鍵字和
yield break關(guān)鍵字的語法限制        401
14.14.6 遞歸迭代器實例        401
14.15 C# 2.0編譯器與迭代器        402
14.15.1 編譯器自動創(chuàng)建并使用的枚舉器類        402
14.15.2 關(guān)于生成類的說明        404
14.16 C# 2.0迭代器的高級用法        405
14.16.1 定義:協(xié)同例程和延拓        405
14.16.2 通過迭代器利用協(xié)同例程和延拓的威力        406
14.16.3 Pipeline模式        407
14.16.4 延拓與多線程的比較        409
14.16.5 C# 2.0迭代器的一個限制        410
第三部分 .NET Framework
第15章 集合        414
15.1 使用foreach和in關(guān)鍵字迭代訪問集合中的項        414
15.1.1 在數(shù)組上使用foreach和in        414
15.1.2 交錯數(shù)組上的foreach語法        415
15.1.3 在自定義集合類上支持foreach語法        415
15.2 數(shù)組        415
15.2.1 創(chuàng)建和引用數(shù)組        415
15.2.2 訪問數(shù)組的項和處理越界訪問        416
15.2.3 交錯數(shù)組        417
15.2.4 初始化數(shù)組的項        418
15.2.5 數(shù)組的協(xié)變        419
15.2.6 System.Array類        419
15.2.7 位數(shù)組        421
15.3 序列        422
15.3.1 System.Collections.Generic.ICollection < T >接口        422
15.3.2 System.Collections.Generic.IList < T >接口        423
15.3.3 System.Collections.Generic.List < T >類        423
15.3.4 System.ComponentModel.IBindingList接口和System.ComponentModel.IListSource接口        425
15.3.5 System.Collections.Generic.LinkedList  < T >類        425
15.3.6 字符串列表        426
15.3.7 System.Collections.Generic.Queue < T >類        426
15.3.8 System.Collections.Generic.Stack < T >類        427
15.4 字典        427
15.4.1 System.Collections.Generic.IDictionary < K,V >接口        427
15.4.2 System.Collections.Generic.SortedDictionary < K,V >類        428
15.4.3 System.Collections.Generic.Dictionary < K,V >類        428
15.4.4 迭代訪問字典中的項        431
15.5 對集合中的項進(jìn)行排序        431
15.5.1 IComparer < T >接口和Icom-parable < T >接口        432
15.5.2 對數(shù)組中的項排序        432
15.5.3 對List < T >實例中的元素排序        434
15.6 用于處理集合的函數(shù)對象        434
15.6.1 特化的委托類型        434
15.6.2 使用匿名方法        435
15.6.3 List < T >類和Array類支持函數(shù)對象        436
15.6.4 C# 2.0的迭代器和集合        437
15.7 System.Collections.Generic和System.Collections之間的聯(lián)系        438
第16章 基類        439
16.1 數(shù)學(xué)        439
16.1.1 System.Math類        439
16.1.2 System.Random類        440
16.2 時間、日期和持續(xù)時間        441
16.2.1 System.DateTime結(jié)構(gòu)        441
16.2.2 System.TimeSpan結(jié)構(gòu)        444
16.2.3 System.Diagnostics. Stopwatch類        445
16.3 驅(qū)動器、目錄、文件和路徑        445
16.3.1 操作驅(qū)動器        445
16.3.2 操作目錄        446
16.3.3 操作文件        447
16.3.4 操作路徑        448
16.3.5 文件系統(tǒng)監(jiān)視器        448
16.4 注冊表        450
16.4.1 引言        450
16.4.2 注冊表的結(jié)構(gòu)        450
16.4.3 注冊表的層級        451
16.4.4 用.NET讀/寫注冊表        451
16.5 調(diào)試        452
16.5.1 用來自定義對象調(diào)試時的視圖的attribute        452
16.5.2 調(diào)試“僅我的代碼”        453
16.5.3 調(diào)試模式        454
16.5.4 解決調(diào)試問題        454
16.6 跟蹤        454
16.6.1 監(jiān)聽器        455
16.6.2 跟蹤源和源級別        456
16.6.3 篩選跟蹤源        457
16.6.4 跟蹤縮進(jìn)        457
16.7 正則表達(dá)式        458
16.7.1 引言        458
16.7.2 語法        459
16.7.3 示例        460
16.7.4 .NET和正則表達(dá)式        460
16.7.5 優(yōu)化正則表達(dá)式的求值        460
16.8 控制臺        462
16.8.1 光標(biāo)        462
16.8.2 顯示        462
16.8.3 大小與位置        462
16.8.4 顏色        462
16.8.5 數(shù)據(jù)輸入        463
16.8.6 重定向控制臺的流        463
16.8.7 雜項        463
第17章 輸入、輸出和流        464
17.1 流的簡介        464
17.1.1 流的類層次結(jié)構(gòu)        464
17.1.2 操作流的工具        464
17.1.3 流數(shù)據(jù)的類型化        465
17.1.4 字符串編碼        465
17.2 讀寫文件        466
17.2.1 簡單的文件讀寫        466
17.2.2 讀寫二進(jìn)制數(shù)據(jù)文件        466
17.2.3 讀寫文本文件        467
17.2.4 以異步的方式操作流        468
17.3 用套接字來使用TCP/IP        470
17.3.1 套接字和TCP/IP簡介        470
17.3.2 以同步的方式操作套接字        470
17.3.3 以異步的方式操作套接字        473
17.4 獲取網(wǎng)絡(luò)接口和狀態(tài)的信息        476
17.4.1 發(fā)現(xiàn)可用網(wǎng)絡(luò)接口        476
17.4.2 Ping        477
17.4.3 網(wǎng)絡(luò)發(fā)生更改時所觸發(fā)的事件        477
17.4.4 網(wǎng)絡(luò)活動統(tǒng)計        477
17.5 HTTP和FTP客戶端        478
17.5.1 URI        478
17.5.2 WebClient類        478
17.5.3 通過URI訪問資源的其他類        479
17.6 在HTTP.SYS上用HttpListener編HTTP服務(wù)器代碼        479
17.6.1 HTTP.SYS簡介        479
17.6.2 System.Net.HttpListener類        480
17.6.3 以異步方式處理HTTP請求        480
17.7 支持郵件協(xié)議        481
17.8 緩沖和壓縮數(shù)據(jù)流        482
17.8.1 通過Decorator設(shè)計模式在流上應(yīng)用服務(wù)        482
17.8.2 緩沖流數(shù)據(jù)        482
17.8.3 壓縮數(shù)據(jù)流        483
17.9 在串行端口上讀寫數(shù)據(jù)        484
17.10 支持安全通訊協(xié)議:SSL、NTLM和Kerberos        484
17.10.1 安全通訊協(xié)議簡介        484
17.10.2 安全通訊協(xié)議和System.Net.Security命名空間        484
17.10.3 SslStream類        485
17.10.4 NegociateStream類        486
17.10.5 加密數(shù)據(jù)流        487
第18章 Windows Forms應(yīng)用程序        488
18.1 Windows用戶界面        488
18.1.1 控制臺應(yīng)用程序與窗口應(yīng)用程序        488
18.1.2 Windows消息簡介        488
18.1.3 Windows應(yīng)用程序開發(fā)的發(fā)展        488
18.1.4 System.Windows.Forms命名空間簡介        489
18.2 Windows Forms開發(fā)簡介        490
18.2.1 處理事件        491
18.2.2 編寫方法        492
18.2.3 沒有Visual Studio的Windows Forms開發(fā)        492
18.3 Windows Forms開發(fā)工具        494
18.3.1 模態(tài)/非模態(tài)對話框簡介        494
18.3.2 鼠標(biāo)和鍵盤事件        494
18.3.3 Paint事件        495
18.3.4 異步處理        495
18.3.5 其他特性        497
18.4 標(biāo)準(zhǔn)控件        498
18.4.1 Windows Forms 2.0控件的層次結(jié)構(gòu)        498
18.4.2 新增控件概述        499
18.5 創(chuàng)建自定義控件        500
18.6 顯示和編輯數(shù)據(jù)        504
18.6.1 Visual Studio 2005提供的工具        504
18.6.2 BindingSource控件        507
18.6.3 用BindingSource來利用數(shù)據(jù)源        508
18.6.4 用對象列表作為數(shù)據(jù)源        508
18.7 Windows Forms和本地化        509
18.8 GDI+        510
18.8.1 System.Drawing.Graphics類        510
18.8.2 System.Drawing.Pen類        510
18.8.3 System.Drawing.Brush類        511
18.8.4 繪制文本        511
18.8.5 處理圖像        512
18.8.6 優(yōu)化圖像的處理        513
18.8.7 動畫和雙緩沖        515
第19章 ADO.NET 2.0        517
19.1 數(shù)據(jù)庫簡介        517
19.1.1 DBMS        517
19.1.2 RDBMS        517
19.1.3 SQL語言        517
19.1.4 分布式架構(gòu)的必要性        518
19.2 ADO.NET簡介        518
19.2.1 連接模式與非連接模式        518
19.2.2 數(shù)據(jù)提供程序        519
19.2.3 ADO.NET:全局觀        520
19.2.4 我們將在范例中使用的DB        520
19.3 連接與數(shù)據(jù)提供程序        522
19.3.1 解除應(yīng)用程序與數(shù)據(jù)提供程序之間的耦合        522
19.3.2 連接字符串        525
19.3.3 如何存儲連接字符串以及連接字符串存儲在哪里        526
19.3.4 連接池        527
19.3.5 訪問數(shù)據(jù)源的元數(shù)據(jù)        527
19.4 使用DataReader在連接模式下工作        528
19.4.1 使用DataReader從數(shù)據(jù)庫中獲取數(shù)據(jù)        528
19.4.2 在數(shù)據(jù)庫端進(jìn)行標(biāo)量運算        529
19.4.3 使用SQL查詢來修改數(shù)據(jù)        530
19.5 使用DataSet在非連接模式下工作        531
19.5.1 使用來自數(shù)據(jù)庫的數(shù)據(jù)填充緩存        531
19.5.2 在DataSet中對多表之間的關(guān)聯(lián)進(jìn)行操作        532
19.5.3 將DataSet中更新的數(shù)據(jù)保存到數(shù)據(jù)庫        533
19.5.4 非連接模式與樂觀/悲觀并發(fā)策略        534
19.5.5 DataSet中數(shù)據(jù)表的約束        535
19.5.6 DataView類        535
19.6 強(qiáng)類型DataSet        537
19.6.1 創(chuàng)建強(qiáng)類型DataSet類        538
19.6.2 TableAdapter和強(qiáng)類型SQL請求        539
19.7 連接模式和非連接模式之間的橋接器        540
19.8 對象與關(guān)系數(shù)據(jù)之間的橋接器        541
19.8.1 結(jié)構(gòu)問題        541
19.8.2 行為問題        541
19.8.3 解決上述問題的途徑        541
19.8.4 用于對象關(guān)系映射的.NET工具        542
19.9 SQL Server數(shù)據(jù)提供程序的專有功能        542
19.9.1 異步請求        542
19.9.2 批量復(fù)制        543
19.9.3 SqlClient連接上的統(tǒng)計數(shù)據(jù)        544
19.9.4 SQL Server 2005 Express版本        544
第20章 事務(wù)        545
20.1 事務(wù)簡介        545
20.1.1 事務(wù)管理器、資源管理器和數(shù)據(jù)源        545
20.1.2 分布式事務(wù)以及2PC算法簡介        546
20.1.3 在SQL Server連接上進(jìn)行的本地事務(wù)        547
20.1.4 分布式事務(wù)協(xié)調(diào)器        548
20.2 System.Transactions        549
20.2.1 LTM、持久RM和易變RM簡介        549
20.2.2 System.Transactions 實現(xiàn)的隱式事務(wù)        550
20.2.3 在事務(wù)中被觸發(fā)的事件        551
20.2.4 System.Transactions揭秘        552
20.2.5 事務(wù)隔離級別簡介        552
20.2.6 事務(wù)作用域        553
20.2.7 System.Transactions 實現(xiàn)的顯式事務(wù)        553
20.3 System.Transactions的高級用法        554
20.3.1 在多個線程中執(zhí)行一個事務(wù)        554
20.3.2 以異步方式完成事務(wù)        555
20.3.3 System.Transactions和CAS        555
20.4 用于實現(xiàn)自定義RM的機(jī)制        556
第21章 XML        560
21.1 簡介        560
21.1.1 XML所解決的問題        560
21.1.2 統(tǒng)一文檔世界和數(shù)據(jù)世界        560
21.1.3 XML文檔的結(jié)構(gòu)        561
21.2 XSD、XPath、XSLT和XQuery簡介        562
21.2.1 用XSD schema類型化XML文檔及其數(shù)據(jù)        562
21.2.2 Xpath        563
21.2.3 XSLT        563
21.2.4 XQuery        564
21.3 遍歷和編輯XML文檔的方法        564
21.4 使用XmlReader類和XmlWriter類的Cursor方法        564
21.4.1 使用XmlReader類讀取數(shù)據(jù)        564
21.4.2 在讀取數(shù)據(jù)時對其進(jìn)行驗證        566
21.4.3 使用XmlWriter類編輯數(shù)據(jù)        566
21.5 使用XmlDocument類的Tree/DOM方法        567
21.5.1 使用XmlDocument類裝載和遍歷XML文檔        567
21.5.2 使用XmlDocument類編輯和保存XML數(shù)據(jù)        568
21.5.3 使用XmlDocument類驗證XML文檔        568
21.5.4 XmlDocument類的事件        568
21.6 使用XPath遍歷和編輯XML文檔        569
21.6.1 對內(nèi)存中的DOM樹應(yīng)用XPath表達(dá)式        569
21.6.2 用XPathNavigator對象遍歷XPathDocument對象        569
21.6.3 用XPathNodeIterator對象遍歷XPath的選擇結(jié)果集        570
21.6.4 用XPathNavigator對象編輯XmlDocument對象        570
21.7 使用XSLT樣式表轉(zhuǎn)換XML文檔        571
21.8 連接關(guān)系型數(shù)據(jù)與XML文檔的橋接器        571
21.8.1 從DataSet獲取XML文檔        571
21.8.2 用XML文檔填充DataSet        572
21.8.3 System.Xml.XmlDataDocument類        573
21.8.4 XML和SQL Server        574
21.9 連接對象與XML文檔的橋梁        575
21.9.1 System.Xml.XmlSerialization類        575
21.9.2 用于XML序列化的attribute        576
21.9.3 sgen.exe工具        576
21.9.4 xsd.exe工具        577
21.10 Visual Studio和XML        577
21.10.1 創(chuàng)建、查看以及編輯XML 文檔和XSD schema        577
21.10.2 用XSD schema驗證XML文檔        577
21.10.3 編輯和調(diào)試XSLT程序        578
第22章 .NET Remoting        579
22.1 簡介        579
22.1.1 什么是.NET Remoting        579
22.1.2 FAQ        579
22.2 按引用封送        580
22.3 按值封送和二進(jìn)制序列化        582
22.4 ObjectHandle類        584
22.5 對象的激活        585
22.5.1 分布式體系的組件        585
22.5.2 宿主概覽        585
22.5.3 信道概覽        585
22.5.4 同步方式、異步方式和單向方式調(diào)用        586
22.5.5 對象激活與對象創(chuàng)建        586
22.6 well-known對象的激活        586
22.7 客戶端激活的對象        589
22.7.1 使用new關(guān)鍵字激活對象        591
22.7.2 潛在的問題        591
22.8 Factory設(shè)計模式和soapsuds.exe工具        591
22.8.1 Factory設(shè)計模式        591
22.8.2 soapsuds.exe工具        593
22.9 well-known和客戶端激活的對象的生命周期        594
22.10 配置.NET Remoting        596
22.10.1 配置宿主        597
22.10.2 配置客戶端        597
22.10.3 聯(lián)合使用接口和配置文件        598
22.11 .NET Remoting服務(wù)器的部署        601
22.11.1 Windows服務(wù)        601
22.11.2 IIS        601
22.12 安全的.NET Remoting信道        602
22.12.1 安全的TCP信道        602
22.12.2 安全的HTTP信道        602
22.13 代理和消息        603
22.13.1 把方法調(diào)用轉(zhuǎn)換成消息        603
22.13.2 IMessage接口的層次結(jié)構(gòu)        604
22.13.3 透明代理、真實代理和ObjRef類        604
22.13.4 通過ObjRef類發(fā)布對象        605
22.13.5 消息接收器        606
22.13.6 為何考慮自定義真實代理        607
22.13.7 開發(fā)自定義真實代理        608
22.13.8 在類的所有實例上使用自定義真實代理        609
22.13.9 讀寫方法調(diào)用的參數(shù)        611
22.14 信道        612
22.14.1 簡介        612
22.14.2 發(fā)送方信道和代理        613
22.14.3 接收方信道和服務(wù)器對象        613
22.14.4 消息接收器、格式化程序和信道        613
22.14.5 信道接收器提供程序        614
22.14.6 示例:顯示網(wǎng)絡(luò)消息的大小        614
22.15 .NET上下文        621
22.15.1 簡介        621
22.15.2 上下文綁定和上下文靈活對象        621
22.15.3 上下文attribute和上下文屬性        622
22.15.4 消息接收器區(qū)域        624
22.15.5 使用區(qū)域的示例        626
22.15.6 調(diào)用上下文        630
22.16 小結(jié)        631
22.16.1 激活對象的方式        631
22.16.2 截獲消息        632
第23章 ASP.NET 2.0        633
23.1 簡介        633
23.1.1 歷史        633
23.1.2 ASP與ASP.NET        634
23.1.3 ASP.NET 1.x與ASP.NET 2.0        634
23.2 ASP.NET概覽        634
23.2.1 Web Form        634
23.2.2 運行期的ASP.NET、IIS和Web應(yīng)用程序        634
23.2.3 在你自己的.NET應(yīng)用程序中承載ASP.NET        636
23.2.4 基于HTTP.SYS使用ASP.NET        637
23.3 ASP.NET應(yīng)用程序的源代碼        638
23.3.1 內(nèi)聯(lián)代碼        638
23.3.2 服務(wù)器端腳本的代碼段        639
23.3.3 代碼隱藏        640
23.4 編譯和部署模型        642
23.4.1 動態(tài)編譯        642
23.4.2 就地預(yù)編譯        643
23.4.3 部署預(yù)編譯        643
23.5 Web Form和控件        644
23.5.1 服務(wù)器控件        644
23.5.2 客戶端和服務(wù)器端之間的交互        645
23.5.3 視圖狀態(tài)        646
23.5.4 回發(fā)事件和非回發(fā)事件        648
23.5.5 控件狀態(tài)        649
23.5.6 跨頁面?zhèn)鬟f        650
23.5.7 HTML服務(wù)器控件與Web服務(wù)器控件        652
23.6 頁面生命周期        653
23.7 ASP.NET應(yīng)用程序配置        656
23.7.1 Web.Config文件的組織        656
23.7.2 Web.Config文件的部分        657
23.7.3  < processModel >部分        657
23.7.4 更新配置        658
23.7.5 在運行期應(yīng)用配置更新        658
23.8 HTTP管線        658
23.8.1 簡介        658
23.8.2 HttpApplication類和Global.asax文件        659
23.8.3 HTTP上下文        660
23.8.4 HTTP模塊        660
23.8.5 HTTP處理程序        661
23.9 狀態(tài)和會話管理        663
23.9.1 會話管理        664
23.9.2 處理會話標(biāo)識符        666
23.9.3 會話存儲的標(biāo)準(zhǔn)實現(xiàn)        666
23.9.4 為存儲會話提供自定義實現(xiàn)        667
23.10 Provider設(shè)計模式        667
23.11 錯誤處理        668
23.11.1  < system .Web  >配置元素和 < customErrors >配置元素        668
23.11.2 Application_Error事件        669
23.11.3 ErrorPage屬性        669
23.12 跟蹤、診斷以及事件管理        669
23.12.1 trace.axd HTTP處理程序        669
23.12.2 ASP.NET性能計數(shù)器        670
23.12.3 ASP.NET狀態(tài)監(jiān)視        670
23.13 輸入數(shù)據(jù)的校驗        671
23.13.1 校驗控件        671
23.13.2 實現(xiàn)自定義校驗        673
23.13.3 校驗組        673
23.13.4 ValidationSummary類        674
23.14 用戶控件        674
23.14.1 復(fù)合用戶控件        676
23.14.2 用戶控件事件        676
23.14.3 用戶控件狀態(tài)        677
23.14.4 用戶控件與Visual Studio的設(shè)計時支持        679
23.15 緩存        679
23.15.1 頁面緩存        679
23.15.2 緩存頁面的多個版本        680
23.15.3 頁面片段緩存        683
23.15.4 緩存后替換        684
23.15.5 數(shù)據(jù)緩存        684
23.15.6 緩存依賴        685
23.15.7 SQL Server緩存依賴        686
23.15.8 自定義緩存依賴        687
23.16 數(shù)據(jù)源        688
23.16.1 通過程序的方式綁定控件和數(shù)據(jù)源        688
23.16.2 聲明式綁定控件和數(shù)據(jù)源        689
23.16.3 平鋪數(shù)據(jù)源與層次數(shù)據(jù)源        690
23.16.4 ObjectDataSource類        690
23.16.5 利用數(shù)據(jù)源更新數(shù)據(jù)        691
23.17 查看并編輯數(shù)據(jù)         693
23.17.1 GridView控件        693
23.17.2 模板        696
23.17.3 DetailsView控件        698
23.17.4 FormView控件        700
23.17.5 顯示XML數(shù)據(jù)        701
23.18 母版頁        703
23.18.1 母版頁和內(nèi)容頁面        703
23.18.2 嵌套母版頁        704
23.18.3 配置母版頁        705
23.18.4 從內(nèi)容頁面訪問母版頁        706
23.19 ASP.NET 2.0與本地化        707
23.20 站點導(dǎo)航        708
23.21 安全        710
23.21.1 通過IIS驗證Windows用戶        710
23.21.2 ASP.NET驗證        712
23.21.3 表單驗證提供程序        712
23.21.4 管理用戶        713
23.21.5 管理角色        715
23.21.6 安全服務(wù)器控件        716
23.22 個性化與用戶配置        717
23.22.1 配置提供程序以及用戶數(shù)據(jù)的管理        717
23.22.2 匿名識別        718
23.22.3 個性化與會話        719
23.23 樣式、主題與皮膚        719
23.23.1 CSS樣式和控件        719
23.23.2 主題        720
23.23.3 皮膚        721
23.23.4 命名的皮膚        722
23.24 WebPart        722
23.24.1 創(chuàng)建包含WebPart的頁面        724
23.24.2 設(shè)計方式        726
23.24.3 WebPart目錄        727
23.24.4 編輯方式        728
23.24.5 連接WebPart        728
第24章 使用.NET進(jìn)行Web服務(wù)開發(fā)        731
24.1 簡介        731
24.1.1 SOA:面向服務(wù)架構(gòu)        731
24.1.2 SOAP和WSDL        732
24.1.3 WS-I基本概要        732
24.1.4 消息交換模式        733
24.2 開發(fā)一個簡單的Web服務(wù)        733
24.2.1 不使用Visual Studio開發(fā)一個簡單的Web服務(wù)        733
24.2.2 使用Visual Studio開發(fā)一個簡單的Web服務(wù)        735
24.3 測試與調(diào)試Web服務(wù)        735
24.3.1 測試Web服務(wù)        735
24.3.2 調(diào)試Web服務(wù)        736
24.4 創(chuàng)建Web服務(wù)的.NET客戶端        736
24.4.1 不使用Visual Studio來創(chuàng)建Web服務(wù)的.NET客戶端        736
24.4.2 使用Visual Studio創(chuàng)建Web 服務(wù)的.NET客戶端        738
24.5 異步調(diào)用與消息交換模式        739
24.6 通過.NET Remoting客戶端使用Web服務(wù)        739
24.7 SOAP消息        740
24.7.1 簡介        740
24.7.2 定義以及處理SOAP首部        741
24.7.3 對SOAP消息體編碼        742
24.7.4 SOAP錯誤消息        743
24.7.5 SOAP與底層傳輸協(xié)議        743
24.8 Web服務(wù)契約與WSDL語言        743
24.8.1 WSDL能夠表達(dá)什么        743
24.8.2 剖析WSDL文檔        744
24.9 WSE與WS-*規(guī)范簡介        746
24.9.1 WSE簡介        746
24.9.2 WSE 3.0所支持的規(guī)范        747
24.9.3 安裝WSE        747
24.9.4 WSE是如何利用SOAP擴(kuò)展的        747
24.9.5 使用WSE診斷的第一個測試        748
24.10 WSE尚未支持的WS-*規(guī)范        748
24.10.1 WS-PolicyAttachment與WS-MetadataExchange        748
24.10.2 WS-ReliableMessage        748
24.10.3 UDDI and WS-Discovery        748
24.10.4 WS-Federation        749
24.10.5 WS-Coordination        749
24.10.6 WS-AtomicTransaction與WS-BusinessActivity        749
24.10.7 WS-Enumeration        750
24.10.8 WS-Eventing        750
24.10.9 WS-Management        750
24.11 WCF簡介        750
附錄A C# 2.0的關(guān)鍵字        751
附錄B .NET 2.0的新增功能        754
附錄C 設(shè)計模式簡介        762
附錄D 針對.NET 2.0平臺的工具        764  

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號