面向组件基于面向对象思想,只不过面向组件更注重接口,更强调封装,是二进制代码层面,可以独立开发和测试,更像是一个子系统,在现在的企业级开发中应用更为广泛,组件有很多规范例如微软的COM规范。
在WINDOWS程序设计中,按钮也是一个组件,分类为GUI组件而已,组件强调接口,例如按钮的属性,按钮的方法等。
组件之间需要通信,那么就是接口的作用,如果这个系统不和外界通信那么可以定义内部接口,但是如果要和外部
通信必须要符合规范,在windows编程过程中,COM就是一个组件技术的标准。
组件技术特点,不局限于某一种编程语言,系统中有一些实现细节和代码隐藏的部分,抽象为组件
独立开发,独立测试,最后再整合成为一个完整的系统
组件的优点:
灵活,高内聚,低耦合,例如,我们改变系统中的一个组件之后,就可以得到另一个系统版本。
COM组件:
COM对象:
COM接口:
在WINDOWS平台上,COM组件可能是一个DLL文件,EXE程序,它包含多个COM对象,COM对象提供COM接口对外界进行服务
系统中,程序调用COM组件需要创建或者得到COM对象,然后调用其接口进行服务,
有的时候COM组件只有一个COM对象。
COM组件是面向对象规范的,所以需用面向对象的语言开发。
COM规范:
接口命名:以I开头例如IUnknow
由于COM是面向对象的,所以使用类的函数成员对外提供接口,我们可以增添接口即添加新的服务,而老的服务不变来升级组件。
COM规范中其他语言如果支持开发COM,则可以开发COM组件,但这个COM组件是基于二进制代码的,而不是基于源代码的,
怎么理解呢?面向对象语言的类,是基于源码的,我们可以在这个语言环境下重用这个类,达到可重用的目的,而对于COM组件来说,
他直接编译成二进制代码,被其他语言调用,例如用C++开发的COM组件,我们用ASP脚本调用,这就实现了跨语言开发。
现在的软件系统,越来越多是组件技术的应用,不仅是自己开发的组件,还有用别的厂家的组件来整合到自己的系统中去,
这是趋势,不同组件之间的通信和接口规范要统一,而COM能承担这个任务。
Microsoft 在组件方面的应用,Dirext提供了多媒体接口,ADO提供了数据库处理
ASP吧IIS和其他软件产品结合起来了,ASP页面文件分为服务器执行部分,用户执行部分,服务器方可以通过ADO访问数据库,也可以通过
ASP对象(也可以是COM组件)所提供的各种服务。
所以在服务器上提供动态事实的服务非常方便,只需在服务器开发一些ASP对象。
GUID 是一个128位全局标示符,用于表示COM对象中的唯一组件是CLSID,
他们结构相同
例如
54BF6567-1007-11D1-B0AA-445689085456
正如软件发展的越来越大,越来越复杂,重用思想越来越重要
最初的是函数重用,将一些相同的代码抽象出来,提供一个功能就是函数
例如windowsAPI函数,这些函数数量大,而且对于参数和返回值都需要规范,用户用起来很繁琐。
更为高级的复用就是组件,封装了属性和内部处理(可以调用更为复杂的函数),向外提供接口