COM技术12软件工程(服务外包)1班奚忆楠Page2目录一、定义二、优点三、历史四、发展五、国内现状六、概念七、创建COM对象八、软件发展面临的问题和趋势Page31、定义COM(ComponentObjectModel,组件对象模型),是由微软推出的一套接口规范,通过设定不同组件之间需要遵守的标准与协议,主要用来跨语言、跨进程之间的模块通信。所谓COM是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。Page4简单地说,COM是一种跨应用和语言共享二进制代码的方法。与C++不同,它提倡源代码重用。ATL便是一个很好的例证。源码级重用虽然好,但只能用于C++。它还带来了名字冲突的可能性,更不用说不断拷贝重用代码而导致工程膨胀和臃肿。Page52、优点首先,用户一般希望能够定制所用的应用程序,而组件技术从本质上讲就是可被定制的,因而用户可以用更能满足他们需要的某个组件来替换原来的那个。其次,由于组件是相对应用程序独立的部件,我们可以在不同的程序中使用同一个组件而不会产生任何问题,软件的可重用性将大大的得到增强。第三,随着网络带宽及其重要性的提高,分布式网络应用程序毫无疑问的成为软件市场上越来越重要的买点。组件架构可以使得开发这类应用程序的过程得以简化。Page63、历史OLE(ObjectLinking&Embedding)是1991年首次出现的(是WINDOWS3.1自带的)。OLE最初的含义是对象链接和嵌入,当时用DDE(动态数据交换)作为底层通讯协议。1993,COM首次出现。微软推出OLE2.0,开始用COM代替DDE作为底层通讯协议。这也是COM第一个重要的用途。1996年,大多数开发人员开始编写32位的WIN95应用程序。他们发现,OLE使用COM的方式是一种非常好的设计软件的方法。开发人员开始使用类似的方法编写自己的对象和界面。另外,操作系统也开始要求使用COM技术编程,如编写WIN95用户界面。这些即不是OLE,也不是AUTOMATION,那么他到底是什么呢?这个属于大多数人倾向于使用COM。Page74、发展1996年,微软推出NT4.0,DCOM首次出现,作为NT的一部分。它实现了将COM在分布式系统中的应用。1997年开始流行ATL。COM作为一种技术规范,最早是由C语言来实现的,但是实现起来比较复杂。出现VC以后,又对COM进行了预制和封装,大大简化COM应用的开发。这就是ATL(ActiveTemplateLibrary)。Page85、国内现状在对象技术和组件技术方面,国内落后问题:——好的技术没能及时引进了——缺乏好的教材、技术杂志、技术书籍——缺乏良好的教育环境的工业环境Page96、概念1)COM接口:接口只不过是一组函数。这些函数被称为方法。接口名字以大写的I开头,例如C++中的IShellLink,接口被设计成一个抽象基类,其中只有纯粹的虚拟函数。接口可以从其它接口继承,这里所说的继承的原理就好像C++中的单继承。接口是不允许多继承的。2)coclass:简称组件对象类——componentobjectclass,被包含在DLL或EXE中,并且包含着一个或者多个接口的代码。组件对象类(coclasss)实现这些接口。COM对象在内存中表现为组件对象类(coclasss)的一个实例。Page103)组件:a.进程内组件:Inprocserver-ExportEntrysb.进程外组件:OutofprocserverPage11c.远程组件:remoteserverPage127、创建COM对象为了创建COM对象并从这个对象获得接口,必须调用COM库的API函数,CoCreateInstance()。其原型如下:HRESULTCoCreateInstance(REFCLSIDrclsid,LPUNKNOWNpUnkOuter,DWORDdwClsContext,REFIIDriid,LPVOID*ppv);Page138、软件发展面临的问题和趋势问题:软件的复杂度增加软件的升级和更新分布式软件的发布的配置依赖于全才开发人员软件的可扩展性趋势:组件软件、软件组件软件基础设施的重要性软件的可重用性要求API的多样化软件方案(solution),consulting的市场