关于COM的一些浅显的认识(读书笔记)

来源:互联网 发布:读取usb接口状态数据 编辑:程序博客网 时间:2024/05/03 23:25

    (1)COM的中心思想顶了软件中可重用的部分,每一部分组件都有其特定的接口和所能提供的服务。

    (2)使用链接库是软件重用的方法之一,他们可以以二进制的形式开发,使用某一种语言编写的链接库可以被另外一种语言的应用程序调用。但是链接库的最大特点是无法灵活地增删其中的函数。使用对象也是一种软件重用的方法。通过封装数据与函数,对象能够将需要重用的功能包装起来,通过继承,对象也可以重用另外一个对象的接口定义和实现代码。然而由于不存在连接二进制对象的标准,这就使得难以创建可以发布的二进制对象库,其次要跨语言平台重用对象是很困难的,第三某个对象要改变时我们将不得不重新链接甚至重新编译整个程序,而理想的情况应该是只生成该对象的新版本应用程序就能够自动使用这个版本。

    (3)微软为COM定义了一种访问软件服务的通用函数,它能够跨越链接库、应用程序、系统软件甚至网络。COM一方面提供了一种有效的途径将软件分块,每块软件通过各自的服务,开发者能够使用面向对象的方法去设计和开发程序,简化复杂系统,另外一方面又提供了访问软件服务的一致性,不管要访问的服务存在于链接库、另外一个进程或系统中,均可将它们当成COM对象,使用同一种方法去访问,而在以外非得使用不同的方法去访问不同类型的软件服务。此外,COM是独立与编程语言的,它定义了一个对象必须支持的二进制借口,我们可以使用不同的编程语言来编写支持该接口的COM对象和调用该对象的客户。再者,COM的版本功能所得在新功能的新版本软件替换旧版本时,不必更改已有的可户程序,因为COM对象具有支持多个接口的能力,新增功能可用添加的新借口的形式来实现,因而可不修改原有的借口,这样已有的客户程序就不会受影响了。

    (4)COM是一种定义对象服务器如何和客户进行交互协议。这里的对象服务器是实现COM类的模块,而客户则使用COM对象的模块。COM对象与一般对象不同,它具有多个接口,通过每个接口可以访问一组成员函数。成员函数相当于方法,每个对象拥有自己的数据。每个借口仅包含起所属成员函数的调用说明(signature)及引用它的指针。成员函数的实现不是对象的一部分,一般有两种方法实现满意上用动态链接库DLL实现,二是作为一个可执行模块EXE实现。不管哪一种实现,成员函数都可以动态调用,直接执行,不需要编译链接。甚至调用者所用的程序设计语言与实现成员函数所有的程序设计语言可以不同。用DLL实现时,在调用成员函数前必须将DLL加载到本进程的地址空间,不能跨进程进行访问,而EXE模块不受这个限制,可以跨进程访问。

(5)COM特性

       1语言无关性

       2 进程透明特性

       COM所提供的服务组件对象在实现时有两种进程模型:进程内对象和进程外对象。如果是进程内对象,则它在客户进程空间中运行;如果是进程外对象,则它在运行在同一机器上的另外一个进程空间或是在远程机器的进程空间中。

       3 可重用性

原创粉丝点击