首先声明本人并非COM/ATL高手,尽管本人接触他们已经有4年了,但是因为工作中的一些原因一直未能深入研究和广泛的实际的使用它们。不过回想学习它们的痛苦经历,实在是有点不堪回首。在此仅以此文和大家探讨一下学习它们的路径,以让后来人少走弯路。
我个人认为学习COM是一件不简单的事情,只有一步一个脚印踏踏实实的理解每个观点和理论才能真正懂得其精髓。那样才能在发生错误的时候,依靠自己的知识解决问题。我个人认为如果要学好COM/ATL没有一年的时间是肯定不行的,也许是我比较愚笨。个人认为需要COM/ATL的应该循序渐进,可以参考的书目有:
1、《C++ Primer》——学习C++语言。主要理解其中的继承、重载、多态、多重继承、虚函数、纯虚函数、C++模板,这些都是以后学习COM的基础。因为C++对COM的实现是完全支持的,只有在C++上才能实现COM所有功能,体现其无穷魅力。很多书在说明COM原理的时候也是使用C++给予说明的。《COM技术内幕》中为了说明COM的使用了C++的多重继承和纯虚函数,MFC使用了嵌套类实现COM,ATL使用多重继承实现COM。不要认为这些基础不重要,在很多的满口继承和重载的C++高手中,很多人都不知道什么叫纯虚函数?虚函数表是什么东西?它在内存中是怎么存储的?派生类中又如何?
2、《Windows程序设计》——了解Windows编程的本质,相关的API使用,Windows程序结构、消息传递机制。如果你想在Windows上开发你的COM程序了解一点本质的东西对你后来的开发一定是有帮助的。
3、《深入浅出MFC》——学习MFC的相关知识,了解MFC的封装知识,MFC的框架。个人认为通过本书学习作者对程序的剖析方法才至为重要,那样会帮你在ATL的各种Wizard产生的代码中不至于迷失方向。
4、《COM技术内幕》——一本很好的COM原理说明的书,其在COM学习中的重要性我就不再强调了。我个人就看过4遍,每一遍都有所收获。好书一定要反复读,也许是我的领悟能力比较差吧,也许是作者是老外,叙述事情的方式不容易让国人接受,^_^。
5、《COM原理和应用》——作者使用中国人接受和认识事物的方法和语言,如道家常般的让你再次认识COM的原理,书后半部分更多介绍了COM的一些高级应用,这些实际的应用更让读者从前面众多的COM的理论知识的说教中看到了一丝实际使用的曙光,让人跃跃欲试。
6、《COM本质论》——让你透过现象看本质,如果学习COM不读此书真是让我不敢相信你是做COM编程的。个人认为此书是学习COM的最好的一本书,太精彩了,尤其是前几章一定会让你眼前一亮。书中对套间的描述更让我迷茫很久的问题,得到了最好的解决。但是学习本书一定要有良好的C++基础和对外国人叙述事物的语言的良好领悟能力。
7、《深入解析ATL》——一本介绍ATL的本质的书。结合本书中的讲解和你从《深入浅出MFC》中学到的分析宏、程序剖析的方法一定会让你对COM和ATL有更深入的理解。
8、《IDL精髓》——一本让你能自如的操作MFC和ATL为你生成的一堆如天书般的IDL文件,添加、修改使用它们的工具书。
9、《COM编程精彩实例》——书中前几章的叙述还是不要看的为好,译者的专业基础实在太差。书中提供的例子倒是颇为精彩。更多的贴近实际的使用!
好了,基础的书我觉得就这些就够了,至于DCOM和COM+的学习那是后话了,需要更多的知识了。呵呵,还是那句话“尽信书不如无书”,COM的理论在发展,也许书中有些理论也会过时,所以如果你有疑问,那么就一定要动手实际测试一下,那样学到的东西才更为扎实。最后要说的就是学习COM/ATL一定要多动手,不要像我一样成为理论上的巨人,实际编程中的矮子,^_^。