请用现实生活中的实例来解释:
1、什么是COM(组件对象模型)?(比如说COM像什么。。)
2、什么是接口?(接口像什么。。)
3、接口在COM中所起到的作用?(像某某可以做什么。。)

解决方案 »

  1.   

    Components Object Model (COM) 是软件组件互相通讯的一种方式。它是一种二进制和网络标准,允许任意两个组件互相通讯,而不管它们是在什么计算机上运行(只要计算机是相连的),不管各计算机运行的是什么*作系统(只要该*作系统支持 COM),也不管该组件是用什么语言编写的。COM 还提供了位置透明性:当您编写组件时,其他组件是进程内 DLL、本地 EXE 还是位于其他计算机上的组件,对您而言都无所谓。(当然会有性能区别,但是,即使改变了其他组件的位置,您也不必重新编写什么,这是关键所在。)
    COM 是基于对象的——但是这种对象概念与您熟悉的 C++ 或 Visual Basic 中的对象不太一样。(顺便说一下,“对象”和“组件”几乎是同一个东西。GUI 医生在谈论应用程序的结构时愿意说成“组件”,而在谈论实现时愿意说成是“对象”)首先,COM 对象被很好地封装起来。您无法访问对象的内部实现细节;您无法知道对象使用了什么数据结构。实际上,对象的封装是如此的严密,以致于 COM 对象通常被描绘为盒子。图 1 描绘了一个完全封装的对象。请注意,实现细节是如何向您隐藏的。Windows 2000中的Component Services是企业级应用中的非常重要的一部分,它为那些基于web的、分布式的应用程序提供了几乎所有需要的功能。尽管COM+服务起初只是被设计用来为COM组件提供服务的,但是如果.NET组件也能够使用COM+服务的话,那将会是一件很好的事。因为COM+能够为组件提供很多服务如对象缓冲,资源共享,给予角色的安全机制和分布式事务处理等。
    概括地说,COM具有如下一些优越性:
    编程技术难度和工作量降低,开发周期变短,开发成本降低。一般编程人员只须根据应用功能要求选用合适的组件,而不必事无巨细都自己动手去完成。组件模块将编程的技术难度和工作量在人员个体和时间上进行了分摊。
    可以实现分层次的编程,从而促进了软件的专业化生产。专业人员可以开发出具有很强专业性的软件组件,这样既保证了普通的编程应用人员能够完成所需要的应用开发,又不至于降低使用的性能。应用人员不便实现的组件模块可以让专业人员定做。
    促进组件市场的丰富,最大限度地满足了各种应用需求,定制特定的软件模块变得相当容易。
    软件的复用率提高,使软件的使用效率得到提高并延长了使用寿命。组件编程体系使大量的编程问题局部化了,使软件的更新和维护变得快速和容易,软件的成本大大降低。