使用Internet信息服务器(IIS)


在工作中有许多种不同的方法使用IIS(Internet Information Server),其中大部分都是通过传统的静态HTML方案,它需要使用各种类型的脚本。例如,可以在C/C++ 程序中使用 CGI (公共网关接口)脚本查询一个数据库。脚本将会形成一个包含查询结果的HTML页并将它返回给客户机。本章将不再介绍这些传统的方法,因为这方面的内容已经有许多书籍介绍过了。需要着重指出的一点是,传统方法之所以仍然存在,一方面是因为它们确实能够有效地工作,另一方面,当我们本章讨论的新技术还没来得及担当重任时,仍然需要使用旧方法。例如,你可能已有一个现存的基础结构,那么试着用新技术对它彻底重新编程就可能不合算。
    WEB链接 有一种很快捷的方式可供学习包括ODBC在内的某些IIS访问技术的基础知识。Dynamic Systems Internaitonal(国际动态系统)提供了一系列有关IIS的课程,你可以从http://www.dsi.org/dsi/iis.htm下载它们,这些课程包括了使一些旧的技术访问方法能进行工作的全部内容的概述。你还可以访问Microsoft IIS FAQ 站点(由Stephen Genusa负责主办)。该站点位于http://www.genusa.com/iis/,它包括了一些像CGI这样的论题。另外,位于http://www.Adiscon.com/IIS的KLV站点也包括了一些关于在使用老技术时的Visual C++编程中各种注意事项的链接,这个站点还包括一些其它链接,据此可以找到有关Internet制定规范的活动以及安全问题(如用户认证等)的最新信息。
    另一方面,使用像Active Server Pages(ASP)这样的新技术还能提供更大的灵活性并极大地提高你在Internet上提供内容的能力。这就是本章要介绍的内容──可用来在自己的Web站点上提供更好内容的新技术。另外本章还将介绍一种给Web站点用户提供更大灵活性的特殊方法。本章的主要内容就是介绍使用Internet服务器应用程序设计接口(ISAPI)的方法,另外还要介绍与ISAPI相关的一些支持技术,比如ISA(ISAPI服务器应用程序)。学完本章后,对这种技术在现实世界中的工作会从总体上有个很好的了解,清楚自己在什么时候需要使用那些老技术。另外,我肯定要把在自己的服务器上实现这些新技术时应注意的一些问题介绍一下给你。知道这些问题将有助于你决定使用新技术还是使用以前用过的旧方法。
    那么什么是ISAPI呢? 就本书而言,ISAPI是一系列MFC扩展,它允许你直接使用IIS。本章将使用一种新型工程来实现ISAPI,即ISAPI Extension Wizard(ISAPI 扩展向导)。另外还将介绍五个新类:CHttpSever、CHttpServerContext、CHttpFilter 、CHttpFilterContext和CHtmlStream。我们将使用这些类来创建ISA──它还有许多其它名称,例如在Microsoft文档中就被称为ISAPI服务器扩展DLL。为简单起见本书将使用ISA这个名称。
    注 ISAPI是允许你在工作中使用IIS的一系列特殊MFC扩展。
    ISA必然依赖于ISAPI。你可以用ISAPI类来创建ISA扩展以及IIS的过滤器。不过并不仅限于ISAPI类,还有用于控制Internet通信的WinInet类以及提供像接口这些东西的所有标准MFC类。过滤器允许你通过监测服务器上的事件决定是让它进入还是将它拒之门外。例如,可以创建一个ISA过滤器,除非用户输入了正确的口令,否则,将被Web站点拒之门外。另一种类型的过滤器,对于文件规模大于某值的文件,拒绝将它装入Web 站点上的FTP服务器。扩展更像是应用程序或后台进程。例如,可以创建一个扩展允许用户不必使用脚本就能与数据库进行交互。同一个扩展可以根据用户的输入和服务器上数据库的内容,动态创建Web页。
    注 ISA既可以对信息访问进行过滤,也能扩展IIS提供的服务。
    在阅读本章前,还应回顾一下第8章到第12章中讨论的关于客户机的信息。第8 章帮助你理解HTML的基础,第9章帮助你理解JavaScript,第10章介绍ActiveX控件编程的基础知识,第11章帮助你理解ActiveX Document的编程,而第 12 章则讨论了非常重要的URL moniker。所有这些章节都能帮助你了解客户机对服务器的需求──如果你计划修改一下服务器,那么这些信息都是重要信息。第12章特别重要,因为它能帮助你理解客户机与服务器之间的连接──即进行对话的支持机制。
    注释 本章的代码都是使用Visual C++ 6.0开发的,并且没在老平台上进行测试(在C++ 5.0中肯定没问题)。尽管这些代码可能不经修改就可以在Visual C++ 4.2下工作,但你应在我提供的过程中加以考虑。代码本身如果要在4.2版以前的Visual C++ 上编译,需要进行某种修改。
    下面各节将逐一介绍ISAPI编程的五个重要方面。首先是ISAPI自身简介。这是理论部分,如果你已经对ISAPI的工作原理很清楚,并想直接开始创建自己的程序,就可跳过这一节。本书特意将有关过滤器和扩展的创建与它们的实现分开论述,以便更通用。而且创建一个ISA与实现它是不同的步骤。本章第二部分介绍如何创建ISAPI扩展,第三部分介绍如何在服务器上实现它。类似地,第四部分介绍如何创建ISAPI过滤器,第五部分是如何实现ISAPI过滤器。
    本章最后两节介绍怎样创建其他类型的ISAPI 扩展和过滤器。第 6 节提供了另一个ISAPI扩展的程序设计例子,而第7节则提供了第二个ISAPI过滤器程序设计的例子。这些例子使你更好地掌握怎样使用ISAPI来增强服务器的操作性能、 向用户提供更好的输出或者使你的网络更加安全。
    WEB链接 如果你遇到有关IIS、ASP或ISA的问题,可以访问许多新闻组以获得帮助。实际中的问题太多了,本章不可能将它们一一列出,所以你还是花点时间自己去找吧。要得到Microsoft对IIS专门的最佳支持,可参阅 microsoft.public.inetserver.iis 。在microsoft.public.inetserver区还有其它一些新闻组,不过刚才说的新闻组消息最多。你还可以在microsoft.public.inetserver.iis.activeServerPages找到Microsoft专用的ASP帮助。另一个更有趣的非Microsoft站点是comp.lang.java,在该站点上有关于从ASP到ActiveX的各种事情的消息线索,这一点真让我感到惊奇。另一个很好的有关IIS 专用帮助的非Microsoft站点是comp.infosystems.www.servers.ms-windows。在写本书时作者就在该新闻组中找到一条非常棒的ISAPI信息。毫无疑问还有其它comp.infosystems.www新闻组可以查看。如果你使用FrontPage作为自己Web页维护工具之一,就应看看有关ISAPI专用帮助的microsoft.public.frontpage.client。通常要想找出软件中的错误是非常困难的,但是如果你看看comp.os.ms-windows.nt.software.compatibility,那么就会发现IIS 并不困难。最后,如果你想检索一些隐藏的ASP新闻组,可以访问microsoft.public.activex .programming.scripting.vbscript 本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3