ASP编程:甚么才是进步ASP功能的最好挑选(续一)...
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。功能 在本文的第一部分中,我回忆了有关ASP开辟的一些基础成绩,先容了一些功能测试的了局,以了解我们安排在页面中的代码大概对运转功能形成甚么样的影响。在这个系列的第二部分,我们将切磋经由论证的ASP最普遍的用处,即经由过程ActiveX数据工具(ADO)交互利用数据库内容。ADO是Microsoft通用并复杂的数据库界面。ADO有良多的功效设置,因而筹办这篇文章时最年夜的应战即是限定测试成绩的局限。思索到读取年夜数据会议为web服务器施加很年夜的负载,我决意将研讨的内容范围在为利用ADO纪录集寻觅最优化设置的方面。可是这个限定仍是提出了一个应战,由于ADO为实行统一个功效供应了多种体例。好比说,纪录集能够从Recordset类中恢复,也能够从Connection和Command类中恢复。别的,一旦你有了一个纪录集,那末有良多个选择会戏剧性地影响功能。因而,同第一部分一样,我将尽量地多触及一些详细成绩。
目标
我研讨的目标是猎取充足的信息以找到以下成绩的谜底:
*是不是应当利用ADOVBS.inc包括文件?
*当利用一个纪录集时,是不是应当创立一个独自的Connection工具?
*恢复一个纪录集最好的办法是甚么?
*指针和锁的范例中,哪些是最无效的?
*是不是应当利用断开的纪录集?
*设置纪录集(Recordset)属性的最好办法是甚么?
*援用纪录会合域值的最无效办法是甚么?
*利用一时字符串能够较好地取代缓冲器吗?
测试是怎样设立的?
为举行这项研讨中的测试,我们共组装了21个ASP页面(包括在本文下载内容中)。每一个页面都被设置成用3个分歧的查询前往纪录集运转,这些纪录会合分离有0、25、250笔记录。这能够匡助我们将装载纪录集的成绩和在纪录会合轮回上的功能成绩断绝开。
为满意这些变更的前提,数据库毗连字符串和测试SQL字符串都作为使用程序变量存储在Global.asa中。由于我们的测试数据库是在MicrosoftSQLServer7.0上运转的,因而我们的毗连字符串指定OLEDB作为毗连供给者、Northwind样本数据库(包括在SQL服务器中)作为以后数据库。SQLSELECT语句请求NorthwindOrders表格中的7个特定域。
<SCRIPTLANGUAGE=VBScriptRUNAT=Server>
SubApplication_OnStart
Application("Conn")="Provider=SQLOLEDB;"&_
"Server=MyServer;"&_
"uid=sa;"&_
"pwd=;"&_
"DATABASE=northwind"
Application("SQL")="SELECTTOP0OrderID,"&_
"CustomerID,"&_
"EmployeeID,"&_
"OrderDate,"&_
"RequiredDate,"&_
"ShippedDate,"&_
"Freight"&_
"FROM"
EndSub
</SCRIPT>
alternatesql?25records
Application("SQL")="SELECTTOP25OrderID,"&_
"CustomerID,"&_
"EmployeeID,"&_
"OrderDate,"&_
"RequiredDate,"&_
"ShippedDate,"&_
"Freight"&_
"FROM"
alternatesql?250records
Application("SQL")="SELECTTOP250OrderID,"&_
"CustomerID,"&_
"EmployeeID,"&_
"OrderDate,"&_
"RequiredDate,"&_
"ShippedDate,"&_
"Freight"&_
"FROM"
我们的测试服务器是一个双450MHzPentium,512MB的RAM,在其上运转着NTServer4.0SP5,MDAC2.1(数据会见组件)和MicrosoftScriptingEngine的5.0版本。SQL服务器在一个一样规格的独自呆板上运转。同第一篇文章一样,我利用Microsoft的Web使用程序重点工具纪录从最后的页面哀求到传输最初一个字节(TTLB)的工夫,准确到服务器上的毫秒级。这个测试剧本运转20小时,挪用每一个页面1300次以上。显现的工夫是session的均匀TTLB。要记着的是,同第一篇文章一样,我们只是试图触及功能方面的成绩,而非伸缩性和容量的成绩。
还请注重,我们在服务器上开启了缓冲器。别的,我把一切的文件名都定为一样长度,因而文件名中就会有一个或多个下划线来衬垫。
入手下手
在第一个测试中,我们利用典范MicrosoftASPADO样本文件中的典范场景来恢复一个复杂的纪录集。在这个例子(ADO__01.asp)中,我们起首创立一个Connection工具,然后创立一个Recordset工具。固然,我在剧本中举行了一些修正,以反应在本系列的第一部分中触及到的一些好的做法。
<%OptionExplicit%>
<!--#Includefile="ADOVBS.INC"-->
<%
DimobjConn
DimobjRS
Response.Write(_
"<HTML><HEAD>"&_
"<TITLE>ADOTest</TITLE>"&_
"</HEAD><BODY>"_
)
SetobjConn=Server.CreateObject("ADODB.Connection")
objConn.OpenApplication("Conn")
SetobjRS=Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection=objConn
objRS.CursorType=adOpenForwardOnly
objRS.LockType=adLockReadOnly
objRS.OpenApplication("SQL")
IfobjRS.EOFThen
Response.Write("NoRecordsFound")
Else
writeheadings
Response.Write(_
"<TABLEBORDER=1>"&_
"<TR>"&_
"<TH>OrderID</TH>"&_
"<TH>CustomerID</TH>"&_
"<TH>EmployeeID</TH>"&_
"<TH>OrderDate</TH>"&_
"<TH>RequiredDate</TH>"&_
"<TH>ShippedDate</TH>"&_
"<TH>Freight</TH>"&_
"</TR>"_
)
writedata
DoW</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
页:
[1]