关于COM的学习(怀旧贴)

这是一篇老贴了, 是最初我在CSDN上的回复, 最近无意中发现,整理在此。

回复人: dcren(风清扬) ( 一级(初级)) 信誉:100 2003-9-22 得分:20

COM应该说不是一种技术,而是一种思想。一种软件体系架构的思想。他代表了微软20多年的
技术精华和软件工程的经验,是最有利益价值体现的技术体系。从93年COM诞生,到现在,已
经为微软成就今天的霸业,做出了不可磨灭的贡献。

COM什么问题也解决不了,但是从软件的重用性和扩展性上来说,也就是软件工程的角度说,他
能解决任何问题,使你的开发维护升级成本最低。

C++--->OO-->C++对象模型--->COM
步骤: 1.学会使用COM  2. 学会编写COM 3.理解COM的初衷和本质

4.用COM的思想来指导你每天的开发行动。COM 就是一切!

你会发现,如果一个人号称编程序3年了,或者更长时间了,竟然没有编写或者初步理解COM,那么毫不客气的说,这个人根本算不上合格的Win32程序员。同时,你会慢慢发现,语言就是语言而已,什么C++,delphi,Java,C#,你可能用1个月就可以全部掌握。语言,表达思想而已,没有更深的东西。

学会用COM来思考一切,用COM来学习别的软件架构(EJB,CORBA)会触类旁通。

加油吧。。


回复人: dcren(风清扬) ( 一级(初级)) 信誉:100 2003-9-22 得分:20

我对阁下学习COM做一些建议,仅作参考,:)

前提条件:

1.首先,你应该基本理解面向对象的思想, 比如封装,继承,多态。关键,你能基本理解多态, 明白多态,虚函数带来的好处。

2.其次,你应该会使用一种或多种支持面向对象思想的语言,比如C++,Delphi,Java等等,掌握一种工具才能编东西嘛,不过不要拘泥于语法和类库。

如果,你满足了以上条件,那么就可以开始了,如果不满足,请自己学习。

Step 1:
  深入了解C++对象模型,对C++幕后的东西,有一个清晰的了解
比如虚函数机制等。此步骤是必须的,如果没有,请先学习。

推荐教材: 《Inside C++ Object Model》

Step 2:
  学习基本的COM规范,编写COM.不用编写太多东西,2到3个例子足矣。

推荐教材:《Inside COM》(网上很多,自己找)

Step 3:
  在实际开发过程中,多多使用COM,以体会COM的价值。

推荐教材: 无,实践是最好的教材。

step 4:
  学习COM的第一个应用:OLE2,用新的眼光看COM.

推荐教材:《Inside OLE2》
  虽然OLE已经基本上有些老,但是,它的思想绝对让你受用无限。可惜,这本书市场上买不到,93年的书,没有中文版,我这里有电子本,你要的话,发给你。

记住: 切末因为OLE太老就不想学, 技术或许会过时,但思想永远都不会过时!!

step 5: 从设计的角度理解COM,理解COM的设计初衷。
       
  推荐教材:《Essential COM》《Desing Patterns》

step 6: 逐渐锻炼自己高度抽象的能力。
    
  明白抽象带来的不是故作高深,而是
系统的灵活性,扩展性,重用性。越抽象,系统越简单,也越容易控制。

step 7: 编程语言?DB? J2EE? DotNet? EJB? CORBA? 随便看你的兴趣了。
        因为COM已经交给你了一种思考问题的方式。或者说从本质出发学习
        新知识,那么你永远都学的比别人多。

{
  其实最后你学到的不只是COM,而是处人处事的道理:
     思想驾驭实现;
     越抽象,位置越高;
     发现问题,找出最本质的解决之道。
}

如果你能刻苦一点,踏实一些,那么,3-5年时间基本可以上升到思想的层面。

以上仅供参考,祝你成功!

回复人: dcren(风清扬) ( 一级(初级)) 信誉:100 2003-9-22 得分:5

其实.Net的底层架构还是COM/COM+, COM现在已经成为Win32平台上的基础设施,
正如铁路之于中国,公路桥梁之于城市。

不过.Net带来了一种新的思想理念, 而且技术更为先进,生产力也就越高。

希望学习COM的时候,应该去其形,而取其神,领会要旨可矣。

开发商业应用宜从.Net 或者 J2EE上着手,COM技术本身的生产力已经不如两者了。

posted on 2004-05-24 13:31 China .Net Community 阅读(856) 评论(9)  编辑 收藏

评论

#1楼  回复 引用   

windows下编程的最大优点是我们可以随意使用网上琳琅满目的“类库”、“控件”、“类”,以及若干可视化编程工具“VC”、“Delphi”、"VB"等等,windows下编程最大的缺点也就在于很容易使人沉迷于若干“自绘菜单”、“自绘按钮”上(鄙人就曾如此)。

风情扬同学说得好,"会使用一种或多种支持面向对象思想的语言",“不要拘泥于语法和类库”,我很反感网上成天争论“VC”与“C++ Builder”哪个更好,争来争去,只是争论两家公司的编译器谁更好,丝毫涉及不到C++语言上去。个人以为:语言只是实现我们思想的工具,没必要成天沉迷于此,应该多学一点本质的东西。

2004-05-27 09:06 | 十一郎[未注册用户]

#2楼  回复 引用   

C++于C,不仅仅是语言上的差异,面对对象的思想已经蕴涵其中,很多人也在争论C++与C的优劣,个人以为,每一种语言都是某一个时代的产物,<B>语言只是解决问题的工具</B>.在最开始的年代,可能我们完成的工作不是很多,汇编语言足以应付,但到了后来,工作量巨大、繁琐,汇编语言的缺点也显露无遗:难调试、难优化...于是应运诞生了C语言,C语言在其最风光的年代里也可谓威风八面:运行速度快、语言结构好...,但到了后来,运行的速度已经不是个问题了,很多问题需要更好更简单的解决方式,于是面对对象语言大行其道。。。

扯远了,先回来...

从C++到COM,也就是从编程语言到编程思想的一个过程,学好了COM有什么用?学好了可以提高我们的编程层次,提供给我们分析问题、解决问题的手段。

需要记住的是,<B>COM不是一种编程语言,语言只是COM的实现方式</B>,COM不是windows下的可执行程序或者动态链接库,那只是COM的存在形式。。。COM什么也不是,是一种全新的编程思想,它无处不在,存在于整个windows当中。


2004-05-27 09:26 | 十一郎[未注册用户]

#3楼  回复 引用   

说的好啊。研究一下.net吧?
2004-05-27 09:35 | BruceHsie

#4楼  回复 引用   

本来昨天去徐家汇想顺便到昂立书店看看书的,
未遂...
想研究一下了,先看看有什么书?
2004-05-27 09:46 | 十一郎[未注册用户]

#5楼  回复 引用   

兄弟,我的msdn没有inside ole2这本书,在网上搜了半天也没找着,能不能发一份给我啊?多谢了!~~~~~我的mail是:kenwhale@21cn.com
2005-05-09 15:46 | kenwhale

#6楼  回复 引用   

inside ole2我也想要这本书啊。也给我发一份啊。谢谢!
MSN:wei801004@hotmail.com
QQ:106341101
EMail:Isold_Wang@yahoo.com.cn
2005-12-20 18:14 | Isold_Wang[未注册用户]

#7楼  回复 引用   

这些书籍,我都有,而且一直很热衷com,
只不过,我学习顺序错了,学的很困难
2006-06-08 13:44 | 素灵[未注册用户]

#8楼  回复 引用   

我也想要Inside OLE2这本书,找了半天都没找到,麻烦也发给我一份,谢谢 !
vcmfc423@163.com
2006-07-28 10:08 | JoeChou[未注册用户]

#9楼  回复 引用   

我正在学习COM,努力而不得法,看了搂主大哥的发言似乎有点方向,能不能把<<Inside COM>> <<Inside OLE>>通过邮件发给我,我的邮箱是wangy@cosw.com,先谢谢大哥
2006-08-01 13:32 | wangyang[未注册用户]

导航

公告

昵称:China .Net Community
园龄:7年8个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

相册

最新评论