ISAPI编程技术.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ISAPI编程技术.doc

一.ISAPI简介 ISAPI(Internet Server Application Programming Interface)是Microsoft推出的运用在IIS内的一类基于HTTP协议的编程接口。通常将开发出的ISAPI应用模块称为ISA。简单地说,ISAPI是IIS提供的CGI替代技术。当然,ISAPI也可被认为是一种改良的CGI技术。ISAPI应用一般被开发为.dll的进程内DLL(In-process DLL),这使ISAPI应用的各实例在运行时同HTTP server位于相同的进程空间,所以各个ISAPI应用实例可以透明地访问HTTP server输出的资源。同传统的CGI相比,ISAPI应用具有更小的负荷。因为ISAPI应用在启动时无须申请创建自己的进程,而只需绑定到HTTP server的进程空间,所以其启动过程的速度要比传统的CGI程序快得多。从另一方面讲,ISAPI应用由于具有进程内属性,所以在其访问HTTP server的资源时,无须跨进程边界,这也使其运行效率大大提高。此外,IIS在管理进程内的线程时,实现了线程池(thread-pool)机制,这使ISAPI应用各实例的创建、释放和相应的资源分配更为有效。 ISA被分为两种类型:ISAPI Server Extension和ISAPI Filter。其中,ISAPI Server Extension可实现通常CGI程序的功能;而ISAPI Filter则可为IIS提供附加的功能。ISAPI Filter在Web server启动时被启动,在Web server停止时被卸载。用户对Web server的请求均会先通过ISAPI Filter过滤,而Web server返回浏览器的内容也会首先经ISAPI Filter过滤。由此可见,若要实现自定义的访问授权机制、数据压缩、数据加密和做日志等功能时,ISAPI Filter是一个合适的接口。 二.开发ISAPI Server Extension应用步骤 下面的例子描述了使用MFC和ISAPI Extension Wizard开发ISAPIServerExtension。 1.创建工程 ⑴标识Project Name为ISASample,确定存储路径。选择ISAPI Extension Wizard,点击OK按钮。 ⑵完成ISAPI Extension Wizard提供的各个选项,完成工程的创建。 2.探索ISAPI Extension Wizard生成的文件 ISAPI Extension Wizard自动生成了ISASample.cpp、ISASample.h、ISASample.DEF、ISASample.RC、Resource.h、StdAfx.cpp和StdAfx.h等一系列文件。 ⑴ISASample.h是CISASampleExtension类的声明。CISASampleExtension类的基类是MFC类库所提供的CHttpServer。基类CHttpServer被用作创建和管理ISAPI serverextensionDLL。我们的开发任务主要是通过CHttpServer的派生类CISASampleExtension来完成的。 ⑵生成的ISASample.DEF具有如下的定义: LIBRARYISASAMPLE EXPORTS HttpExtensionProc GetExtensionVersion TerminateExtension 以上的ISASample.DEF文件中定义了DLL将要输出的3个函数:HttpExtensionProc、GetExtensionVersion和TerminateExtension。程序员可以重写这些被派生来的成员函数内容。Web server在接到ISA的调用请求时将调用HttpExtensionProc方法,HttpExtensionProc可以通过回调函数读取用户数据并完成其他功能。GetExtensionVersion可用来获得ISAPIserverextensionDLL的版本号。GetExtensionVersion及HttpExtensionProc均在CHttpServer中有默认的实现。TerminateExtension为卸载提供了一个安全的途径。 3.定义parsemap ⑴什么是parse map? 通过parse map,可以将用户(浏览器)请求映射到CISASampleExtension类的成员方法。顺便提一句,别忘了CISASampleExtension类是从CHttpServer类派生出来的。MFC为ISAPI的parse map定义了一套宏,具体描述请参阅附表。 ⑵声明parse map 在ISASample.cp

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档