首页 理论教育 VisualC++高级编程实例:简单的COM+组件

VisualC++高级编程实例:简单的COM+组件

时间:2023-11-16 理论教育 版权反馈
【摘要】:图10-4新建COM+组件项目,选中代理、存根和MTS支持2. 添加MTS对象当在ATL COM AppWizard中选中MTS的支持后,向导就将与MTS和COM+相关的头文件和库文件添加到项目的框架中。一个简单的COM+组件已经完成了。如果读者对上面创建组件过程中有不熟悉的地方,可以参见8.4.2小节的ATL COM组件开发过程。

VisualC++高级编程实例:简单的COM+组件

COM+要求COM+组件对象必须以动态链接库(DLL)的形式提供,这种DLL形式的组件对象可以运行在客户程序的进程地址空间之内。如果客户程序希望对象运行在自己的地址空间之外,就要使用COM+为组件DLL提供的宿主进程,这样,DLL形式的进程内COM+组件驻留在宿主进程,作为客户的进程外组件而提供服务。

这里创建一个简单的COM+组件(BANK),然后将该组件在Windows 2000的“组件服务”中安装、运行并进行监控。另外,还要实现一个简单的客户程序(CLIENT)。

1. 创建COM+应用程序框架

使用ATL COM AppWizard创建名字为BANK的组件项目,选择服务器类型为DLL,并选择“Allow merging of proxy/stub code”和“Support MTS”选项,如图10-4所示。

图10-4 新建COM+组件项目,选中代理、存根和MTS支持

2. 添加MTS对象

当在ATL COM AppWizard中选中MTS的支持后,向导就将与MTS和COM+相关的头文件和库文件添加到项目的框架中。以这些文件作为基础,就可以比较容易地实现COM+组件对象了。

因为MTS是COM+的前身,所以要在这里添加一个MTS组件,具体方法是:选择Insert->New ATL Object菜单命令,在ATL Object Wizard对话框中选择对象(Objects)类型为“MS Transaction Server Component”,如图10-5所示。并在下一步(Next)的对话框中命名对象的短标识为“ATM”,如图10-6所示,其余的设置缺省,点击“确定”。

创建的BANK组件是一个COM+组件,它将要简单地实现银行的功能:管理几个银行客户的信息。这些信息包括姓名、账号、密码和账户余额。而具体承担管理任务的组件对象就是上面刚刚添加的ATM对象,把它命名为“ATM”的原因是因为它在本例程中模拟银行ATM终端的业务功能。为了不给读者增加阅读代码的负担,我们在ATM对象中只实现一个查询账户信息的功能。

图10-5 为项目添加MTS组件对象

(www.xing528.com)

图10-6 为对象命名为ATM

3. 为ATM对象添加查询方法(Query)

在ClassView中的IATM接口上单击鼠标右键,使用弹出式菜单的Add Method命令为接口添加Query方法。它的名称和参数如图10-7所示。

图10-7 为ATM对象添加查询(Query)方法

Query方法的五个参数分别为num、psw、pmoney、pname和pflag。前两个参数为输入参数,分别表示客户账号和密码,后三个参数都是指针类型(输出参数),它们分别用于返回账户余额、客户姓名和Query方法执行后的状态。正常来讲,Query方法要查询的数据应该位于数据库中,为了简单起见,这里先使用数组的形式来代替数据库。程序清单10-1是ATM.cpp文件中Query函数的实现代码。

程序清单10-1 Query函数的实现

4. 构建(Build)并注册组件DLL

选择Build命令进行编译链接,生成BANK.DLL,并且自动完成了组件的注册。

一个简单的COM+组件已经完成了。如果读者对上面创建组件过程中有不熟悉的地方,可以参见8.4.2小节的ATL COM组件开发过程。接下来,我们要将这个COM+组件安装在Windows 2000的“组件服务”管理工具中,并且用该工具来监控组件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈