使用VC++6.0制作ASP服务器控件简介
富 亮
--------------------------------------------------------------------------------
用ASP写网页的程序员,一定对VBSript语句“Set Conn=Server.Object('ADODB.Connection’)”非常熟悉。该语句是利用ASP的Server对象创建了一个数据库控件,它提供了一系列的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作。类似的,在Visual InteDev6.0中,我们还可以看到一些ASP的内置组件如“Scripting.FileSystemObject”。但是,在有的场合,仅利用这些是不够的或复杂的,而且ASP的Script语言远不如C++语言功能强大(如建立链表,B+树结构等),这就使我们想到,是否可以在开发网页时使用具有良好数据结构的C++语言。虽然CGI,ISAPI等都可谓是用C/C++开发网页的先驱,但我们知道CGI,ISAPI的开发周期很长,且不与网页结合,直观性差,编写、调试困难;而在稳定性上,由于ISAPI是动态链接的方式,因此在执行若出现问题,会使得Web服务器一起瘫痪。而ASP正好能补足这些缺点。
由此可见,如果能学会编写ASP组件就能结合ASP的长处编写出强大的网页。可惜的是,笔者在市面上很少看到有专门讲如何用VC++来制作ASP组件的书籍。一般VC书籍只讲一些写Windows窗口程序或再加上编写普通的动态链接库。而ASP书籍更是只谈ASP中内置组件的使用方法。其实,如果要真正掌握编写ASP组件的机制,要牵涉到大量的COM技术的知识。而一些讲COM技术的书是很深奥的,且很少能结合有用的实例。为此,笔者想借此文以最简单的方法向大家介绍编写过程。所谓简介,正说明将不涉及COM知识的具体细节,仅给出实现方法。
一、建立工程
打开VC++6.0,选择New Projects中的ALT COM AppWizard, 并输入好工程名(如MyStudio),记住该工程名将成为ASP组件名的一部分(其实可以修改,但很麻烦),在下一页上选择Server Type 为DLL,并可考虑在Support MFC前打勾(想必使用MFC编程的人不少)。按Finish结束。在生成的代码中有四个标准的导出函数注册DLL的,我们不必关心。
二、创建COM对象(新建ATL活动模版库类)
在菜单上选择Insert New Class,并新建一个ATL Class,如取名为CmyComponent,你会发现在接口表中出现了一个ImyComponent,以后创建该接口的方法和属性就可以在ASP中使用了。把Aggregatable选项去掉,我们不需要它。保持其他不变。
三、添加接口方法
在ClassView中,右击ImyComponent,在出现的菜单中按Add Method。如图,在Method Name中可写上方法名如InitMyComp。在Parameters中写上方法的参数如[in]int Number1,[out,retbal]int* Number2。这里要特别说明的是参数的写法。