软件组件及属性

来源:互联网 发布:软件盘丝洞是干嘛的 编辑:程序博客网 时间:2024/05/24 15:36

    COM负责设计,构建和使用软件组件(software component)。它是当前所有Microsoft32位操作系统都提供的一个系统级别的技术。通过使用COM变成模型开发软件,程序员将获得大量内置的功能。特别值得一提的是,COM赋予了软件模块下列一些属性:同语言的无关性(或语言环境的独立性,language independence)、版本升级的鲁棒性(即稳健性, robust versioning)、位置的透明性(location transparency)和面向对象的特性(object orientation)。

    基于COM的软件模块是和语言无关的(language independent)。你可以使用C++编写组件,并在VB中使用该组件;你也可以使用VB开发一个组件,而在Java、C++或者Visual FoxPro中使用它。这种混合的使用没有任何不妥之处。

    COM的一个重要的特性在于它为你提供了一种编写面向对象的程序的新技术,使得你在变成中可以选用任何一种语言,而用户可以在另外语言环境中调用该组件的功能。COM支持一种所谓的二进制设计标准:你可以把一个组件纳入到一个DLL或EXE(二进制文件)文件里,组件的功能可以被Visual Basic、Java、C++甚至COBOL语言调用。当然实现这一个功能的语言必须支持COM,而在Windows环境中几乎所有的语言都支持COM。

    COM的另外一个重要特征是它可以支持组件版本的升级(component versioning)。在传递软件模块时,尤其是在多提供商应用程序的环境中共享资源时,一个困难指出是在已发布的软件模块里对功能进行升级。COM通过使用一种具有鲁棒性的版本升级技术来解决这一问题,该技术是基于COM最基本的实体---组件接口(componeng interface)实现的。

    COM通过它对同意组件的过接口支持实现版本设计的鲁棒性。换句话说,组件的功能可以分割位细小的、独立的区域,这些区域的每一个都具有一个特定的COM接口。由于一个组件可以适应同一接口的微小变化,所以COM也就因此可以提供版本支持功能。也就是说,可以允许旧的应用程序在不进行改动的情况下运行,同时新的应用程序可以利用组件的新添特性。

    COM的另外一个重要特性是位置的透明性(location transparency)。该特性意味着组件的用户----客户机并不需要明确了解组件所处的位置。一个客户机应用程序使用相同的COM服务来创建组件的实例并使用它,而无须考虑组件所在的位置。

    组件可能直接位于客户机处理工作区(一个DLL文件里),也可能位于同一台计算机上的另外一个处理程序里(一个可执行文件),还可能位于远端计算机(一个分布式的对象)。COM和分布式COM(DCOM)提供这种位置上的透明性。

    不管组件到底在什么位置上,客户机同基于COM的组件都将以相同的方式进行交互,而客户机接口不会改变。位置的透明性允许程序开发员建立具有可升级性、分布式、多层次的应用程序,而无须更改客户机应用程序所使用的变成模型。

    COM允许软件模块以面向对象的方式传递其功能。大量旧版本软件的交互操作技术(如DLL专家系统和DDE)都不提供典型的面向对象的特性,而对于C++程序员而言,面向对象的特征是最为常用的。COM提供三种基本的面向对象的特征,他们分别是封装(encapsulation)、继承(inheritance)和多态(polymorphism),并且COM是以一种与语言无关的方式对这三种特征提供了支持。