Matlab与COM应用(一)——COM技术概述

通用对象模块COM技术是一种帮助软件开发人员将那些不同软件供应商的应用程序集成到完整的应用程序解决方案的软件开发技术。说白了就是软件的组件化。

例如,使用COM技术,开发人员可以选择一个软件供应商的数据库接口组件,而选用另外一个软件供应商提供的商业图形组件,开发人员只要将这些组建集成起来,应用到另外一个软件供应商提供的数学分析环境中完成自己的开发,就能够完成复杂的应用程序开发。

COM技术有如下优点:

1.将庞大的应用程序划分成若干的组件
2.每个组件相互独立,协同工作,通过接口完成任务
3.独立开发、编译、测试
4.便于升级和开发新的应用程序,只要升级相关组件并重新组合即可

那么,在应用程序开发的过程中,最关键的就是组件之间的接口,在windows平台上,COM就是被广大程序员所推崇的组件标准之一

在windows平台上,一个COM组件可以是一个动态链接看DLL,也有可能是一个可执行程序EXE。基于COM标准,可以开发不同的COM对象,而对象以接口的形式提供服务。

COM组件、对象和接口之间的关系如下:

<ignore_js_op>com.jpg 

COM对象是组件对象类的实例,COM要求对象具有完全的封装特性,避免对象的数据或方法被直接使用。
COM接口是提供访问对象的方法、属性和手段,COM接口通常聚合了一组相关的方法。

一个组件可以由多个COM对象,而一个对象可以包含多个接口,每一个接口都有一个12位的全局唯一标识符(GUID),客户通过GUID就能获取接口的指针,通过接口的指针就可以调用相应的成员函数

一般地,COM对象与客户之间是遵循客户端/服务器工作模式的,主要的优势就是体现在稳定性好,尤其在进行进程间通讯的时候,稳定性好就以为着可靠性高。

通常情况下,在进行应用程序开发过程中,极少直接使用COM API和COM接口,因为这些技术相对而言比较复杂而且不那么容易理解和实现,对普通用户来说要求比较高。故通常我们使用一些实用的技术:

(1)自动化服务:一种以windows为基础的ActiveX协议,允许一个应用程序控制另一个应用程序,它们采用统一的接口(IDispatch)。使用自动化协议,像一些非编译语言,例如VBscript,可以直接同应用程序交互。比如Matlab控制Excel编程。

(2)ActiveX控件:具有图形用户界面的自动化组件,可以响应用户的动作,例如windows中常见的对话框,相当于Matlab的GUI中的控件,在有events(事件)发生时,激发回调callback。

既然上面说了直接的接口技术我们很少用到,再说我们又不是专业的程序开发技术人员,故在后面讲到的所有内容中,我们不会涉及到接口技术,只围绕【自动化服务】和【ActiveX控件】进行分析

 

转自 http://www.matlabsky.com/forum.php?mod=viewthread&tid=1162

 

 

posted @ 2013-01-14 15:30  renly2013  阅读(471)  评论(0编辑  收藏  举报