当前位置:软件学习 > ISA >>

利用ISAPI开发CGI程序

 

  ISAPI(Internet Server API)最初是微软为IIS服务器所提供的一种CGI应用开发接口,其主要的目的也是为CGI开发提供好的开发接口,如果不负责的讲ISAPI也可以认为是类似WinCGI的一种开发模式,只不过ISAPI通过映射宏来取得用户表单传送的参数。这一点上和MFC消息映射宏很相似。

当然ISAPI的推出同时还具备了很多其他的特性:

  • ISAPI以DLL动态连接库的方式实现,所以加载较普通的EXE运行程序快,而且系统不会在使用完后马上清除掉DLL在内存中的空间,所以再次使用时会获得更快的速度。
  • ISAPI在调用者的内部以线程方式运行,所以和CGI进程相比较需要的运行空间也更小。
  • 在同一个DLL中可以集中多个处理函数,并且通过映射宏来指明不同的函数分别对什么样的请求来进行处理。
  • 由于与IIS的集成,所以可以利用ISAPI开发ISAPI过滤器。通过过滤器可以完成例如用户权限检测,数据加密,压缩,日志等功能,IIS服务器的功能也可以通过ISAPI过滤器来得到增强。

  到目前为止,很多非M$的WEB服务器也都添加了对ISAPI的支持。

  在同一个DLL中可以集中多个处理函数,所以执行ISAPI的请求和执行普通CGI的请求有一点区别,在URL中需要填写如下形式http://.../cgi-bin/test.dll?function_name&name=xxx&email=yyy,function_name表示的就是功能名称,为了能够正确处理你必须将其映射到DLL中的一个处理函数上。对与未映射的功能都将由一个默认函数处理。

VC4.2以上版本为创建一个ISAPI程序提供了向导程序,在新建工程时选择ISAPI Extension Wizard并在以后的对话框中选择创建服务器扩展和输入相关的信息就可以了。一个最简单的ISAPI程序至少包含了一个由CHttpServer类所派生的新类,并且在该类中进行了基本的映射,重载了BOOL GetExtensionVersion(HSE_VERSION_INFO* pVer)函数和提供了形式如void Default(CHttpServerContext* pCtxt)的成员函数。幸运的是向导程序已经为我们做好了这一切并创建了最基本的代码。

Default函数用于处理没有带参数首先我们修改Default函数中的代码,首先我们改写其中的相关代码成为如下:

void CTestisaExtension::Default(CHttpServerContext* pCtxt)
{
         //Print the <HTML> <BODY> tags.
         StartContent(pCtxt);
 
         //Print the title.
         WriteTitle(pCtxt);
 
         *pCtxt << _T("<p>演示</p>");
         *pCtxt << _T("<p>目前是Default成员函数其作用</p>");
 
         //Print </HTML> </BODY> tags.
         EndContent(pCtxt);

		
	
补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,