会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
电子图书 > VC图书
COM本质论
发表日期:2005-04-24 23:15:54文件大小:18MB 下载次数:15338  

版权所有:
软件版本: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

立即下载
下载的书籍需要相应的阅读器才能查看,请到如果你的机器上没有相应的阅读器,请到 图书阅读工具 栏目中下载相关的工具。

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00276