Eur*_*lli 36
如果你认真学习COM,Don Box的"Essential COM"肯定是绝对的"必读".COM可能令人困惑,在我看来,Don Box是为数不多的实际"得到它"的人之一.
"Essential COM"中的示例代码在C++中.你不会在C中找到许多支持COM的书.你可以用C编写COM,但这将是非常非常痛苦的.COM针对C++开发进行了优化.
这本书不完美也不"完整".本书略读了一些(授予的,有点深奥的)领域.例如,这本书就像"绰号"一样有1 1/2页(我从来没有见过对我满意的僧侣的待遇).我认为这本书是基础书.
其次,在现实生活中,您可能希望使用ATL等支持库,而不是直接编写所有COM粘合剂.即使在基本设置中,有太多方法可以在COM中犯下微妙的错误.ATL将为您提供良好的模式并为您实施无聊的代码.在学习中,最好使用普通的C++.
有很多关于ATL的书籍,其中有几本很好.我知道自从VC++ 6的旧时代以来ATL已经发生了很大的变化,但我没有第一手知识:遗憾的是,我使用的大部分COM代码都在VC6中永远锁定了C++的味道.
确保您获得的任何书都是针对您正在使用的Visual Studio和/或ATL版本编写的.
COM书籍的一些背景:
请注意,有很多书籍误解了COM,或者专注于错误的事情.在这方面,旧书更糟糕.最初几本书中的一些书对COM的处理只不过是使OLE工作所需的管道细节("对象链接和嵌入",这就是允许您将电子表格范围拖放到Word文档中的内容).因此,很多材料都非常令人困惑.人们意识到OLE不是那么重要而且COM真的是那么花了一段时间.
当Don Box发布"Essential COM"时,COM基础上的裂缝开始变得明显.COM没有任何可怕的缺陷,但是开发社区的需求已经发展并且超出了COM可以做的事情而没有进行认真的改造.
.NET的诞生源于解决COM中的局限性,特别是在"类型信息"领域.就在"有效COM"发布几年后,社区的注意力转移到了.NET.因此,良好的COM培训材料现在可能会永远受限.
因此,COM没有被破坏,它对于它所使用的东西非常有效(这就是Explorer仍然使用它的原因).对于今天需要解决的许多问题,它不再是最佳解决方案.
综上所述:
我推荐基本的"Essential COM".然后,可以获得许多优秀的ATL书籍(没有强烈的偏好),然后使用其他资源,如MSDN或 - 当然 - Stack Overflow,以涵盖您特别感兴趣的领域.
如果您宁愿避免依赖死树种类的资源,请继续从网上学习ATL.但是有些书值得用老式的方式阅读 - 而"Essential COM"就是其中之一.
祝好运.
我编制了一份书籍清单,应按此顺序阅读:
请注意,COM有点旧技术,但对于本机开发人员来说仍然可行.