《應用框架的設計與實現 .NET 平臺》算法
========== ========== ==========
[做者] (美) Xin Chen
[譯者] (中) 溫昱 靳向陽
[出版] 電子工業出版社
[版次] 2005年07月 第1版
[印次] 2005年07月 第1次 印刷
[訂價] 39.80元
========== ========== ==========編程
【第01章】 【應用框架介紹】 設計模式
(P004) 緩存
使用應用框架有五大優勢 : 模塊化 (modularity) 、可重用性 (reusability) 、可擴展性 (extensibility) 、簡單性 (simplicity) 和可維護性 (maintainability) 。框架
(P005) 異步
應用框架是精心設計的組件的聚集之處,其中不乏 「久經考驗」 的優秀的軟件設計方案。模塊化
【第02章】 【應用框架解析】 工具
(P019) 加密
通用點、擴展點和設計模式是用於開發框架的技術,黑盒、白盒和灰盒是開發框架的方法。spa
(P025)
在框架開發中,模板方法包含了業務領域知識,這些業務領域知識規定了不一樣方法應當如何協做;而抽象方法爲模板方法調用的方法提供了客戶化實現的手段。
(P028)
爲了經過可插入組件來支持擴展點,應用框架必須首先爲擴展點定義接口。
(P029)
使用組合法支持擴展點,開發者須要建立可插入的應用組件,該組件的接口要和框架擴展點匹配。經過把應用組件和框架組件綁定在一塊兒,開發者可以將組件插入到擴展點。
【第03章】 【Simplified Application Framework 概覽】
(P040)
每一個 .NET 應用都以 .NET 框架做爲其分層結構的最底層。
(P043)
在 Windows 平臺上,啓動並持續運行一個應用的最經常使用手段之一,就是 Windows 服務。
【第05章】 【緩存服務】
(P087)
哈希表要求鍵是惟一的。若是你視圖使用哈希表中已存在的鍵增長一個對象,則將會拋出一個異常 (exception) 。哈希表中的鍵至關於數據表中的主關鍵字或唯一關鍵字。
(P089)
每一個 XML 文檔只能有一個根元素,而每一個元素能夠有多個子元素 (child element) 。
一個元素能夠有多個屬性,可是多個屬性的名字不可重複。
【第06章】 【配置服務】
(P111)
在 .NET 中,配置文件中全部信息都要 「經」 IConfigurationSectionHandler 接口讀出。
(P112)
配置數據分爲兩組 : 段處理器 (section handler) 組和段 (section) 組。
(P113)
只定義 <configSections> 但沒有 <section> 是容許的,而不定義 <configsections> 只定義 <section> 是不容許的,這時試圖運行應用,會收到運行時錯誤 (run-time error) 。
(P115)
ASP.NET 應用配置文件的原則和非 ASP.NET 應用配置文件的原則 —— 如控制檯應用程序,是徹底同樣的。
【第07章】 【事件通知服務】
(P134)
被封裝在委託以內的關於 「方法」 的信息能夠分爲兩部分 : 方法簽名 (method signature) 和方法目標 (method target) 。方法簽名包括的信息有 : 方法參數的個數和類型,以及返回值 (return value) 類型。方法目標包括的信息有 : 方法名和方法所在對象。
(P135)
在程序中使用委託要作的第一件事是,定義一個委託類,明確說明它可以處理的方法簽名。
委託類只有一個構造器,以 「方法目標 (method target)」 做爲唯一參數。這實際上是把該委託對象綁定到實際的目標。
以構造器中指定的方法目標必須和委託類中定義的方法簽名相匹配。
(P138)
當使用委託封裝方法調用時,必須從傳統的方法調用思想轉到面向對象思想上來。
(P139)
經過爲委託技術增長異步風格,能夠改善應用。
(P140)
BeginInvoke 方法的返回對象也很重要,它返回 AsyncResult 對象,該對象封裝了委託方法結果的全部信息,以及方法調用的狀態。
(P141)
要得到返回值,必須調用 EndInvoke 並以 BeginInvoke 返回的 AsyncResult 爲參數。
EndInvoke 方法的返回值就是目標方法的返回值。
EndInvoke 方法老是返回 object 類型,因此須要對它進行強制類型轉換,把它變成目標方法原來的返回值類型。
【第08章】 【「Windows 服務」 服務】
(P166)
爲了建立一個新線程,首先要建立一個 ThreadStart 委託。 ThreadStart 指明瞭在線程啓動後須要調用哪些程序代碼,也就是說,它把一個線程和一個具體的方法調用捆綁在一塊兒。
ThreadStart 只能接受沒有輸入參數和沒有返回值的方法。
建立 ThreadStart 委託以後,必須將它與一個線程捆綁在一塊兒。
要啓動一個線程,只需簡單地調用線程中的 Start 方法就能夠了。
(P167)
Sleep 是一個靜態方法,可讓當前線程休眠必定時間。在線程休眠期間,操做系統不會將 CPU 時間片分配給它。 Sleep 方法一般放在循環處理中,這樣可讓線程週期性地工做。
(P168)
Thread.Sleep(-1) 是指這個線程將無限期地等待下去; Thread.Sleep(0) 則令該線程讓出一次執行機會給其餘線程。用 Thread.Interrupt 方法能夠 「喚醒」 一個休眠的線程。這個方法會使休眠的線程拋出 ThreadInterrupted 異常。
(P170)
用 .NET 建立一個 Windows 服務主要包括兩步 : 第一,建立一個從 System.ServiceProcess.ServiceBase 繼承的服務類;第二,爲該服務類建立一個安裝項目。
(P173)
Windows 服務項目通過編譯後,系統生成一個 「.exe」 文件。
【第12章】 【加密服務】
(P254)
.NET 框架經過 System.Security.Cryptography 命名空間,爲加密編程提供了一個綜合工具箱 (toolkit) 。 System.Security.Cryptography 包含四種不一樣的對稱加密算法和兩種非對稱加密算法的實現。
(P255)
.NET 加密功能採用基於流 (stream-based) 的方式實現,加密和解密數據都要使用 System.Security.Cryptography.CryptoStream 類。
當數據通過 CryptoStream 類時,就被加密或解密。