游戏开发论坛

 找回密码
 立即注册
搜索
查看: 16703|回复: 40

com 到底有什么优势?

[复制链接]

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-9-5 21:53:00 | 显示全部楼层 |阅读模式
dx 包括windows的一些控件都用 com 规范来封装,到底 com 模型的优势是什么呢?

如果说组件的话,我们用直接用 dll 不是也能实现组件化吗?比如,我可以从 dll 中引出 c 函数,其他程序加载这个 dll ,而升级程序的时候只更新这个 dll 就可以了。这样不是也实现了程序的组件化吗?为什么一定要用 com 规范?

初学者,请大家多多指教。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-9-5 22:01:00 | 显示全部楼层

Re:com 到底有什么优势?

没什么优势,所以连微软自己也放弃了。

8

主题

239

帖子

239

积分

中级会员

Rank: 3Rank: 3

积分
239
发表于 2005-9-5 22:40:00 | 显示全部楼层

Re:com 到底有什么优势?

com我原来老做空件,现在也不用了,感觉完蛋了,思想还不错,借鉴了。
不如LoadLibrary来的舒服

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-5 23:55:00 | 显示全部楼层

Re:com 到底有什么优势?

想知道com 到有什么优势去看<<COM技术内幕>>,
其实在写复杂的大型软件时还是很有用的

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2005-9-6 09:45:00 | 显示全部楼层

Re:com 到底有什么优势?

楼上的老大,能不能大概说说优势是什么?

我没有那本书。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-9-6 10:26:00 | 显示全部楼层

Re:com 到底有什么优势?

如果你不了解为什么会有COM,那么你就不会明白COM有什么优点和缺点

我们来看看COM的发家史,首先COM不是微软发明的

早期大家都用基于过程的语言,为了共用同一个功能,就把这段代码写成函数,为了技术保密,就做成Lib,这样很多人就能直接使用某一功能而不用重写代码。但这只是编译阶段的公用。

随着软件危机的出现,面向对象的语言逐渐显现出它的优势,程序员之间如何协作,如何共用代码变得更为重要,出现了类,继承,封装和多态等。另一方面,模版库的争论也激烈起来,但最终还是被各C++编译器支持。这是代码级别的公用。

在非源代码级,微软在他的操作系统中实现了动态连接库DLL,这样,就让运行级别的公用变得可能。只要符合参数约定,我们不需要在编译的时候知道DLL是干什么,只要在运行时有这个模块就行。

随着面向对象和可视化编程的发展,微软在他的VB中首先使用了一种模块对象的概念VBX,同时,其他的研究人员在处理进程之间如何实现数据共享和功能调用上采用了一种叫做链接与嵌入的技术OLE,它实现了较为复杂的软件功能耦合,使得大家不必关心参数细节,不必关心开发的环境,后来在此基础上,微软改进了OLE发展到2.0规范,实现了ActiveX。

随着大量的非可视化的服务型对象出现,微软在几乎同时提出了COM规范模型,并将ActiveX统一到这个规范中。按照微软的概念他首先简化了参数细节适应了面向对象语言的需求及大规模软件集成的需要,实现了不同编程语言的互访,并提供了二进制代码共享。这些都是DLL无法比拟的。

网络的蓬勃发展和分布式操作系统的兴起,微软在他的Window 2000开发过程中提出了Windows DNA的架构,实际上要比这个早的多,大概是96年前(那时候我才刚刚见过电脑),微软在进程内二进制代码共享的同时就考虑到进程外的二进制代码共享问题,提出了DCOM,来实现不同的进程同时访问不在同一地址空间的代码。

有了多个访问一个,必然会出现服务排队的问题,于是有了负载均衡器机制出现这就是MTS,但这个是静态均衡,DNA出来的时候,就有了OOM+的流行,动态负载均衡,这时候的地址空间分布就有点离谱了,有独立进程也有非独立进程,反正微软都不用管他了,只要符合COM规范就好。

Internet和网络编程的普及,我们当前的商务模式和开发模式正产生了一种新的革命,我们不仅在二进制级别不知道对方的模块是如何运行的,甚至都不知道对方公司用什么操作系统,运行什么平台,但我们可能还要和对方进行软件合作。SOAP,XML刚好满足了这个需求,Web Services避开了COM+的平台性和防火墙缺陷,于是.NET规范逐渐兴起,微软帝国更加强大(不得不崇拜)。

再来说说DirectX,DirectX是基于进程内的COM级的,正好能够满足性能需求,又能满足面向对象的需要,还是二进制共享,升级又避免了DLL版本缺陷,还能跨语言环境(虽说都是微软的环境),多好

13

主题

153

帖子

153

积分

注册会员

Rank: 2

积分
153
QQ
发表于 2005-9-6 10:35:00 | 显示全部楼层

Re:com 到底有什么优势?

除了核心部分,windows基本就是都用com来搭的了...

有了com,你的软件就可以像搭积木一样搭起来,组件的接口很灵活,可以更新软件的某一个组件而不影响整个软件的运转,比如dx虽然更新了,但是以前旧的游戏依然可以玩。

而且基于Com的延伸有很多,什么com+,dcom,automation...

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
 楼主| 发表于 2005-9-6 12:37:00 | 显示全部楼层

Re:com 到底有什么优势?

感谢几位的回答!

还是一头雾水,呵呵,没办法,慢慢学吧,听说很多人学com学了一年,我才看了这么久,肯定不行,自己努力吧。

2

主题

35

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-9-6 20:52:00 | 显示全部楼层

Re:com 到底有什么优势?

com 本质论
解释得很清楚

1

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2005-9-8 09:29:00 | 显示全部楼层

Re:com 到底有什么优势?

和JAVA,.NET比起来, COM完全没有任何优势了。
COM花了很多功夫来做模块的移植,可是到了JAVA和.NET上面,还不如简单的一个class文件。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 19:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表