編輯推薦
本書是一部充滿傳奇色彩的C#經典著作。它源自一位微軟MVP的多年實戰經驗,最初用法語寫成,由O‘Reilly法國公司出版後,一時洛陽紙貴,曾長期雄踞法國.NET圖書榜首。英文版未事宣傳,卻在眾多.NET技術專家口口相傳之下。成為社區關注的焦點.獲得好評如潮。
本書為何如此神奇昵?與市面上大量講述C#的普通圖書不同,它通過6417個切合實際而且可以直接套用的示例程式。不僅全面討論了C#2.0語言的各種特性,而且深入.NET平台和.NETFramework2.O內部,講解了諸多技術細節。書中涉及的知識面雖然很寬,但每個主題都具有相當的深度,充分展現了作者罕見的豐富經驗和淵博學識。本書的章節設計非常獨特,讀者可靈活選擇閱讀順序,與此同時,書中的引用非常豐富,與MSDN結合,讀者能夠輕鬆獲取各種知識。
本書示例可以從配套網站http:Hwww.practicaldot.net/下載。
目錄
第1章 .NET簡介
1.1 什麼是.NET
1.1.1 微軟軟體開發平台
1.1.2 一組規範
1.1.3 .NET概覽
1.2 發展歷程
1.2.1 過去
1.2.2 現在
1.2.3 未來
1.3 微軟和Windows以外的.NET
1.3.1 ECMA組織與.NET
1.3.2 W3C聯盟
1.3.3 Mono項目
1.3.4 微軟SSCLI項目
1.4 .NET資源連結
1.4.1 網站
1.4.2 新聞組
1.4.3 部落格
第一部分 .NET平台
第2章 程式集、模組和IL語言
2.1 程式集、模組和資源檔案
2.1.1 程式集和模組
2.1.2 資源檔案
2.1.3 程式集、模組、類型和資源
2.1.4 為何對多模組程式集感興趣
2.1.5 ILMerge工具
2.2 模組的剖析
2.2.1 可移植的執行檔簡介
2.2.2 模組的結構
2.2.3 清單的結構
2.2.4 類型元數據段的結構
2.3 使用ildasm.exe和Reflector工具分析程式集
2.3.1 創建需要分析的程式集
2.3.2 使用ildasm.exe分析模組
2.3.3 Reflector工具
2.4 程式集attribute和版本設定
2.4.1 程式集的標準attribute
2.4.2 程式集的版本設定
2.4.3 友元程式集
2.5 強名稱程式集
2.5.1 簡介
2.5.2 sn.exe工具
2.5.3 公鑰記號
2.5.4 為程式集簽名
2.5.5 具體示例
2.5.6 程式集的延遲簽名
2.6 國際化/本地化與衛星程式集
2.6.1 區域設定和本地化
2.6.2 資源檔案
2.6.3 在代碼中使用資源
2.6.4 創建衛星程式集
2.6.5 部署和使用衛星程式集
2.6.6 避免在資源無法找到時引發異常
2.6.7 VisualStudio與衛星程式集
2.6.8 區域設定與字元串格式化
2.7 IL語言簡介
2.7.1 棧及其特殊的IL指令
2.7.2 示例1:局部變數與棧
2.7.3 示例2:方法調用與棧
2.7.4 用於比較、分支和跳轉的IL指令
2.7.5 IL的面向對象特性
2.7.6 元數據符號
第3章 生成、部署以及配置.NET應用程式
3.1 用MSBuild生成應用程式
3.2 MSBuild:目標、任務、屬性、項與條件
3.2.1 .proj檔案、目標與任務
3.2.2 屬性
3.2.3 項
3.2.4 條件
3.3 高級MSBuild
3.3.1 增量生成與目標間的依賴
3.3.2 MSBuild轉換
3.3.3 將一個MSBuild項目分解到多個檔案
3.3.4 VisualStudio2005如何利用MSBuild
3.3.5 創建自定義MSBuild任務
3.4 配置檔案
3.4.1 machine.config檔案
3.4.2 標準配置參數
3.4.3 使用appSettings元素定義配置參數
3.4.4 使用配置節定義配置參數
3.4.5 使用VisualStudio2005創建配置節
3.4.6 配置節的注意事項
3.5 程式集部署:XCopy與GAC
3.5.1 XCopy部署
3.5.2 共享程式集與GAC資料夾
3.5.3 GAC的並存存儲模型是如何解決DLLhell問題的
3.5.4 並存執行
3.5.5 查看及編輯GAC資料夾
3.6 發布者策略程式集
3.6.1 潛在的問題
3.6.2 解決方案
3.6.3 創建發布者策略程式集
3.7 .NET應用程式部署簡介
3.7.1 MSI、cab、XCopy、ClickOnce和NTD之間的對比
3.7.2 MSI與ClickOnce的對比
3.8 使用cab檔案部署應用程式
3.9 使用MSI技術部署應用程式
3.9.1 添加檔案
3.9.2 安裝捷徑
3.9.3 在GAC資料夾中添加一個共享程式集
3.9.4 安裝項目屬性
3.9.5 更新註冊表
3.9.6 指定在安裝期間執行的自定義動作
3.9.7 為安裝提供一個自定義用戶界面
3.10 使用ClickOnce技術部署應用程式
3.10.1 部署資料夾
3.10.2 為ClickOnce部署做準備
3.10.3 ClickOnce部署與移動代碼安全
3.10.4 按需安裝與下載組
3.10.5 更新一個使用ClickOnce安裝的應用程式
3.10.6 應用程式所需的CAS許可權集的工作機制
3.10.7 ClickOnce應用程式安裝與執行的細節
3.11 使用無接觸部署(NTD)技術部署應用程式
3.12 如果目標機器上沒有安裝.NET運行庫怎么辦
第4章 CLR
4.1 應用程式域
4.1.1 簡介
4.1.2 執行緒與AppDomain
4.1.3 卸載AppDomain
4.1.4 AppDomain和孤立性
4.1.5 System.AppDomain類
4.1.6 在一個進程中承載多個應用程式
4.1.7 在其他AppDomain的上下文中運行代碼
4.1.8 AppDomain類的事件
4.1.9 在同一個進程的AppDomain之間共享信息
4.2 在Windows進程內通過運行庫宿主載入CLR
4.2.1 mscorsvr.dll和mscorwks.dll
4.2.2 mscorlib.dll程式集
4.2.3 運行庫宿主介紹
4.2.4 在同一台計算機上承載多個版本的CLR
4.2.5 使用CorBindToRuntimeExO函式載入CLR
4.2.6 創建一個自定義的運行庫宿主
4.2.7 在自定義運行庫宿主中調整CLR
4.2.8 SQLServer2005運行庫宿主的特性
4.3 剖析.NET應用程式的執行狀況
4.4 定位和載入程式集
4.4.1 CLR何時嘗試定位程式集
4.4.2 CLR使用的定位算法
4.4.3 配置檔案的assemblyBinding元素
4.4.4 定位算法示意圖
4.4.5 影子複製機制
4.5 運行庫類型解析
4.5.1 顯式或隱式載入程式集
4.5.2 編譯時引用程式集
4.5.3 示例
4.5.4 類型解析算法示意圖
4.6 JIT(即時)編譯
4.6.1 可移植的二進制代碼
4.6.2 即時編譯技術簡介
4.6.3 ngen.exe工具
4.6.4 性能計數器與JIT編譯
4.7 垃圾收集器和託管堆
4.7.1 垃圾收集技術簡介
4.7.2 垃圾收集算法遇到的問題
4.7.3 .NET的GC
4.7.4 第一步:尋找根對象
4.7.5 第二步:建立活動對象樹
4.7.6 第三步:解除分配非活動對象
4.7.7 第四步:清理堆碎片
4.7.8 第五步:重新計算託管引用所使用的物理地址
4.7.9 推薦做法
4.7.10 針對大對象的特殊堆
4.7.11 多執行緒環境下的垃圾收集
4.7.12 弱引用
4.7.13 使用System.GC類影響GC的行為
4.8 提高代碼可靠性的機制
4.8.1 異步異常及託管代碼可靠性
4.8.2 受約束執行區域
4.8.3 如何定義CER
4.8.4 記憶體門
4.8.5 可靠性契約
4.8.6 關鍵終結器
4.8.7 臨界區
4.9 CLI和CLS
4.9.1 .NET語言必須滿足的要求
4.9.2 從開發人員的觀點看CLI和CLS
第5章 進程、執行緒與同步
5.1 簡介
5.2 進程
5.2.1 簡介
5.2.2 System.Diagnostics.Process類
5.2.3 創建和銷毀子進程
5.2.4 避免在一台機器上同時運行同一應用程式的多個實例
5.2.5 終止當前進程
5.3 執行緒
5.3.1 簡介
5.3.2 受託管的執行緒與Windows執行緒
5.3.3 搶占式多任務處理
5.3.4 進程與執行緒的優先權
5.3.5 System.Threading.Thread類
5.3.6 創建與聯結執行緒
5.3.7 掛起執行緒
5.3.8 終止執行緒
5.3.9 前台執行緒與後台執行緒
5.3.10 受託管執行緒的狀態圖
5.4 訪問資源同步簡介
5.4.1 競態條件
5.4.2 死鎖
5.5 使用volatile欄位與Interlocked類實現同步
5.5.1 volatile欄位
5.5.2 System.Threading.Inter-locked類
5.5.3 Interlocked類提供的其他功能
5.6 使用System.Threading.Monitor類與C#的lock關鍵字實現同步
5.6.1 EnterO方法和ExitO方法
5.6.2 C#的lock關鍵字
5.6.3 SyncRoot模式
5.6.4 執行緒安全類
5.6.5 Monitor.TryEnterO方法
5.6.6 Monitor類的WaitO方法、PulseO方法以及PulseAllO方法
5.7 使用Win32對象同步:互斥體、事件與信號量
5.7.1 共享Win32同步對象
5.7.2 互斥體
5.7.3 事件
5.7.4 信號量
5.8 利用System.Threading.Reader-WriterLock類實現同步 113
5.9 利用System.Runtime.Remoting.Contexts.SynchronizationAttr-ibute實現同步
5.9.1 同步域簡介
5.9.2 System.Runtime.Remoting.Contexts.Synchronization與同步域
5.9.3 重入與同步域
5.9.4 另一個名為Synchronization的attribute
5.10 CLR的執行緒池
5.10.1 簡介
5.10.2 使用執行緒池
5.11 定時器
5.11.1 System.Timers.Timer類
5.11.2 System.Threading.Timer類
5.11.3 System.Windows.Forms.Timer類
5.12 異步方法調用
5.12.1 異步委託
5.12.2 回調方法
5.12.3 向回調方法傳遞狀態
5.12.4 one-way調用
5.13 執行緒-資源親緣性
5.13.1 System.ThreadStatic-Attribute
5.13.2 執行緒本地存儲(TLS)
5.13.3 System.ComponentModel.ISynchronizeInvoke接口
5.14 執行上下文簡介
第6章 安全性
6.1 代碼訪問安全性(CAS)概述
6.1.1 什麼是移動代碼
6.1.2 CAS:全局觀
6.1.3 給程式集代碼授予許可權
6.1.4 在運行程式集的代碼時檢查許可權
6.2 CAS:證據和許可權
6.2.1 什麼是證據
6.2.2 .NETFramework所提供的標準證據
6.2.3 誰提供證據
6.2.4 許可權
6.2.5 標準許可權
6.2.6 標識許可權
6.2.7 安全許可權
6.2.8 自定義許可權
6.3 CAS:通過套用安全策略根據證據授予許可權
6.3.1 安全策略級別
6.3.2 剖析安全策略
6.3.3 用於套用安全策略的算法
6.3.4 默認安全策略配置
6.3.5 配置安全策略
6.4 CAS:FullTrust許可權
6.5 CAS:從原始碼進行命令式的許可權檢查
6.5.1 CodeAccessPermissions類和PermissionSet類
6.5.2 DemandO方法
6.5.3 DenyO方法、RevertDenyO方法、PermitOnlyO方法和RevertPermitOnlyO方法
6.5.4 AssertO方法和RevertAssertO方法
6.5.5 FromXmlO方法和ToXmlO方法
6.5.6 System.Security.IPermission接口
6.6 CAS:使用attribute進行聲明式的許可權檢查
6.6.1 載入程式集時調整所授許可權集合的attribute
6.6.2 命令式與聲明式的對比
6.7 CAS:測試和調試移動代碼的實用機制
6.8 CAS:獨立存儲區許可權
6.9 .NET、Windows用戶與角色
6.9.1 Windows安全簡介
6.9.2 IIdentity接口與IPrincipal接口
6.9.3 Windows安全標識符
6.9.4 在底層Windows執行緒中模擬用戶
6.10 .NET與Windows資源的訪問控制
6.10.1 Windows訪問控制簡介
6.10.2 在.NET代碼中使用特殊的SD
6.10.3 在.NET代碼中使用通用的SD
6.11 .NET與角色
6.11.1 定義應用程式域的主體策略
6.11.2 檢查用戶是否屬於某個特定角色
6.11.3 COM+角色
6.12 .NET與密碼學:對稱算法
6.12.1 對稱算法概述
6.12.2 .NETFramework與對稱算法
6.13 .NET與密碼學:非對稱算法(公鑰/私鑰)
6.13.1 非對稱算法概述
6.13.2 安全會話簡介
6.13.3 RSA算法
6.13.4 非對稱算法與數字簽名
6.13.5 .NETFramework與RSA算法
6.14 數據保護API
6.14.1 Windows的數據保護API
6.14.2 System.Security.Crypto-graphy.ProtectedData類
6.14.3 System.Security.Crypto-graphy.ProtectedMemory類
6.14.4 System.Security.SecureString類
6.14.5 保護配置檔案中的數據