ccidnet广告

新用户注册

赛迪社区

帮助

  新闻中心 | 关注 | 技术天地 | 软件特供 | IT财经 | 市场专家 | 互动学校 | DIY专区 | 新游戏客栈 | 媒体全文



相关文章

  供应链管理(SCM)的网络解决方案(由Com中国区技术市场部提供)
  声卡无声的全面解决方案
  如何利用C++ Builder 5.0 实现屏幕保护程序的开发
  如何利用C++ Builder 4.0 Enterprise实现对Excel97 的调用
  ASP专题







 当前页面位置: 主页: 技术天地: Internet开发: 技术文章

初步认识ASP
(作者:甘翼平 2000年08月03日 13:18)



介绍



什么是ASP



ASP是怎样工作的



ASP术语A-Z



参考资料





介绍

  网上有许多关于Active Server Pages (ASP)的有用资料。如果你有足够的时间在网上搜索信息,你就能找到许多问题的答案。但是,如果你想搞明白使用什么工具调试ASP程序,或者怎么处理错误,就需要进一步挖掘了。本文提供了一个简易的方法去发现适于ASP的信息,其中包括关于ASP的简要定义、ASP如何工作以及按字母顺序排列的术语和技巧。在列表A-Z中,你可以看到简要的描述和相关的链接资料。

什么是ASP

活动服务器页面(ASP)就是一个编程环境,在其中,可以混合使用HTML、脚本语言以及组件来创建服务器端功能强大的Internet应用程序。 如果你以前创建过一个站点,其中混合了HTML、脚本语言以及组件,你就可以在其中加入ASP程序代码。通过在HTML页面中加入脚本命令,你可以创建一个HTML用户界面,并且,还可以通过使用组件包含一些商业逻辑规则。组件可以被脚本程序调用,也可以由其他的组件调用。

ASP是怎样工作的

当在Web站点中融入ASP功能后,将发生以下事情:



1、用户调出站点内容,默认页面的扩展名是.asp。

2、浏览器从服务器上请求ASP文件。

3、服务器端脚本开始运行ASP。

4、ASP文件按照从上到下的顺序开始处理,执行脚本命令,执行HTML页面内容。

5、页面信息发送到浏览器。



因为脚本是在服务器端运行的,所以Web服务器完成所有处理后,将标准的HTML页面送往浏览器。这意味着,ASP只能在可以支持的服务器上运行。让脚本驻留在服务器端的另外一个益处是:用户不可能看到原始脚本程序的代码,用户看到的,仅仅是最终产生的HTML内容。

ASP术语A-Z

这一节包含了一个术语和使用技巧的列表,从而帮助你更好地理解ASP。列表按字母顺序排列。



ADO



活动数据对象(ADO)提供了访问OLE-DB数据源的程序方法,ASP就是使用它访问数据库。当然,ASP还可以使用其他的数据库访问机制。ADO支持下列可用对象:Command, Connection, Recordset, Field, 和 Error,在ASP文件中常常要使用到这些。关于ADO更多的资料,请访问:http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/data/ado/。



Applications



ASP不单单是原型。当使用ASP做为解决方法时,要设计成一个应用程序,而不是一个独立的ASP页面。 至于对象,最好先弄清楚想要做什么,然后再决定是否购买对象软件包,或者自己编写对象组件。同时请考虑以下问题:缓冲,程序的伸缩性,可用性,安全性以及稳定性。



Bottlenecks(瓶颈)



辨别网络的瓶颈(就是这些:数据库,网卡,或者网络连接)的可用工具有:WCAT,NetMon和计数器。为了提高服务器的性能,要查看可能产生瓶颈、影响系统的所有部分,包括硬件配置与软件设置。按照这种方法,当需要扩展应用程序时,你就会知道该在哪里做些什么。



Browser Connection(浏览器的连接性)



在IIS4.0中,通过属性Response.IsClientConnected的值来判断是否浏览器还连接着。如果浏览器已经断开,那么就中止了ASP页面的进程,从而节省了CPU资源。详细资料请访问:Use IsClientConnected to Check if Browser is Connected。



Buffering(缓冲器)



请打开缓冲器功能。在IIS4.0中,默认下缓冲器是关闭的。在IIS5.0中,默认是打开的。你应该缓冲ASP文件以便可中止发送一个Web页面。之所以这么做,是因为可能发生脚本执行错误或者用户没有合适的安全证书。如果在IIS5.0下发生了这个情况,可用使用Server.Transfer命令将用户导向另一个页面,或者使用Response.Clear方法清除缓冲区,从而发送给用户新的内容。



C++



如果要创建页面级别的组件,可用使用服务器端脚本,Visual Basic,Visual J++以及Visual C++。如果要编写在应用程序或者Session状态下使用的组件,我建议你用C++或者Java编写,这样,编写的组件就可以是双线程的。Visual Basic是部分线程的。



Caching(缓冲区)



如果应用程序是通过一个代理服务器发送页面给客户端,代理服务器就要缓冲许多页面以便快速地送给客户端,这样做将减少网络调用,节省Web服务器的资源。为了防治浏览器缓冲ASP页面,设置Response.Expires为负数,如此强迫缓冲页面立即到期。如果网站包含一些不经常过期的对象,比如图形,那么就设置到期时间为一定的日期,这将大大地提高页面刷新和下载的速度。IIS已经通过pragma:nocache完成了代理缓冲,所以就不必在文件头部进行设置。



Client-Side Scripts(客户端脚本)



通过在服务器端与客户端同时提供脚本,在Web站点上分发工作。



COM Object Debugging(COM组件对象的调试)



如果你已经创建了COM对象组件并且在ASP中通过Server.CreateObject调用它,那么你就不能返回到开发环境重新编译COM的DLL文件,除非重新启动IIS Admin和W3SVC(Web Server)服务。因为COM DLL文件将被锁住。按照下面的步骤重新启动这些服务:



1、在命令行提示符下,输入“net stop iisadmin /y”,关闭IIS的父服务IIS Admin,同时关闭IIS的子服务FTP服务和其他服务。如果只输入“net stop w3svc”,inetinfo.exe不会被卸载。



2、在命令行提示符下,输入“net start w3svc”,重新启动IIS Admin服务和W3SVC服务(Web服务器)。



3、在完成第一步后,你可以对程序再编译。当需要调用DLL文件时,必须重复第一步,才能编译成功。



Components(组件)



在ASP应用中使用组件来融入压缩商业规则。可以自己编写组件,或者购买。一旦有了组件,就可以在需要的时候使用它。使用C++或者Java来开发组件,因为Visual Basic不是双进程的,不可能在程序范围内使用VB组件。当设计组件时,请注意将组件设计成stateless的(就是说:其中所定义的方法要带有参数,而不是在程序内自己设置属性)。



Stateless的组件很容易扩展并且能再利用。而且,如果在程序中某部分有一个100行的连续代码段,请考虑将它们转换为服务器端脚本。一个全面的第3方ASP组件产品列表可以从ASP Component Catalog中找到。



Connections(连接)



为了最佳性能请共享连接,这样资源可以有效地得到分配。为了支持多个登录,请提供一个只读权限的连接和一个读写权限的连接。通常情况下,要避免将ADO连接保存到session变量中。ODBC(版本3.0和更高)自动地执行共享连接,并且OLE-DB自动地提供共享Session。



Cookie



在ASP中使用cookie来保存会话session识别符(ASP SessionID)。对于那些将cookie功能关闭的技巧,使用cookie工具可以将cookie剥去并且将传递信息放置到URL中,这样做就在没有传递cookie的基础上而使用了cookie的功能。请查看Simulating Cookies with the Cookie Munger获得关于cookie的详细信息。



CPU



为了更加扩展地应用,压缩ASP应用程序到100%使用CPU,从而判断如何最好地分配资源。使用WCAT或者第3方工具,比如Mercury's LoadRunner,来调整程序性能。



Data Access Components(数据访问组件)



为了提高程序的性能,请阅读 Improving the Performance of Data Access Components in IIS 4.0 一文获得详细的技术资料。



Database(数据库)



通过组件,使用ADO将数据库访问加入到Web页面中。可以使用ADO创建小型组件来连接任何OLE-DB型兼容的数据源,而不管它是关系型的还是非关系型的。这其中包括电子数据表、数据库或者电子邮件目录。



Debugging(调试)



包括Microsoft Script Debugger在内,有许多的调试工具。使用Script Debugger,可以让你随时在线运行服务器端脚本,在执行期间监测变量的数值、属性,或者数组元素,并且可以跟踪过程。



重要的一点是:当你完成对Web服务器的调试后,不要忘记关闭服务器的调试功能,这样做将提高服务器的性能。



Dictionary Object(目录对象)



Dictionary对象能够使你快速地查询并存储任意的关键数据对,使用它能够在数组中通过关键字完成短语的存取,所以能够非常快地找到在内存中不连续存放的数据。而且,你不用知道数值中关键字在哪里存放,仅仅使用它就行了。



Disconnected Recordsets(断开的记录集)



断开记录集意味着:你可以在服务器传送数据完毕后浏览记录集的数据。可以通过设置记录集的CursorLocation属性为adUseClient以及ActiveConnection属性为NULL/Nothing,从而建立一个断开的ADO记录集。然后,在ASP应用中放置这个记录集,使用Recordset Clone方法来共享存取记录集。甚至使用RDS或者DCOM(或者2者都用)来传递记录集到远程客户端。获取更多的信息,请参阅 HOWTO: Getting ADO Disconnected Recordsets in VBA/C++/Java 和 INFO: Disconnected Recordsets with ADO or RDS。



Error Handling(错误处理)



在ASP文件中,可以使用ASPError对象来得到IIS5.0中的错误信息。执行Server.GetLastError方法返回ASPError对象。如果使用VBScript,并且产生了错误情况,使用OnErr。在JScript中,使用Try...Catch方法。更详细的信息请参阅Microsoft JScript Version 5.0 Adds Exception Handling。



Flow Control(流控制)



流控制就是设置ASP应用程序流的能力。通过Response方法和2个新的Server方法(对于IIS5.0)来控制流。使用Response.Redirect方法可能导致发布数据的丢失。执行Response.End方法在程序发生错误时,来停止执行ASP。当然,在调用Response.Redirect后,不需要再执行Response.End方法。Server.Transfer方法类似于Response.Redirect,但是前者是在服务器端执行的,并且不会将发布数据丢失。Server.Execute方法应用于嵌套ASP调用中,并且在先前发生错误的地方返回。



FileSystem Object(文件系统对象)



FileSystem对象影响文件系统。对于一个大容量的Web站点,不用使用FileSystem对象,因为存取单个文件的性能将下降。如果不是在同一时间存取多个文件,使用FileSystem对象就不会导致性能冲突。



Global.asa



文件Global.asa是可选择的,在其中你可以定义事件处理过程,宣布拥有会话(Session)或者应用程序(Application)范围内的对象变量。它将不会显示内容给用户,但是存储了事件信息和全局对象。文件名必须是Global.asa而且必须存储在应用程序的根目录下面。一个应用程序只能有一个Global.asa文件。如果不使用FileSystem对象来读取文件,可以在Global.asa中将文件调入一个应用程序级别的数组。



Glue(粘合性)



使用ASP来粘合HTML文件,使用组件来粘合商业逻辑规则。如果有一段100行的代码,可以将之转换为组件形式。



InetLoad



使用InetLoad工具来调整Web站点的性能。在广泛支持包括HTTP、HTTP, SMTP, POP3 和 LDAP在内的Internet协议的基础上,这个工具可以很好地调整各种Internet服务。同时,使用它还能伪装Web站点的通信拥挤状态。要获取InetLoad,请访问:Http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/msdownload/inetload/inetload.htm。



Internationalization(国际化)



如果要建立一个页面,这个页面除了美国以为,还要支持更多国家的用户浏览,那么可以在< % % >之间使用 CODEPAGE标记来定义合适的页面代码。做为选择之一,可以使用Session.CodePage属性。关于这个的详细信息,请参阅http://msdn.microsoft.com/workshop/server/nextgen/nextgen.asp。除了CODEPAGE,你还可以使用逻辑语言分辨器(LCID)来决定用户喜爱的语言。关于LCID的信息,请访问IMultiLanguage参考信息。



Isolation (分离)



为了达到更好的性能,可以在不同的空间独立运行IIS、ASP以及组件,这么做的缺点是:将影响交叉通讯的性能。当然你可以将IIS、ASP和组件放在同一进程中,这是一个非常快的方法。但是如果组件运行变慢,就将会影响到ASP和IIS的速度。可以在一个进程中运行IIS,在另外的进程中运行ASP以及组件,这样,当组件或者ASP发生障碍时,IIS不会受到影响。也可以在一个进程中运行IIS和ASP,在另外进程中运行组件。与前一种方法比较,因为要处理交叉通讯的问题,后者速度慢些。然后,这确实将IIS和ASP与可能存在错误的组件隔离开。速度最慢,但是最安全的方法是将IIS、ASP与组件单独运行在各自的空间。如果一个发生障碍,除了性能外,其他的都不会受到影响。这是检验组件是否编制成功的好方法。



Component Configuration Protection Speed

IIS, ASP, and components in one process 1 4

IIS in one process, ASP and components in another process 2 3

IIS and ASP in one process, components in another process 3 2

IIS in one process, ASP in one process, components in one process 4 1



Legend: 1 = Least, 4 = Most



Java



使用Java(或者C++)编写组件,它是一个功能强大的语言,使用它编写的组件可以是双线程的。



Mail



在Windows NT服务器上,使用CDO组件来发送Mail。对于Exchange来说,CDO是一个轻量级的版本,它在SMTP或者Exchange上工作。如果使用另外的E-Mail协议,就使用第3方组件。关于这点的详细列表,请访问http://msdn.microsoft.com/workshop/server/components/catalog.asp。



< OBJECT >标记



如果要参考使用没有使用过的对象,请使用< OBJECT >标记来指示它们,而不是使用Server.CreateObject。使用Server.CreateObject导致对象的立即建立,这样做,如果不想在后面使用这个对象,就要立即释放它以节省资源。



Option Explicit



在ASP文件中打开Option Explicit功能。VB中,可以不用事先声明变量就使用变量。但是打开这个选项,可以帮助区分没有定义的变量-如果使用没有定义的变量,就会收到错误信息。打开这个选项,任何未定义的变量将是非法的。未定义的本地变量与全局变量一样慢。



Order of Execution (执行顺序)



ASP不能保证在不同脚本块中书写的脚本的执行顺序,所以强烈地建议只将过程(函数和过程)放置在脚本块中。用这种方法,就可以通过从主脚本中(包含在<%和%>中)调用这些过程或者从另外的过程中调用一个过程来达到控制程序执行的目的。



Performance Monitoring(性能监视器)



确认要监视ASP程序的性能。可以使用系统监视器来测定一周内网站的连接的数目和文件传输量。也可以检查事件浏览器来查看Windows NT事件日志。一些有用的事件包括:



Request.WaitTime (请求等待多久)

Request.Queued (队列中有多少请求)

Request.Executing (同时发生了什么)

Request.PerSecond (吞吐量)

Sessions.Current (当前会话量)

Request.Disconnected (如果浏览器已经断开,停止执行ASP以节省CPU循环资源)

Templates.Cached (如果过多使用缓冲区,可能导致内存溢出)

Programming Conventions (编程约定)



如果要编制有效率的脚本,就要考虑在IIS资源库中的一些编程约定。这些约定在线发表在http://msdn.microsoft.com/workshop/server/asp/aspconv.asp。



Queuing



你可以使用Message Queuing Services来捆绑一些更新的事物处理信息到远程服务器。Message Queuing Services确保了即使当前网络不可用,也能将更新信息传递给远程网络。当应用程序接收到提交信息后,就能继续事物处理。



Remote Data Service (RDS)



为了调整RDS,提高ADCThreads的默认值从6到12,注册表中这个参数的入口位置在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCThreads。它的最大值是50。请注意,在修改生效前,必须重新启动服务器。



Restarting IIS(重新启动IIS)



默认情况下,服务器一启动,站点就自动执行功能了。为了在IIS服务管理器中开始、停止或者暂停,先选择站点,再点击工具栏中的Start、Stop或者Pause按钮。如果站点出乎意料地停止了,IIS服务管理器可能不能正确指示服务器的状态。在重新启动前,点击Stop,再点击Start来重新启动站点服务。使用群管理员用户接口来启动和停止站点群。



Scalability (可伸缩性)



将包含(include)文件分割成多个小文件而不是一个大文件,并且仅仅包含在服务器端脚本中需要的文件。如果ASP脚本中包含大量的函数和变量,但这些都不被包含脚本使用,就浪费了资源,并且极大地影响了性能和伸缩性。



Scripting Engines(脚本引擎)



ASP中带有Microsoft Visual Basic脚本版本以及 Microsoft JScript。通过第3方开发工具,支持PERL、PEXX和Python的COM脚本引擎也是可用的。



Scripting Languages(脚本语言)



ASP支持VBScript,JScript,Perl和PEXX脚本语言。



Security(安全)



你可以使用ASP来创建服务器端脚本,扩展客户端用户验证,并且保存信息。同时,使用加密套接层技术(SSL)来归类和管理用户访问服务器的验证。关于如何通过ASP来实现一个安全的站点,请访问 http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/isn/whitepapers/security.asp。



Server Performance (服务器性能)



通过修改系统和IIS的注册表设置值,你可以使服务器的性能达到最佳化。阅读下面的文章,可以看到Web开发小组们怎样优化站点:http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/backstage/whitepaper.htm。



Server Scriptlets (服务器端Scriptlets)



在IIS5.0中,ASP支持服务器Scriptlets。现在你可以将商业逻辑脚本过程转换到可再利用的COM组件中,从而应用于Web应用程序中,这就象其他COM-兼容程序一样。



Service Packs(服务补丁程序)



要确定得到了IIS和ASP的最近补丁程序。可以从以下站点取得关于补丁程序的信息:http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/ntserver/web/default.asp。



Sessions (会话)



使用AspSessionMax属性设置IIS可以并发运行的最大用户数目。同样,可以使用AspSessionTimeout属性来管理会话对象的生存周期。



Session Loss(会话损失)



可能导致会话标识符被丢失的原因很多,其中包括:代码编写得不好、Session.Timeout数值设置得不够、不接受cookie。如果遇到了这些问题,请阅读下面这篇非常有参考价值的文章:http://www.aspalliance.com/juan/。



Serialized (连续性)



会话要求是连续的,除非遇到了非会话ASP页面。通过消除了潜在的耗时会话活动,非Session的ASP页面经常能购提高服务器的相应性。



Templates (模板)



模板可以是静态的,就象风格样式表,或者一个Word文档模板,当然其中也可以包括逻辑。可以利用ASP来提供一个模板,其中包含了应用于许多不同文件的逻辑。



Testing (程序测试)



一定要测试ASP程序。使用IIS可用的工具和Visual InterDev 6.0来测试脚本程序和组件。



Transactions (事物处理)



一个事物处理就是一组可以当作一个整体看待的操作。事物处理用于数据库应用中,从而实现相关数据能做为一个整体来更新。如果发生了一个错误,原始的数据库状态就能被复原。



Tools (编写工具)



Drumbeat、 FrontPage 2000 以及 NetObjects Fusion是快速而且简单地学习ASP的很好工具。



WCAT



使用WCAT工具可以仿真client/sever环境下的网络工作量,让你测试IIS和网络怎样响应各种不同的客户端请求。根据这些测试结果,就能得到理想的服务器和网络配置。WCAT是为评估WindowsNT上Internet服务器如何响应各种工作量设计的。从以下站点可以下载WCAT:http://msdn.microsoft.com/workshop/server/toolbox/wcat.asp#download。



XML



扩展标记语言(XML)使你可以在Web应用中描述复杂的数据结构。可以使用Microsfot XML Parser(属于IE4.0的一部分)来创建ASP应用程序。

参考资料

下面的文章都是关于ASP的资料:



IIS documentation: http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/ntserver/web/default.asp

ASP overview: http://msdn.microsoft.com/workshop/server/asp/ASPover.asp

ASP technology overview: http://msdn.microsoft.com/workshop/server/asp/aspfeat.asp

Geek Speak Decoded #3: Client-Side and Server-Side Objects: http://msdn.microsoft.com/workshop/essentials/geekspeak/clientvserver.asp

Tom Moran's ASP Q&A: http://msdn.microsoft.com/workshop/server/feature/morqa.asp





与CCIDNET联系
webmaster@ciw.com.cn