仓酷云

标题: ASP网页设计怎样加强ASP程序功能(1) (jaklin摘自Y... [打印本页]

作者: 飘灵儿    时间: 2015-1-16 22:48
标题: ASP网页设计怎样加强ASP程序功能(1) (jaklin摘自Y...
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。程序|功能怎样加强ASP程序功能(1)
2000-08-10・甘冀平・Yesky

简介

  功能是一个很主要的特性。你必要事前计划好功能目标,不然往后就要为此从头编写程序。就是说:要假想好如何最好化地实行ASP程序?

  本文提出了一些优化ASP使用和VBScript的技能,很多技能和缺点都经由了研究。这里列出的倡议已在http://www.microsoft.com和其他站点长进行了测试,都事情得十分好。本文假定你具有ASP开辟的基础常识,包含VBScript大概JScript,ASP使用程序,ASPSession,和其他ASP内置工具(Request,Response和Server)。

  一般,ASP的实行功能远远不单单依附ASP代码自己!在本文的尾部列出了与功能相干的资本,它们含概了ASP和非ASP的部分,包括ActiveXDataObjects(ADO),ComponentObjectModel(COM),数据库(Database),和Internet信息服务器(IIS)的设置。除这些,另有一些十分好的链接值得你一看。

技能1:在Web服务器上缓存常常利用的数据

  典范的情形是:ASP页面从背景存储中取回数据,然后以超文本标志言语(HTML)的情势构成了局。不论数据库的速率怎样,从内存中取回数据要比从背景存储设备中快很多。从当地硬盘读取数据一般也十分快。以是,进步功能能够经由过程缓存服务器上的数据来完成,不管是将数据缓存在内存中,大概当地硬盘中。

  缓存是典范的“空间换工夫”的折衷体例。假如缓存得得当,就能够看到明显的功能提拔。为了让缓存无效,必需包管缓存数据是常常要重用的,并且也是盘算起来烦琐的。装满陈腐数据的缓存是对内存的华侈。

  不常常改动的数据是缓存的较好工具,由于不必要随时思索这些数据更新后的同步操纵。组合框、参考表格、DHTML代码、扩大标志言语串、菜单和站点设置变量(包含数据源名字DSNS,Internet协定地点IP和Web路径)都是很好的缓存工具。注重:要缓存数据表达式而不是数据自己。假如一个ASP页面常常变更而且很吃力往缓存(好比全部产物目次),就要思索预发生HTML,而不是每次产生哀求时再形貌它。

技能2:在Application或Session工具中缓存常常利用的数据

  ASP中的Application和Session工具是在内存中缓存数据的便当容器。你能够将数据赋值给Application和Session工具,这些数据在HTTP挪用时代将一向坚持在内存中。Session中的数据是为每个用户服务的,Application中的数据是一切用户共享的。

  什么时候必要在Application和Session中装进数据?一般,当使用程序启动大概会话入手下手时,数据就被装进了。为了在这时候装进数据,在ApplicationOnStart()大概SessionOnStart()平分别增加得当的代码。这些函数位于文件Global.asa中,假如本来不存在,就增加上。也能够在数据初次必要的时分调进,在ASP页面中增加代码,反省数据是不是存在,假如没有发明,就调进它。这里有一个例子,它代表了被称为“lazyevalution”的典范功能处置手艺:直到必要时,再往盘算。例子以下:

<%
FunctionGetEmploymentStatusList
Dimd
d=Application("EmploymentStatusList")
Ifd=""Then
FetchEmploymentStatusListfunction(notshown)
fetchesdatafromDB,returnsanArray
d=FetchEmploymentStatusList()
Application("EmploymentStatusList")=d
EndIf
GetEmploymentStatusList=d
EndFunction
%>

关于分歧的数据,能够编写相似的函数代码。

  数据应当按甚么格局保留?任何变量范例都能够,由于一切的剧本变量都是分歧的。好比说,能够保留为字符串、整型大概数据。一般,将ADO纪录集的内容存储到这些变量范例中一个。为了从ADO纪录会合掏出数据,必要手工地拷贝数据到VBScript变量中,每次一个字段。利用恣意一个ADO纪录集的函数functionsGetRows(),GetString()大概Save()(ADO2.5)都十分得疾速并且复杂,这里有个函数,形貌了怎样利用GetRows()前往纪录集数据的数组:

GetRecordset,returnasanArray
FunctionFetchEmploymentStatusList
Dimrs
Setrs=CreateObject("ADODB.Recordset")
rs.Open"selectStatusName,StatusIDfromEmployeeStatus",_
"dsn=employees;uid=sa;pwd=;"
FetchEmploymentStatusList=rs.GetRows()"ReturndataasanArray
rs.Close
Setrs=Nothing
EndFunction

上述代码的一个更深的技能是为列表缓存了HTML。上面是个复杂的例子:

GetRecordset,returnasHTMLOptionlist
FunctionFetchEmploymentStatusList
Dimrs,fldName,s
Setrs=CreateObject("ADODB.Recordset")
rs.Open"selectStatusName,StatusIDfromEmployeeStatus",_
"dsn=employees;uid=sa;pwd=;"
s="<selectname=""EmploymentStatus">"&vbCrLf
SetfldName=rs.Fields("StatusName")ADOFieldBinding
DoUntilrs.EOF
NextlineviolatesDontDoStringConcats,
butitsOKbecausewearebuildingacache
s=s&"<option>"&fldName&"</option>"&vbCrLf
rs.MoveNext
Loop
s=s&"</select>"&vbCrLf
rs.Close
Setrs=NothingSeeReleaseEarly
FetchEmploymentStatusList=sReturndataasaString
EndFunction

在符合的情况下,能够在Application大概Session中缓存ADO纪录集自己,可是有2点提醒:

ADO必需是自在线程标志的
必要利用disconnectedrecordset体例
  假如不克不及包管上述2个前提,就不要缓存ADO纪录集,由于这会发生很年夜的伤害性。

  当在Application或Session中保留数据后,数据将一向坚持,除非程序改动它、Session变量到期大概Web使用程序从头启动。假如数据必要更新,怎样办?能够挪用只要办理员才干会见的ASP页面来更新数据,大概,经由过程函数周期性的主动更新数据。上面的例子中,与缓存数据一同保留了时钟标志,过一段工夫后,就革新数据。

<%
errorhandingnotshown...
ConstUPDATE_INTERVAL=300Refreshinterval,inseconds

Functiontoreturntheemploymentstatuslist
FunctionGetEmploymentStatusList
UpdateEmploymentStatus
GetEmploymentStatusList=Application("EmploymentStatusList")
EndFunction

Periodicallyupdatethecacheddata
SubUpdateEmploymentStatusList
Dimd,strLastUpdate
strLastUpdate=Application("LastUpdate")
If(strLastUpdate="")Or_
(UPDATE_INTERVAL<DateDiff("s",strLastUpdate,Now))Then

Note:twoormorecallsmi</p>SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。
作者: 小魔女    时间: 2015-1-19 23:52
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者: 金色的骷髅    时间: 2015-1-25 23:25
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
作者: 兰色精灵    时间: 2015-2-4 12:59
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 只想知道    时间: 2015-2-28 03:24
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
作者: 因胸联盟    时间: 2015-3-9 20:19
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
作者: 简单生活    时间: 2015-3-17 00:51
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
作者: 小女巫    时间: 2015-3-23 10:12
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2