ASP编程:利用ISAPI过滤器加强IIS的功能
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.作为一个WWW服务器软件,微软公司的InternetInfomationServer(IIS)复杂易学,办理便利,失掉了普遍的利用。您还能够经由过程ISAPI过滤器,举行本人定制的处置,来加强IIS的功效。ISAPI过滤器能够定制以下的处置:吸收HTTP协定头预处置、发送HTTP协定头预处置、发送生数据预处置、取得生数据预处置、HTTP会话停止信息处置、自界说的平安认证机制、URL映照信息处置、日记纪录处置等。天真使用这些定制处置,您能够完成很多看似难以完成的功效,失掉意想不到的效果。可是ISAPI过滤器利用不妥也会影响服务器的功能。ISAPI过滤器的开辟十分复杂,只必要完成三个接口DLL函数便可。它们是GetFilterVersion()、HttpFilterProc()、TerminateFilter(),人人能够检察MSDN懂得具体的用法。ISAPI过滤器是DLL文件,一样平常用C/C++言语开辟。为使ISAPI过滤器可以运转,您必要在注册表的HKEY_LOCAL_MACHINESystemCurrentControlSet
ServicesW3SVCParameters下创建一个字符串项,其称号为"FilterDlls",值为ISAPI过滤器文件的全路径称号。若这个字符串项已存在,只需把它的全路径称号到场个中,分歧的ISAPI过滤器文件之间用";"分开,您能够依据实行的优先按次加在得当的地位。设置好后从头启动IIS服务,您的ISAPI过滤器就发扬感化了。
上面作者举一个详细的使用例子。
对会见内容举行统计剖析:
一般我们在必要计数的页面内放一个计数器,大概利用ASP文件来完成计数功效。这类办法不克不及合用于如README.TXT等其他非HTML格局的文件。假如利用IIS的日记功效又太占用空间而不便利。作者经由过程定制URL映照信息处置来跟踪感乐趣的几个文件的计数统计,将了局纪录在一个文件中。
上面是它的源程序。
fcount.def:
LIBRARYfcount
EXPORTSGetFilterVersion
HttpFilterProc
TerminateFilter
fcount.c:
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<httpfilt.h>
#definelogfile"C:InetPubfcount.log"
#definepages5
char*urls[]={
"/default.htm",
"/banner.gif",
"/product/readme.txt",
"/product/product1.htm",
"/product/product2.htm"
};
intcounts;
BOOLWINAPIGetFilterVersion
(HTTP_FILTER_VERSION*pVer)
{
inti;
pVer->dwFilterVersion=HTTP_FILTER_REVISION;
strcpy(pVer->lpszFilterDesc,"fcount");
pVer->dwFlags=SF_NOTIFY_URL_MAP;/*过滤的内容*/
for(i=0;i<pages;i++){/*从文件读进初始计数值*/
counts=GetPrivateProfileInt("VisitCounter",
urls,
0,logfile);
}
returnTRUE;
}
DWORDWINAPIHttpFilterProc
(HTTP_FILTER_CONTEXT*pfc,
DWORDnoteType,VOID*pvNote)
{
inti;
charlurl;
charbuf;
strcpy(lurl,((PHTTP_FILTER_URL_MAP)pvNote)
->pszURL);
_strlwr(lurl);
for(i=0;i<pages;i++){
if(strcmp(lurl,urls)==0){
counts++;/*计数值增添*/
if(counts%10==0){
/*当计数值满10时记进文件,
以避免体系俄然逝世失落时数据全体丧失*/
_itoa(counts,buf,10);
WritePrivateProfileString("VisitCounter",
urls,buf,logfile);
}
break;
}
}
returnSF_STATUS_REQ_NEXT_NOTIFICATION;
}
BOOLWINAPITerminateFilter(DWORDdwFlags)
{
inti;
charbuf;
for(i=0;i<pages;i++){
/*体系中断时将计数值写进文件*/
_itoa(counts,buf,10);
WritePrivateProfileString("VisitCounter",
urls,buf,logfile);
}
returnTRUE;
}
以上二个例子作者利用VC6.0编译,在WINNT2000+SP3和IIS5.0上调试经由过程。
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的; 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
页:
[1]