精采的书。──李维的《Inside VCL》(200分)

  • 主题发起人 aimingoo
  • 开始时间
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
目前能看到的,只有一个目录,和grhunter转发的一篇文字(是不是序我可不知道)。全文发在深度论坛上,转发于后。

我很仔细地看了目录,实在是很精采的。这样的内容组织起来,绝对是精采好书!

很难得见到李维先生写这样以底层、概念和思想为核心内容的书哇。这一本的话,我一定是要讨到签名才安心的了。哈。

我正在思考将《Delphi源代码剖析-内核篇》中有关VCL的部分大幅削减,除了一些补遗之外,VCL我就不再讲了。
 
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
==========================================
Inside VCL

第1章 回到基础点
全章 : ~50页
* 多任务操作系统环境
* 窗口讯息系统(Window Messaging System)
* 系统讯息队列(System Message Queue)和应用程序讯息队列(Application Queue)
* 典型的的窗口应用程序
* 典型应用程序设计的缺点
* 为什么我们需要Window Framework
* Window Framework的世代

* 1-1 角色扮演
* 1-1-1 如何设计和驱动多任务执行环境
* 讯息驱动模型
* 窗口运作模型
* 执行系统,事件,讯息和触发应用程序代码
* 1-1-2 是的,这就是Window的基本运作原理
* Window定义的讯息数据结构
* 回叫函式以及呼叫惯例
* 回叫函式(Callback Routine) 以及呼叫惯例(Calling Convention)
* 注册Window窗口类别
* 建立Window窗口
* 数据结构和数据型态的转换
* 1-2 回到从前!典型的Window应用程序
* 1-3 窗口回叫程序设计的缺点
* 我们可以改善窗口应用程序的撰写吗?
* 1-4 Window Framework的诞生和发展
* 为什么我们需要Window Framework
* 第1代的Framework- OWL 1.x,MFC
* 第2代的Framework-OWL 2
* 百花齐放的阶段-ZApp, Zinc, etc....
* 第3代的Framework-VCL
* 第4代的Framework-.NET Framework, VCL.NET
* 1-5 窗口组件Framework
* 1-6 结论

第2章 VCL的诞生和设计原理
全章 : ~40页
* Borland VCL Framework的诞生
* VCL Framework的架构设计
* VCL Framework的对象服务
* Object Pascal的对象模型和『TObject』

* 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章 Object Pascal对象导向程序语言的支持
全章 : 82页
* 对象导向程序语言和VCL Framework
* Framework使用对象导向程序语言的设计手法
* 神仙棒一挥-让它变成组件吧
* 这还不够,让它成为Window控件吧
* 如何让Framework提供客制化的能力
* 不使用Window Handle的组件封装类别
* 封装Canvas的类别
* COMAdmin类别的设计和实作

* 3-1 对象导向程序语言和VCL Framework
* 3-2 Framework使用对象导向程序语言的设计手法
* 抽象类别法
* Place Holder方法
* 逐渐增加法
* 三明治手法
* 复盖父代实作法
* BootStrap设计法
* 3-3 神仙棒一挥-让它变成组件吧
* 3-3-1 VCL Framework的核心组件架构
* 3-3-2 TComponent类别的设计
* 可同时扮演Container组件和单一组件的功能
* 基础组件互动通知功能(Notification)
* 同时提供可视化和非可视化组件架构基础
* 和Delphi整合发展环境互动的机制
* 3-4 这还不够,让它成为Window控件吧
* 3-4-1 Tcontrol
* TControl控件基本信息
* 基础资源服务
* 处理鼠标的服务
* 处理讯息和事件的服务
* 控件重绘服务
* 3-4-2 封装Window控件的TWinControl类别
* 封装Window控件
* 封装Window建立功能
* 封装Window讯息
* Window控件重绘服务
* 处理Window讯息服务
* 3-4-3 不使用Window Handle的组件封装类别
* 3-4-4 客制化控件类别TcustomControl
* 3-4-5 封装Canvas的类别
* TCanvas类别
* TControlCanvas类别
* 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和窗口讯息
全章 : 69页
* 窗口讯息和VCL Framework
* 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-2 VCL封装类别的方法种类
* 4-3-3 TObject分派讯息的原理和流程
* 4-3-4 VCL讯息分派架构
* 4-4 Delphi窗口应用程控者:TApplication
* 4-4-1 TApplication对象的建立
* 4-3-2 TApplication和秘密窗口
* 4-4-3 TApplication的讯息循环
* 4-5 TApplication建立的主窗体
* 4-5-1 主窗体的建立流程
* TWinControl.Create
* TForm.HandleNeeded
* TForm.CreateHandle
* TForm.CreateWnd
* TForm的父代类别TScrollingWinControl
* TWinControl.CreateWnd
* VCL Framework的窗口thunk回叫函式-InitWndProc
* TForm. CreateParams
* TCustomForm.CreateWindowHandle
* 4-5-2 Delphi窗体类别处理窗口讯息的机制
* 有趣的范例-拦截窗口讯息以及改变窗体属性
* 4-6 TApplication的设计思想
* 4-7 结论

第5章 VCL组件和窗口控件的结合
全章 : 48页
* VCL Framework的偷天换日之计
* 讯息分派核心程序StdWndProc
* 从静态类别Framework到动态组件架构
* 完整的窗口讯息处理流程
* VCL Framework的设计样式(Design Pattern)

* 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设计样例
* 数值 Dispatcher设计样例
* 字符串Dispatcher设计样例
* 5-4-2 Broadcasting设计样例
* 5-4-3 利用VCL Framework的讯息分配机制
* 5-5 结论

第6章 界面程序设计
全章 : 92页
* 为什么要使用接口?
* 界面的演进和比较
* Delphi的界面机制
* 界面程序设计

* 6-1 为什么要有界面?
* 6-1-1 接口程序的驱动力
* 公用服务方法的汇集
* Plug-in Point
* Proxy/Stub的应用
* 软件服务
* 功能汇集
* 物件角色(Object Role)
* collections和成员
* 对象互动
* intra-class的角色
* 6-2 接口的演进,比较以及Delphi的接口
* 6-2-1 Microsoft COM
* 6-2-2 Java
* 6-2-3 C#的界面
* 6-2-4 Delphi接口设计的发展
* 为了对COM支援
* 6-3 Delphi的界面机制
* 6-3-1 接口是互动的合约
* 6-3-2 宣告界面
* 6-3-3 实作和使用接口
* 使用型态转换(Type Casting)
* 利用Delphi编译器的内建机制
* 使用TObject的GetInterface
* 使用对象的QueryInterface方法
* 使用COM的QueryInterface API
* 使用Object Pascal的as操作数
* 6-3-4 接口和对象的生命周期
* 物件生命周期掌握在他人手中
* 对象生命周期掌握在程序员手中
* 6-3-5 宣告继承和实作继承
* 6-3-6 多重接口的实作
* 6-3-7 界面的委派
* 使用对象接口委派
* 使用类别对象委派
* 6-3-8 接口特性
* 6-3-9 通用接口机制的实作方式
* 6-3-10 COM组件模型影响的接口机制
* 界面参考计数值
* GUID接口实作原理
* 6-3-11 VCL Framework提供的通用接口和接口类别
* TInterfacedObject
* Self Returning
* 6-3-12 接口小范例-Interface Walker
* 6-4 高阶接口技术
* 6-4-1 Delphi 延伸接口机制加入的接口RTTI(Run-Time Type Information)
* 接口机制结合RTTI
* 使用接口和RTTI
* 6-4-2 接口设计会影响组件系统的效能
* 6-5 Delphi接口机制未来的发展
* 6-6 结论

第7章 VCL Framework和COM的设计架构
全章 : 100页
* 以对象导向技术来设计COM的支持架构
* VCL Framework支持COM的对象导向架构
* VCL Framework建立COM对象的流程
* Factory/Factory Method设计样例
* Bootstrap设计样例
* ForEach设计样例

* 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编译器实作的变化
* Delphi 3
* Delphi 3的对于COM支持的编译器实作
* Delphi 5的对于COM支持的编译器实作
* Delphi 7的对于COM支持的编译器实作
* 7-2-5 TAggregatedObject
* 一般应用程序使用TAggregatedObject
* 在COM组件模型中使用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的永续储存
全章 : 89页
* 什么是永续储存
* 永续储存的发展
* Delphi/C++Builder,Java和.NET下的永续储存比较
* VCL Framework的永续储存机制
* VCL Framework永续储存的秘密
* 使用VCL Framework的永续储存能力
* VCL Framework的串行流类别(Stream Class)
* VCL Framework永续储存的设计样例

* 8-1 什么是永续储存(Persistence)?
* 8-2 永续储存的发展
* 8-2-1 COM的永续储存
* 8-2-2 Java的永续储存
* Form Designer和永续储存
* Java Serialization
* Java Remoting
* 8-2-3 .NET的永续储存
* Form Designer和永续储存
* .NET Serialization
* .NET Remoting
* 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
* Two-Way Sequential设计样例
* Adapter 设计样例
* 接口-类别混合的Adapter设计样例
* 类别继承的Adapter设计样例
* 设计样例使用范例
* 8-6 串行流类别
* 8-7 结论

第9章 VCL Framework和Design Pattern
全章 : 71页
* VCL Framework和设计样例
* Notify设计样例
* Facade设计样例
* Command设计样例
* Table Module 设计样例
* Table Data Gateway 设计样例
* Record Set设计样例
* Service Layer设计样例

* 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 结论

第10章 VCL Framework的演化-VCL.NET
全章 : 114页
* Object Pascal和CLR
* 设计的挑战
* .NET对于VCL Framework的影响
* VCL.NET的实作
* 从Win32到虚拟执行环境
* 实作技术的改变

* 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如何处理窗口讯息
* 10-5 VCL.NET使用的设计样例
* 10-5-1 使用Adapter设计样例
* 10-5-2 使用Wrapper设计样例
* 10-5-3 Register/Notify设计样例
* 10-6 结论
 
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
==========================================
grhunter转发的一篇文字
==========================================
编程界流传这么一句话:u正的程序员用C/C++,聪明的程序员用Delphi。言下之意,Delphi开发者并不能算是“真正的”程序员,只是一群利用RAD取巧的投机分子罢了。不过,把这话挂在嘴边的,定然是不了解Delphi的人。在多次其实无聊的论战中,C/C++的拥趸们常常抬出侯捷先生大作《深入浅出MFC》,再轻轻问一句:Delphi有这样宏伟的架构吗?你说有,用什么来证明呢?

事实上所谓“高手”,决然不会参与这样的论战。从任一方面来说,争论开发工具的优劣是没有意义的——而且,C++和Delphi,一个是语言,一个是工具,实在是没有可比性。如果把这些因素都抛开,从纯技术的角度来考虑上面的问题,即:Delphi到底有没有一种类比MFC的Framework,足以支撑Windows应用开发的一片天空,你将做何回答呢?以前苦无论据的你,现在可以理直气壮地说:有!VCL就是足堪媲美于,甚至优于MFC的Framework。不信啊,请来看看李维先生的最新力作《Inside VCL(深入核心——VCL架构剖析)》。

在《Borland传奇》热销之后,李维重回技术路线,潜心写作,终于推出这本《Inside VCL》。它是目前市面上第一本全面、深入阐述VCL架构的技术专著,也是李维筹划数年的扛鼎力作。从早些时候的多层开发系列图书到这本《Inside VCL》,李维带领Delphi开发者登堂而入室,自开发最前端应用开始,深入到Delphi的内核中去。换言之,《Inside VCL》就是专门讲Delphi内核、讲VCL Framework的一本大书。

VCL,Visual Component Library(可视化组件库),正是这个“有若宝山般的”Framework,不但撑起了Delphi应用开发的整座大厦,还向敢于探索的Delphi程序员敞开了一道通往软件系统设计高级技术的大门。李维在为这本书做的序言说:“VCL Framework蕴藏了大量的软件技术宝藏,它充分使用了Object Pascal的特性,巧妙的软件实现技巧,深入的语言/编译器技术,动态对象生命周期的管理以及结合设计模式(Design Pattern),是许多Borland工程师以及多年软件智能和技巧的结晶。”此言不虚。每次当我浏览Delphi VCL源码,总有一种“高山仰止”的感叹发自内心。究竟需要怎样天才般的智慧、怎样丰富的开发经验、怎样洞彻的架构理念,才能构筑这宏伟的宝殿!

然而,在多数时候,初学者都满足于在IDE中拖放按钮,然后编写事件代码。这当然是比较dirty的编程方式,但即便是一些拥有多年开发经验的程序员,如非必要,往往也不会自觉地去挖掘VCL这座宝藏。RAD在送给我们便利的同时,也如那片绿叶,遮住了我们眼前的整个森林。当你必须或是无意中拨落蔽眼之叶,在浩叹森林广阔之余,是不是也会觉得有无从下手,虽入宝山却空手而回的惋惜呢?愚如我者尚能体会学习VCL的难处,开发界前辈自然不会忽略这个问题。李维如是说:“在数年前笔者就知道当时Delphi Informant的主编表达了有兴趣撰写一本Inside VCL书籍,准备剖析VCL的架构。当时笔者非常期待这本书,因为笔者也想了解VCL Framework以更上一层楼。不过笔者等了又等,到现在仍然不见那本书的出现。为什么在Delphi领域中一直没有讨论VCL Framework的书籍出现呢?这是有许多原因的,最重要的两项因素可能是一来这种书籍不易撰写,需要作者投入极大的心力和时间,此外也考验了作者本身在软件方面的素养,不是一般作者愿意或是能够撰写的。二来可能是因为出版商对于这种书籍的市场销量有考虑,这种属于进阶技术的书籍通常需要比出版入门书籍考虑得更多。”

可见探究VCL的专书并不易写。任何做过两、三个应用的程序员都可以告诉别人如何去进行数据库的增删查改,但要系统地阐释整个VCL Framework就不是人人皆能的了。李维在Delphi方面的技术素养无可置疑,在大陆数家出版社的盛情邀请下,李维即已抱定“无论如何也要写出来”的决心,开始本书的撰写。博文视点公司十分珍惜李维给予的信任,决心倾全力出好这本得到很多读者关注的经典著作。

如果你真的热爱Delphi,总有一天你会拿掉眼前那片树叶。李维告诉我们:“笔者认识的许多朋友也或多或少的都研究过VCL Framework,因此许多人也成为佼佼者,在工作上表现的非常杰出。笔者和这些朋友都知道一个要诀,那就是当有解不开的麻烦时看看VCL Framework大概就可以解决了。笔者也经常在网络上看到一些高手说学Delphi根本不需要看什么书籍,只要看看Delphi的在线辅助和VCL Framework原始程序就可以解决所有的事情。虽然笔者不绝对赞成这句话,因为在属于Delphi“应用层”的技术方面仍然是需要经验才能够运用得很好,否则只能说是属于会用而已。但是笔者赞成在偏向Windows程序设计、系统方面的功能,如果Delphi的程序员能够了解VCL Framework,那么的确是非常容易解决这些问题的。不过前提是Delphi的程序员必须能够掌握VCL Framework,简单说也就是必须看得懂VCL Framework的原始程序并且掌握其中的设计绝窍。”因此,我们可以这么认为:在通往森林宝藏的千百条小径旁,《Inside VCL》就是指向正道的路标;如果把多达150个、近7M大小的VCL核心源码比做错综复杂的奇门八卦阵,那么《Inside VCL》就是开启生门的钥匙。

该书包括十个章节,从最基础的Windows操作系统原理讲起,回顾Windows Framework和VCL Framework的发展历史,介绍Object Pascal在OO方面对VCL的支持,描述VCL Framework与Windows消息体系的集成,列举VCL组件与Windows组件的结合,探究基于接口的程序设计,指明VCL Framework设计 COM架构的方法,探讨VCL Framework的永续储存,还以一章的篇幅专门讨论了VCL Framework中的设计模式,最后对下一代VCL Framework——VCL.NET作了前瞻式的研究。单看目录就可以知道,这本书不但涉及VCL Framework本身,还旁及Windows Framework、COM、设计模式等相关技术。读者从中获得的,也不仅止是VCL架构知识,更会在整个阅读和实作过程中极大地拓宽自己的开发眼界,形成在系统设计方面的大局观,追寻大师级的Framework设计思路,提升整体开发素质。

尤其值得一提的是,李维维持了他一贯以来平易近人的写作风格,在写法上更是采用了招牌的RPG模式,即带领读者模拟VCL Framework设计者当时的思路,一步一步接近真正的架构设计。这使得整本书的写法如同游戏攻略,让读者时时不自觉地去扮演游戏的主角,主动与作者一起探索VCL Framework。所以,VCL虽然不易学习,也在此高招之下被拆解为一个个易于理解的单元;读者见招拆招,自能从中悟得玄妙心法。在这一点上,《Inside VCL》亦可谓“深入浅出”的经典之作。
 

刀剑如梦

Unregistered / Unconfirmed
GUEST, unregistred user!
这本书一定会有很强烈的反响。希望给我们带来好运,畅游DELPHI的VCL世界。
 
W

wfzha

Unregistered / Unconfirmed
GUEST, unregistred user!
O

oldsheep35

Unregistered / Unconfirmed
GUEST, unregistred user!
好书,绝对要买的。
只是还不知道上市的时间!
再忙也要尽快看!
 
E

easyyz

Unregistered / Unconfirmed
GUEST, unregistred user!
绝对好书!什么时候出来啊,等不及了!
 
S

st_cumt

Unregistered / Unconfirmed
GUEST, unregistred user!
成都有时一定买
 

杨利伟

Unregistered / Unconfirmed
GUEST, unregistred user!
L

lichaogang

Unregistered / Unconfirmed
GUEST, unregistred user!
一定要买!
另:楼主的书几时可以写好?期待中!
 
E

ego

Unregistered / Unconfirmed
GUEST, unregistred user!
要是两年前就出来就好了,呵呵,希望现在不算晚。到时候一定要买!
对呀,aimingoo你的书写得怎样了?
 
L

lichdr

Unregistered / Unconfirmed
GUEST, unregistred user!
期待中。
這兩年很少買書
 
G

ggscw

Unregistered / Unconfirmed
GUEST, unregistred user!
绝对好书!什么时候出来啊,等不及了!
 
H

hanpengshan_00

Unregistered / Unconfirmed
GUEST, unregistred user!
肯定要大出血
 
L

leilu

Unregistered / Unconfirmed
GUEST, unregistred user!
一定是本好书的,快点出来吧!
 
M

manana

Unregistered / Unconfirmed
GUEST, unregistred user!
一定会对我大有帮助的,买。
 
N

nxzj

Unregistered / Unconfirmed
GUEST, unregistred user!
内功心法
 
S

savenight

Unregistered / Unconfirmed
GUEST, unregistred user!
出来的太晚了。
Borland还是赶快写Inside C++BuilderX吧。
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
刻个记号
 
K

ka52

Unregistered / Unconfirmed
GUEST, unregistred user!
李维的书好贵啊。不过这本书看上去的确不错,就看什么时候可以出了。
 

Similar threads

顶部