[导读:] 本文将介绍如何通过COM接口传送C++对象,要做到这一点,客户和服务器部分都要用Visual C++写,你还要了解建立COM客户和服务器的要点,以及对COM调度的基本知识。
序言
我已经不大记得如何使用C和Pascal这些面向过程的语言编程了,面向对象编程的功能是如此的强大,通过类和对象,就可以轻松地编程和解决设计上遇到的问题。不过有些地方仍令我不得不放弃使用对象,其中之一是通过接口调用COM的方法。COM要求客户和服务器之间有高度的独立性。在调用方法的时候,接口只提供较有限的数据类型。如果你正在使用基于IDispatch的接口,可供选择的数据类型就更加有限了。
使用有限的数据也可以,COM没有一个显而易见的方式来传送对象,因此也不能传送自定义的数据结构。幸运的是,这个问题是可以解决的,而且并不是太难。你只需要知道COM和MFC的一些技巧。
在继续深入之前,我们先来看一下COM的限制。这些限制并不是COM开发者的疏忽。他们限制通过接口传送的数据类型,是有一些颇恰当的理由的,列举如下:
1、.象C++对象这些特别的类型只对C++的程序是有用的。Visual Basic或者Java程序都用不上C++对象。
2、.拷贝如对象这样复杂的结构可做到很复杂,标准的装配代码只能处理其中一些数据类型。
COM的设计是为了与其它的操作系统兼容的(虽然仅有一些其它的操作系统支持COM)。因此必须使用标准的数据类型。
通过COM接口来传送普通的指针在大多数的情况下都不行,接口是为了限制客户和服务器端的接合。传送对象则需要更多的接合。
受以上所限,传送对象仅在以下的条件下有意义:
1、客户和服务器端都使用Visual C++编写;
2、客户和服务器的结合很紧密。它们必须可以共享对象的定义(例如头文件)。
3、传送对象可简化应用的设计;
4、你的应用需要在一个分布的环境下运行。
由于我只是使用C++ MFC环境,因此这些都没有问题。我还需要使用一个分布的系统,该系统需要在局域网间运行。传送对象可令客户和服务器的设计达到无缝结合。
|

一步一步学习COM

客户机/服务器应用开发

|