COM导读

来源:互联网 发布:数控套料软件 编辑:程序博客网 时间:2024/04/30 05:30

COM学习123 (引自侯捷)

关於本书定位,我没有办法一言以敝之。

量子力学大师波耳(Niels Bohr1922 诺贝尔物理奖得主)曾说:『思考量子理论而不头昏眼花的人,根本不懂量子理论』。

我稍带夸张地借用这句话:『学习 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_castdynamic_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 88日),突然像神迹一般,COM 对我变得再明白不过,我终於了解了 COM 的设计动机。如何把这个程式模型应用在每天遇到的问题中,也因此显得再明白不过。

两位先生的话,令人觉得学习COM / OLE 之前要先有宗教信仰,以求进入涅或获得神迹。其实没有渐悟是不可能成就顿悟的,大师开悟之後的种种心法都已详实记录在他们的「嘉言录」当中,就看我们自己的用心了。

祝各位早日进入涅,获得神迹。

侯俊杰 1999.01.15 于新竹

原创粉丝点击