《Inside 深入核心VCL架構剖析》
Delphi 教程 系列書籍 (036) 《 Inside 深入核心 VCL 架構剖析》 網友(邦)整理 EMail: shuaihj@163.com
下載地址:
Part1 Part2 Part3 Part4 Part5 附書源碼
- 作者: 李維
- 叢書名: 李維作品系列
- 出版社:電子工業出版社
- ISBN:7505394894
- 上架時間:2003-12-30
- 出版日期:2003 年12月
- 開本:16開
- 頁碼:706
- 版次:1-1
內容簡介
本書包括10個章節,從最基礎的Windows操作系統原理講起,回顧Windows Framework和VCL Framework的發展歷史,介紹Object Pascal在00方面對VCL的支持,描述VCL Framework與Windows消息體系的集成,列舉VCL組件與Windows組件的結合,探究基于接口的程序設計,指明VCL Framework設計COM架構的方法,探討VCL Framework的永續儲存,還以一章的篇幅專門討論了VCL Framework中的設計模式,最后對下一代VCL Framework——VCL.NET作了前瞻式的研究。單看目錄就可以知道,這本書不但涉及VCL Framework本身,還旁及Windows Framework、COM、設計模式等相關技術。讀者從中獲得的,也不僅只是VCL架構知識,更會在整個閱讀和實作過程中極大地拓寬自己的開發眼界,形成在系統設計方面的大局觀,追尋大師級的Framework設計思路,提升整體開發素質。
序言
Delphi已經推出了7個版本,在未來也會持續的推出新的版本,許多人可能也已經使用Delphi許多年并且開發了各種不同的應用系統,但是不管我們使用了Delphi多久,我們真的已經了解Delphi,而且發揮Delphi十成的功能了嗎?
Delphi 1從推出以來,在每一個版本都加入了許多新的功能,融合的軟件技術也一直在增加之中。從RAD、Flat-File數據庫功能、VCL組件,一直到主從架構、Web、COM/COM+、MIDAS、多層分布式應用系統,到現在的SOAP/Web Service、dbExpress,DataSnap等技術,程序員們不斷地學習和使用新的技術,以便用來開發新的應用系統或是增加程序員個人的附加價值,以求在信息領域能夠更上一層樓。不過這些技術大都是屬于“應用類”。但是在這些技術之外Delphi亦擁有優美的Object Pascal程序語言,以及有若寶山般的VCL Framework。Object Pascal提供了典雅面向對象程序語言的功能以及Pascal傳統的嚴謹語法,值得程序員藉由Object Pascal學習面向對象的觀念和技巧。而VCL Framework更蘊藏了大量的軟件技術寶藏,它充分地使用了Object Pascal的特性,巧妙的軟件實作技巧,深入的語言/編譯器技術,動態對象生命周期的管理以及結合設計樣例(Design Pattern),是許多Borland工程師多年軟件智能和技巧的結晶。
VCL Framework這座寶藏公平地呈現在每一個Delphi程序員之前這么多年,然而大多數的我們,很久以來大都只是擷取VCL Framework表面之一角就可以快速使用Delphi開發和完成我們的應用系統,只有極少數的程序員真的嘗試開啟VCL Framework寶藏的大門,進入另外一個宏偉的軟件工程大殿,接受從未經歷過的高等軟件技術的洗禮。因此,長久以來VCL的深度知識也被封鎖在少數程序員的圈子中,這些極為有用的軟件技巧自然也只被少數程序員所擁有。
在筆者工作的這么多年中也不時地追蹤VCL Framework,因此學習到許多寶貴的軟件知識,也解決了許多問題。筆者認識的許多朋友也或多或少都研究過VCL Framework,因此許多人也成為佼佼者,在工作上表現非常杰出。筆者和這些朋友都知道一個要訣,那就是當有解不開的麻煩時看看VCL Framework大概就可以解決了,筆者也經常在網絡上看到一些高手說學Delphi根本不需要看什么書籍,只要看看Delphi的在線輔助和VCL Framework源程序就可以解決所有的問題。雖然筆者不絕對贊成這句話,因為在屬于Delphi“應用層”的技術方面仍然是需要經驗才能夠運用得很好,否則只是屬于會用而已。但是筆者贊成在偏向Window程序設計、系統功能方面,如果Delphi程序員能夠了解VCL Framework,那么的確是非常容易解決這些問題的。不過前提是Delphi程序員必須能夠掌握VCL Framework,簡單地說,也就是必須看得懂VCL Framework的源程序并且掌握其中的設計絕竅。
然而我們必須承認,在這么多的Delphi程序員中仍然只有少數人擁有掌握VCL Framework的優勢。這是為什么呢?因為要了解VCL Framework,需要許多基礎的知識。如果沒有其他人或是書籍來引導,那么就只有那些在軟件開發上非常有經驗的人才能夠一窺全貌。
數年前筆者就知道當時Delphi Informant的主編表達有興趣撰寫一本Inside VCL書籍,準備剖析VCL的架構。當時筆者非常期待這本書,因為當時筆者也想了解VCL Framework以更上一層樓。不過筆者等了又等,到了現在仍然不見那本書的出現。為什么在Delphi領域中一直沒有討論VCL Framework的書籍出現呢?這是有許多原因的,最重要的兩項因素可能是一來這種書籍不易撰寫,需要作者投入極大的心力和時間,此外也考驗了作者本身在軟件方面的素養,不是一般作者愿意或是能夠撰寫的。二來可能是因為出版商對于這種書籍的市場銷量有考量,這種屬于進階技術的書籍通常需要比出版入門書籍考量得更多。撰寫VCL Framework另外的挑戰是:VCL Framework仍然在快速的演進之中,不時地加入新的技術,架構甚至是移植到新的平臺,不像其它的一些Framework幾乎是處于停止發展的狀態。因此,寫這種書的作者必須不時地重新檢視已經撰寫的內容,看看VCL Framework是否又發生了變化?這對于書籍的作者而言是非常嚴峻的挑戰。
筆者許多年來一直在寫一些有關VCL的文章,但是這些內容從沒有發表過,這是因為筆者在苦等不到Delphi Informant主編的書籍之后,便不自量力地想自己寫一本有關VCL的書籍,但是由于筆者本人時間上的限制以及出版商的考量,因此后來就將計劃暫擱了。直到最近,大陸的數家出版社接連都表達了出版此書的意愿之后,筆者才鄭重考慮想要完成這本書,至此筆者開始認真地設計和收集這本書的內容。筆者知道,要完成這本書是一條漫漫長路,不過筆者決定一點一滴地試著完成這本書,希望2003年能夠讓這本計劃多年的書籍問市,以達成筆者多年的心愿。
讀者閱讀本書時,需要知道本書并不是討論特定的應用技術,也不會教導讀者如何開發特定的應用系統。本書主要討論的內容是VCL Framework設計和實作的技術,這包含了為什么需要VCL Framework?VCL Framework的設計思想,VCL Framework的設計架構,VCL Framework的實作技術,VCL Framework的演進,VCL Framework使用的軟件技術,VCL Framework使用和結合的Design Pattern以及VCL Framework的未來:VCL.NET。在這些討論的內容中讀者將可充分看到VCL Framework的各種實作技巧,此外筆者也會試著和讀者一起探討許多VCL Framework設計背后的理論和原因,試著讓讀者了解在設計一個Framework時牽涉到的東西。讓讀者不但能夠知道How,也知道Why。當讀者經過了VCL Framework的洗禮之后,相信在軟件思想和實作方面將有脫胎換骨的感覺。
筆者要謝謝所有幫助本書出版的朋友,沒有這些朋友的催促,這本書可能永無面市的機會。當然更要謝謝許多讀者多年來對于筆者的支持,最后希望本書的內容真的能夠幫助讀者進入VCL Framework的軟件知識寶山。在讀者能夠從其中學習到受用無窮的軟件技術之后,這些軟件技術在讀者未來于信息領域生涯的發展中將呈現出其無價的珍貴。更重要的是,藉由此一窺VCL Framework的內部實作秘密,將會讓讀者至少在思想上能夠拉近和世界一流軟件工程師的距離,當然讀者如果在日常的實作中能夠善用學習到的VCL Framework軟件技術,那么也就表明讀者正朝向一流軟件人才的方向努力奮進。
李維 2003/10/8于臺北,新店
目錄
第1 回到從前
1-1 角色扮演
1-1-1 如何設計和驅動多任務執行環境
1-1-2 是的,這就是Windows的基本運作原理
1-2 回到從前!典型的Windows應用程序
1-3 窗口回調程序設計的缺點
1-4 Windows Framework的誕生和發展
1-5 窗口組件Framework
1-6 結論
2 VCL的誕生和設計原理
2-1 Borland VCL Framework的誕生
2-2 VCL的架構設計
2-3 從無到有——VCL對象生命的成形
2-3-1 Object Pascal的對象模型
2-3-2 從原始內存到對象雛形
2-4 Object Pascal對象服務
2-4-1 對象創建服務
.2-4-2 對象識別服務
2-4-3 對象信息服務
2-5 從原始基本對象到提供基本服務的VCL對象
2-6 VCL對象的釋放服務
2-7 類和對象的Metadata-VMT(Virtual Method Table)
2-8 結論
3 面向對象程序語言和Framework
3-1 面向對象程序語言和VCL Framework
3-2 Framework使用面向對象程序語言的設計手法
3-3 神仙棒一揮——讓它變成組件吧
3-3-1 VCL Framework的核心組件架構
3-3-2 TComponent類的設計
3-4 這還不夠,讓它成為Windows控件吧
3-4-1 TControl
3-4-2 封裝Windows控件的TWinControl類
3-4-3 不使用Windows Handle的組件封裝類
3-4-4 自定義控件類TCustomControl
3-4-5 封裝Canvas的類
3-4-6 結合Canvas和TWinControl類
3-5 COMAdmin類的設計和實現
3-5-1 TCOMAdminCatalog類的設計
3-5-2 CoCOMAdminCatalogCollection類的設計
3-5-3 TCOMAdminCatalogObject類的設計
3-6 結論
4 VCL Framework和窗口消息
4-1 窗口消息和VCL Framework
4-1-1 原始的處理方式
4-2 VCL的窗口消息封裝機制
4-2-1 從窗口回調函數到面向對象的類方法
4-3 TObject的消息分派服務
4-3-1 窗口消息分類
4-3-2 調用慣例(Calling Convention)
4-3-3 VCL封裝類的方法種類
4-3-4 TObject分派消息的原理和流程
4-3-5 VCL消息分派架構
4-4 Delphi窗口應用程控者:TApplication
4-4-1 TApplication對象的創建
4-4-2 TApplication和秘密窗口
4-4-3 TApplication的消息循環
4-5 TApplication創建的主窗體
4-5-1 主窗體的創建流程
4-5-2 Delphi窗體類處理窗口消息的機制
4-6 TApplication的設計思想
4-7 結論
5 VCL組件和窗口控件的結合
5-1 VCL組件的創建和窗口控件的結合
5-1-1 填入跳躍程序區塊
5-1-2 VCL Framework統一消息分派函數——StdwndProc
5-2 VCL Framework的自定義消息(Customized Framework Message)
5-3 VCL完整的消息分派流程
5-3-1 TButton類
5-3-2 動態消息和VCL事件處理函數的結合
5-3-3 TForm類
5-3-4 內定窗口消息函數——DefaultHandler
5-4 VCL消息處理設計模式(Design Pattern)
5-4-1 Dispatcher
5-4-2 Broadcasting
5-4-3 利用VCL Framework的消息分配機制
5-4-4 攔截VCL Framework未處理的窗口消息
5-4-5 攔截TObject消息分派的服務
5-4-6 窗口消息流動時間
5-4-7 平均處理消息數目
5-5 結論
6 接口程序設計
6-1 為什么要有接口
6-1-1 接口程序的驅動力
6-2 接口的演進、比較以及Delphi的接口機制
6-2-1 Microsoft COM
6-2-2 Java
6-2-3 C#的接口
6-2-4 Delphi接口設計的發展
6-3 Delphi的接口機制
6-3-1 接口是交互的合約
6-3-2 聲明接口
6-3-3 實現和使用接口
6-3-4 接口和對象的生命周期
6-3-5 聲明繼承和實現繼承
6-3-6 多重接口的實現
6-3-7 接口的委托(Interface Delegation)
6-3-8 接口屬性
6-3-9 通用接口機制的實現方式
6-3-10 COM組件模型影響的接口機制
6-3-11 VCL Framework提供的通用接口和接口類
6-3-12 接口小范例——Interface Walker
6-4 高級接口技術
6-4-1 Delphi延伸接口機制加入的接口RTTI(Run-Time Type Information)
6-4-2 接口設計會影響應用系統的效能
6-5 Delphi接口機制未來的發展
6-6 結論
7 VCL Framework的COM架構
7-1 以面向對象技術來設計COM的支持架構
7-1-1 什么是COM對象
7-1-2 ClassFactory
7-1-3 COM Aggregation
7-1-4 Type Information
7-1-5 注冊信息
7-1-6 設計的想法
7-2 VCL Framework支持COM的面向對象架構
7-2-1 COM執行環境的服務
7-2-2 創建COM對象的服務
7-2-3 COM對象類
7-2-4 Delphi編譯器實現的變化
7-2-5 TAggregatedObject
7-2-6 TContainedObject
7-2-7 VCL Framework如何提供COM Aggregate的功能
7-3 VCL Framework創建COM對象的流程
7-4 VCL Framework使用的設計模式
7-4-1 Factory/Factory Method設計模式
7-4-2 Bootstrap設計模式
7-4-3 ForEach設計模式
7-5 結論
8 VCL Framework的持久化機制
8-1 什么是持久化(Persistence)
8-2 持久化的發展
8-2-1 COM的持久化
8-2-2 Java的持久化
8-2-3 .NET的持久化
8-2-4 Delphi/C++Builder
8-3 Delphi的持久化機制
8-3-1 復制對象變量和Assign方法
8-3-2 Shallow Copy
8-3-3 Deep Copy
8-3-4 TFiler類
8-3-5 TWriter類
8-3-6 TReader類
8-4 使用Delphi的持久化能力
8-4-1 使用TPersistent/TComponent類
8-4-2 動態創建和儲存VCL組件
8-4-3 動態儲存自定義VCL組件
8-5 VCL Framework持久化的Design Pattern
8-5-1 Two-Way Sequential設計模式
8-5-2 Adapter設計模式
8-6 流類
8-7 結論
9 VCL Framework和設計模式
9-1 Framework設計模式
9-1-1 Notify設計模式
9-1-2 Facade設計模式
9-1-3 Command設計模式/Action設計
9-2 企業應用設計模式
9-2-1 Table Module設計模式
9-2-2 Record Set設計模式
9-2-3 Service Layer設計模式
9-3 結論
9-4 參考書目
10 VCL Framework的演化——VCL.NET
10-1 Object Pascal和CLR
10-1-1 數據類型
10-1-2 類引用(Class Reference)
10-1-3 虛擬構造函數和多態對象創建
10-1-4 Class Method/Class Static Method
10-2 設計的挑戰
10-2-1 輔助類(Helper Class)的功能
10-2-2 Unit Initialization/Finalization
10-2-3 Cracker Class
10-2-4 析構函數的執行
10-3 VCL.NET的實現
10-3-1 使用.NET的PInvoke機制調用Win32服務
10-3-2 串聯Delphi.NET運行時和.NET虛擬執行環境的機制
10-3-3 使用.NET Framework類取代VCL Framework類
10-3-4 實現額外的.NET接口以提供VCL.NET開發.NET組件的能力
10-3-5 扮演.NET和VCL.NET間Adapter角色的TObjectHelper
10-3-6 .NET和Win32間的Wrapper
10-4 VCL.NET如何處理Windows消息
10-5 VCL.NET使用的設計模式
10-5-1 使用Adapter設計模式
10-5-2 使用Wrapper設計模式
10-5-3 Register/Notify設計模式
10-6 結論
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
