用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選項去掉,我們不需要它。保持其他不變。