|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。iisASP自己包括了一个DLL文件,名字为ASP.DLL,缺省安装在WinntSystem32inetsrv目次下。这个DLL文件卖力失掉一个ASP页面(由文件扩大名.ASP标识),然后对它举行剖析,寻觅服务器端剧本内容。这个剧本传送给响应的剧本引擎,剧本的实行了局与ASP页中的HTML和模板文本分离在一同。完全的页面会送到Web服务器,从那边送往本来提出哀求的客户端。
关于使用程序的映照
为了更好地舆解这个历程,必要研讨一下Windows2000中的使用程序映照的事情体例。关于每个在IIS下设置好的Web站点,服务器上都有一个根目次。安装IIS时,缺省的Web站点一般是C:InetPubWWWRoot,除非在安装过程当中改动了路径。关于这个目次和个中的子目次(这个我们稍后再会商),有一组界说目次怎样共同IIS的属性。
从Start菜单中的AdministrativeTools翻开InternetServicesManger,将运转微软办理把持台(MicrosoftManagementConsole,MMC),显现IIS的情形。
用鼠标右击DefaultWebSite,选择Properties(属性),然后呈现HomeDirectory选项卡,如-4所示。
能够看到缺省的站点被设置成为一个假造的使用程序。在选项卡的下半部有Applicationname、ExecutePermissions和ApplicationProtection选项。IIS利用假造使用程序的体例来断绝页面集和所利用的组件的实例,以失利影响到避免Web服务器。正如新近所看到的,这是经由过程在独自的内存空间中实行页面和历程外组件完成的。我们将在本章前面会商这个成绩。
单击Configuration按钮翻开ApplicationConfiguration对话框,见-5。在AppMappings选项卡里,能够看到IIS与各种文件接纳特定的DLL相链接。任何含有扩大文件名.ASP的网页都送给ASP.DLL举行处置;有未映照的扩大文件名的页面,如HTML页面的.HTML和.htm及XML文件的.xml,只需从磁盘上载进并间接发送给客户端。
读者大概想懂得这一选项卡上的其他文件范例。.ida、.idc和.idq文件扩大名是IDC模板文件和查询文件所利用的,因而,一个IDC查询页面(.idc)将间接送到静态链接库httpodbc.DLL举行处置。从文件名也可猜出,它利用ODBC实行SQL语句,前往包括在页面中的一组数据纪录。一样,.shtm、.sHTML和.stm文件扩大名与文件名为ssinc.DLL的静态链接库绝对应,这些文件范例一样平常用于哀求服务器端包括(server-sideinclude,SSI)处置的文件。我们将在本书的后续部分给出一些相干的实例。
翻开ApplicationConfiguration和Properties对话框时,读者大概很想懂得各个设置的功效。本书的良多中央都要用到这些对话框和设置,检察这些设置有助于增添理性熟悉,但不要改动这些设置,除非晓得为何如许做。
处置一个ASP文件
我们晓得一个ASP页面供应给ASP静态链接库守候注释和实行,那末接着ASP会做些甚么呢?
第一步判别是不是有ASP服务器真个代码必要实行。假设没有,它仅是复杂地关照IIS这类情形,并让IIS向客户端发送页面。现实上,Windows2000的一个新特征同意对一切页面利用扩大名.ASP,包含对那些非服务器真个剧本代码,而不就义任何功能。
在新近版本的IIS和ASP中,一切有.ASP扩大名的页面,城市被逐行注释,即便它们含有非ASP服务器端代码。这固然要比IIS间接把它们从磁盘发送给客户端要慢良多。
当ASP从IIS吸收到包括有服务器端剧本代码的页面时,它会逐行举行注释。那些非服务器真个剧本,或不必要ASP举行服务器处置的,将被前往给IIS,进而发送给客户端。送来的剧本城市送给响应的剧本引擎,剧本引擎处置后的了局被发送回IIS时,城市拔出页面上响应地位上。
为进步操纵的效力,ASP也常把剧本引擎创立的编译代码,放在高速缓存中以备再次挪用。这个代码与发往客户真个输入了局是不不异的。客户看到的是剧本代码在经由注释、语法反省和编译后的实行了局。在服务器上高速缓存的只是编译后的代码,在本来的源文件变更后,这些代码会被保持。
1.分辨服务器端剧本段
ASP的注释器可以依据两种分开体例之一,分辩出代码是不是为服务器端剧本。
(1)用<%%>剧本分开符
<%和%>用以分开剧本段的最经常使用字符是:
这个办法也用于在前往页面的其他文本和HTML中必要拔出变量值或小段剧本语句的中央:
这段代码发生以下了局:
Theresultofcalculatingsevenplussixminusoneis12
(2)利用<SCRIPT>元素
当编写在扫瞄器内实行的剧本时,利用<SCRIPT>元素。当在此元素中包括了RUNAT属性并设定其值为“SERVER”时,该元素也可用在服务器端:
熟悉到ASP页面能够包括服务器端剧本和客户端剧本是很主要的。客户真个剧本(包括RUNAT="CLIENT",或省略RUNAT属性)不被ASP注释器处置,像带有.htm或.HTML文件扩大名的一般HTML页一样间接送给客户端:
(3)包括独自的剧本文件
ASP页面中可以包括独自的文件,而文件中包括剧本代码,这对编写可用于其他网页的通用函数长短常便利的。用这类办法,改动这个文件中的剧本代码,则包括这个文件的一切剧本在实行时都主动做响应的改动。为了包括独自的剧本文件,可以使用<SCRIPT>元素的SRC属性,以指定绝对的、物理的或假造的路径和文件名。
这个独自的文件必需仅包括无效的剧本代码,不克不及包括原有页面内容如文本或HTML。假设利用这个手艺,其他的代码不克不及放在<SCRIPT>元素内,它必需是空的。假如要为页面增添其他剧本,需利用别的一个<SCRIPT>元素大概由<%...%>分开的剧本。
也能够包括来自包括剧本、文本或HTML的文件的文本,经由过程利用服务器端包括(Server-SideInclude,SSI)指令能够完成这一点。在第4章中将研讨这个成绩。
2.界说剧本言语
ASP有两个剧本引擎:VBScript和JScript。安装ASP时这两个剧本引擎已缺省安装。也有由其他使用程序利用的剧本引擎,如微软的InternetExplorerWeb扫瞄器和WindowsScriptingHost。在Windows2000中该扫瞄器的今朝版本是5.0,大概另有新的晋级版本。另有其他的剧本引擎,如TCL和PerlScript(一种ActiveX剧本注释器而非传统的基于CGI的Perl)。
因而必需告知ASP,ASP页用甚么引擎。一般利用的办法是用特定的情况声明元素中界说引擎,这必需放在文件的第一行,并只能界说一次。这个元素一样平常用在ASP代码分开符前面随着字符@来暗示:
这个界说行还可包括其他的界说内容,在本章前面能看到相干内容。界说一个用VBScript编码的页面,以下所示:
<%LANGUAGE="VBScript"%>
关于JScript引擎,利用:
<%@LANGUAGE="JScript"%>
经由上述界说,在<%...%>段内的页面的一切代码将被送至界说元素所界说的剧本引擎。关于这类代码分开体例,这是指定剧本言语的独一办法。
但是,利用<SCRIPT>界说元素,能够独自界说每段的剧本言语,假如必要的话在统一页面上可以使用不止一种剧本言语:
不像在客户端,在正文元素内不必要埋没剧本代码,由于当它实行时,代码将从页面移走,取而代之的仅是输入了局。在客户端检察ASP页(在扫瞄器当选择ViewSource)时,只能看到文本、HTML和其他客户端剧本代码。一切的服务器剧本都被实行,只要了局被送到客户端。
缺省的剧本言语
当没有指定ASP页的剧本言语或没有独自的<SCRIPT>元素时,ASP将利用缺省的剧本引擎。初次安装IIS时,缺省的剧本言语是VBScript。但关于全部Web站点大概一个站点内的自力的假造使用程序,依据必要可响应改动设置。
在本章后面提到的ApplicationConfiguration对话框中,有一个AppOptions选项卡包括了设置缺省言语的文本框,如-6所示。
缺省言语也可在IIS里经由过程编纂ActiveDirectory段的值来改动设置。在InternetServicesManagerMMC插件中所能见到的设置,都寄存在Windows2000中的ActiveDirectory中,只需有响应的权限就能够举行读取和编纂。本书将在前面章节具体先容ActiveDirectory。
除此之外,可依据团体喜欢选择剧本言语。假设读者以为一种言语很好,可一向保持利用它。由于一切的ASP代码都在服务器端实行而不必忧虑扫瞄器的兼容性成绩。假设读者精晓VBScript和JScript大概其他的言语,可依据必要选择最符合的一种。但是由于VBScript各个版本的功效不休扩大(比方VBScript5.0如今撑持正轨表达式),一般会选择VBScript。其对范例和语法的请求不是很高,而且有更复杂的多语句布局,因而是一种简单利用的工具。
3.剧本功能成绩
一样平常来讲,Web服务器处置器的速率是充足满意利用的(除非出格忙碌的站点),由于它们的次要义务是从磁盘中载进页面并发往客户端。因而,每一个页面的哀求了局都使处置器守候磁盘。这意味着实行ASP剧本一般对功能的影响十分小。并且假如在一个页面上某段剧本代码屡次实行,而这段代码的已编译版本已被高速缓存,那末只须实行它,而不用屡次编译,如许对功能的影响就更小了。
固然,跟着哀求数目的增添,服务器负载也不休增添,剖析和实行每一个ASP页面就有响应的价值。应尽量紧缩ASP注释器的事情量。上面是一些有效的提醒。
(1)制止在统一页面上混用剧本言语
假如统一页面上有几种剧本言语,ASP不能不一个接一个地加载多种剧本引擎,并把响应的代码送给响应的引擎。这将下降处置速率,增添内存利用量。别的一个反作用是,假设编写的是一个按次实行的代码(而不是一系列从其他代码段挪用的函数或子程序),大概会以与它们在页面中呈现的按次分歧的按次实行。
比方,上面的代码大概不会发生所但愿的了局,由于没法确保JScript代码的了局在网页中是起首呈现,或是在第三位呈现。
(2)在剧本和其他内容中制止过量的情况切换
每当ASP碰到一个剧本段,必需实行并把了局发到IIS,然后再次前往往注释页面。因而,利用Response.Write语句(只创立发往客户真个文本,相似于Print命令行)能使页面的效力更高。比方上面这段VBScript:
(3)构建独自的组件
假设在一个页面不能不做大批的运算,大概运转一个过于庞大的剧本,一般的好举措是构建一个组件,并安装在Web服务器上。组件一般是编译过的可实行代码,相对注释ASP剧本代码,利用的效力更高。本书前面将切磋构建组件的成绩。
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了 |
|