版权所有:
软件版本:PDF
文件大小:18MB
操作系统:win9x/NT/2000/XP
下载说明:
本书由一流的权威撰写,揭示了COM(组件对象模型)的本质,旨在帮助开发人员真正理解COM的为什么,而不仅限于怎么使用。书中还提供了一个完整的分布式COM应用,演示了各种编程技术。是程序员必备的参考书。 本书适合有经验的软件开发人员阅读,也可作高校计算机相关专业软件组件课的教材。
关於本书定位,我没有办法一言以敝之。
量子力学大师波耳(Niels Bohr,1922 诺贝尔物理奖得主)曾说:『思考量子理论而不头昏眼花的人,根本不懂量子理论』。
我稍带夸张地借用这句话:『学习 COM 而不头昏眼花的人,根本未曾进入 COM』。
然而,量子理论之所以令人头昏眼花,是因为它与牛顿力学不符,与我们认知的常识不符。COM 之所以令人头昏眼花,却是因为想要认识它的人,根基通常都不够。
基本上,学习 COM,你需要具备不少基础知识:
要知道 Component Object Model 的最初发展原由,你需得了解C++ Object Model 的缺点。唯因清楚世界上最通行的物件导向语言C++ 之所不能,你才能够清楚了解 COM 之所能。
要认识 component 的体质,你必须知道什麽是 DLLs。
要了解 COM 的 apartment model,你必须知道什麽是 threads。
要了解 COM 的分散性质和 security,你必须多少知道一点 IPC、一点 RPC。
要了解 COM 的组态性质,你必须知道什麽是 Windows Registry。
是的,如果我们有了必要的 C++ Object Model 知识(我指的是虚拟函式的内部机制、自然多型与非自然多型、static_cast、dynamic_cast 的意义),并且在学习 COM 之前先明白 COM 究竟要解决软体界的什麽问题,我们就可以逐步摆脱头昏眼花的状态,进入万物静观皆自得的层次,然後就可以逐步将视野扩展到分散式电算环境中的各个主题。
换言之,虽然或许人人都耳闻 COM 大名,但它并不是一个程式新手应该追寻的目标。你必须对物件导向程式开发工具(C++ 语言尤佳)、作业系统概念、分散式处理原则都有一些基础,才具备进入这个领域(并深刻了解它)的本钱。所以,以下我所谓的新手,非指程式开发的全然新手,而是指具备了上述基础的 COM 新手。
做为本书译者,我在这里介绍其他 COM 书籍,有点奇怪。但以资讯教育者的身份,以及书评人身份,为读者铺陈理想的 COM 学习之路,实乃份所当为。我认为,COM 相关书籍大约可分四类:
入门 如 Inside COM (Dale Rogerson / Microsoft Press)
进阶 如 Essential COM (A.W.) 和 DCOM programming(WROX Press)
实作经验 如 Effective COM (Don Box/A.W.)
观念整理 如Understanding ActiveX and OLE(David Chappell/Microsoft Press)
以目前国内软体工程界对 COM 的认识程度,我们最需要的恐怕是第一类。Inside COM 是一本很容易上手的书,我很推荐。但如果想要知道COM 来龙去脉,还得叁酌 Essential COM 第一章。
适才我说过,没有办法简单一句话就说明 Essential COM 的适合对象,原因便是虽然本书前两章极适合牵引你进入 COM 领域,但其他章节却又把COM 挖得很深,深到即令具备 COM 经验的老手读来亦觉吃力。
自从网路上公布我将翻译Essential COM 之後,中译本 COM 本质论 便受到众多读者的期待,我也收到为数极多的 email 询问信函。但是我想,不是每一位期待它的人都有马上享用它的能力,这一点必须提醒你。当然,以「好书千万不要错过」的心情立刻让它进驻你的书架,是我的大安慰。
如果你阅读本书第一章仍觉吃力,那麽你需要先补强 C++ Object Model 的知识。以下是我推荐的两本书:
Inside the C++ Object Model, chap3,4(Lippman/Addison Wesley/1996);中译深度探索 C++ 物件模型(侯俊杰译/ 峰/1998)第三、四章(建议看中译本,因为原文本笔误极多)
多型与虚拟(Polymorphism in C++)(侯俊杰着/松岗/1998)第二章
有趣的是,COM / OLE 领域中重要的两本着作的作者,都提到了一种奇异的顿悟经验。
Inside OLE 作者 Kraig Brockschmidt 说:
我隐约感觉 OLE 远比我原先认知的不同,却又很难打断 OLE 与复合文件之间的等号,因为每一份技术报告都把两者视为同义。我逐渐了解,OLE 事实上已经建立了一个非常巨大的系统,一个在 Windows 之下的物件导向程式设计系统。1993 年一月的某个周日下午,我突然获得了所谓的 OLE 涅 状态。所有关於 OLE 的支支节节突然全都归定位。历经六个月的模糊心智之後,我突然看清楚了 OLE。
Essential COM 作者 Don Box 说:
我一直未能对「COM 程式模型为什麽设计成这个样子」有结构上的了解。幸运的是有一天(1994 年8月8日),突然像神迹一般,COM 对我变得再明白不过,我终於了解了 COM 的设计动机。如何把这个程式模型应用在每天遇到的问题中,也因此显得再明白不过。
两位先生的话,令人觉得学习COM / OLE 之前要先有宗教信仰,以求进入涅 或获得神迹。其实没有渐悟是不可能成就顿悟的,大师开悟之後的种种心法都已详实记录在他们的「嘉言录」当中,就看我们自己的用心了。
祝各位早日进入涅 ,获得神迹。
侯俊杰 1999.01.15 于新竹
【目录】
目 录 / 001
侯俊杰 译序 / 007
Charlie Kindel 序 / 011
Grady Booch 序 / 017
前 言 / 019
第一章 COM 是一个更好的 C++ / 001
分散式软体与 C++(Software Distribution and C++) / 003
动态联结与 C++(Dynamic Linking and C++) / 005
C++ 与可移植性(C++ and Portability) / 006
封装性与 C++(Encapsulation and C++) / 008
从实作(implementation)中分离出介面(interface) / 011
以抽象基础类别做为二进位介面 / 014
执行时期的多型性质(Runtime Polymorphism) / 023
物件的延展性(Object Extensibility) / 025
资源管理(Resource Management) / 033
我们身置何处? / 037
第二章 Interfaces / 039
重访 Interfaces 与Implementations / 039
IDL(Interface Definition Language) / 041
成员函式(Methods)与执行结果 / 044
Interfaces 与IDL / 047
IUnknown / 051
资源管理与IUnknown / 057
型别强制与IUnknown / 061
实作IUnknown / 066
使用 COM Interface 指标 / 071
将 QueryInterface 最佳化 / 074
资料型别(Data Types) / 079
Attributes 与 Properties / 093
异常情况(Exceptions) / 094
我们身置何处? / 100
第三章 Classes / 101
重访 Interfaces 和 Implementation / 101
Class Objects / 104
活化(Activation) / 107
使用SCM(Service Control Manager) / 110
类别与伺服器(Classes and Servers) / 114
一般化(Generalizations) / 123
最佳化(Optimizations) / 126
再一次谈 Interfaces和Implementation / 133
Monikers与Composition(组合) / 139
Monikers 和Persistence(永续生存) / 142
伺服器的生命期(Server Lifetime) / 146
Classes 与IDL / 149
Class Emulation(类别凌驾) / 153
Component Categories(元件种类,元件部门) / 155
我们身置何处? / 161
第四章 Objects / 163
重访IUnknown / 164
QueryInterface 是对称的(Symmetric) / 166
QueryInterface 是递移的(Transitive) / 167
QueryInter
【立即下载】
下载的书籍需要相应的阅读器才能查看,请到如果你的机器上没有相应的阅读器,请到 图书阅读工具 栏目中下载相关的工具。
|