试释 VC 如何调用com

来源:互联网 发布:shell中数组的使用 编辑:程序博客网 时间:2024/05/20 03:44

microsoft com 技术可以说是源远流长,从最开始的 DDE ,OLE , activex 一路走来,发展到 COM ,COM+,  到现今的.NET 封装技术。

我初次接触com 大概是2001年,当时做一个项目需要用到 active directory 技术,当时刚从 DOS 开发转过来,vc都用的不熟,更甭提什么COM 了,当时跑到图书市场抱回来5本讲active directory技术的书,微软出的,看的一头雾水,到处都是COM 技术,不过还好磕磕绊绊的把项目弄完了。

自此对COM 产生了很大的兴趣,开始看不同的com书籍  《COM原理与应用 》,《com技术内幕》,《ATL技术内幕》,《com本质论》等等,也逐渐的对com 技术有了一些理解。

随后随着项目做的越来越多,对于COM 的使用也越来越多了,我曾经用COM 实现的一些内容如下:

1.  进程间,机器间的通讯(2002)

    当时window 技术内幕上总结,进程间通讯大概有这几种方式 管道,文件共享,邮槽,socket 等,当时那个项目正好一个合作伙伴是用com实现的,确切的来说是用的COM+ , 那时windows nt 还在大量的使用,系统上没有 COM+组件管理器,而是使用的另外一个模型叫MTS ,应该是COM+组件管理器的前身。在这个项目上我是用了COM+的技术实现了消息的传递,如果是在同一台机器上则只要将COM+组件部署到MTS 上就可以了,如果是多机器间的通讯则需要把MTS 上部署的组件导出成msi安装包到其他机器上安装使用就好了,十分方便,开发实施效率也很高。

2. IE BHO (2003)

   这个项目的起因是由于我们有一套软件是用C/S 实现的,客户端和服务器端的通讯机制作的很成熟了,那个年代刚好是J2EE 兴起的年代,客户要求系统要B/S 实现,从时间上来讲承载普通业务的部分用B/S 实现还有相对比较多的人员要做,但是核心的那个业务从运行效率上来讲移植到J2EE上还是不合适的,所以在此项目上使用了BHO 技术,核心业务的操作使用的是BHO 组件,进行上下行数据传递,客户端通知等内容,使用IE WEB 界面进行普通的业务数据展现。

3. IE 嵌入 activex

   这个相对比较简单,根本原因是客户的终端量很大,不想部署BHO 减轻维护工作量,所以就将原来BHO 实现的内容搬到ACTIVEX 中实现,控件可以和WEB 通过 JS 进行数据交互,十分方便。

4. VC 调用vb写的COM 使用事件模式(2004)

    这个程序的起因是 有一个合作伙伴提供了VB 组件的接口,但是此接口不是太标准(或者是vcIDE 的限制),不能通过Import lib ,或者add activex to project 的方式实现,郁闷了3天,项目deadline临近,逼得我 手工生成C++ 接口文件调用com实现事件,现在想想也还算简单,有时间的话我整理一下这块内容

5. web页 不同域名间的数据传递(2006)

   当时我们有个一个项目 需要在自己的WEB 页中嵌入其他系统的WEB 页,两个页面需要比较频繁的交互数据,我们WEB同事查了一些资料好像是在不同域名间的JS 不能相互调用,所以临时写了一个小组件 在两个web页之间传递数据,开发完后用到项目上,客户还是很满意的。这个项目记忆尤甚,当时卡在 JS 和组件间互相传递数组的问题上,搞了一周才搞定,其中还借用了 陆其名 写的 《脚本驱动的应用软件开发方法与实践》鸣谢!!!

6. 使用VC 调用 微软 脚本引擎

   实现这个软件的主要目的是 客户内部有比较复杂的业务逻辑,需要经常变化,自己写业务规则又比较麻烦,所以取巧写了一个调用JS 引擎的东西,架构搭在那里,JS 是标准的,以后业务逻辑有了变化自己的开发人员写还是客户运维人员写都比较方便

7. VC6 调用 .net 程序集

   这个是最近才搞的一个项目,合作伙伴系统公开的是 WEB service 接口,其中对象关系非常复杂,使用soap 十分复杂,使用VS2005 非托管方式想用 ATL 实现发现sproxy.exe 解析不了合作伙伴的 WSDL ,但是C#托管系统可以 ,所以我们采用了 com interop 技术使用c#把web service 接口封装,向上公布 COM 接口,这样 我们大段的VC6 程序就不用做任何改动了。

 

做完 VC6 调用 .net 的事情,越发发现应该把各种调用COM 的方式总结一下,自己以后使用的时候也方便些,同时也可以和CSDN 上的朋友们共享,共同进步,当然在实现方式上肯定有更好的方式,也希望也csdn的朋友们讨论。

    

原创粉丝点击