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的“组件服务”管理工具中,并且用该工具来监控组件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。