乐观 发表于 2015-1-16 22:07:43

ASP教程之ASP中优化数据库处置

asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般ASP是一个Web服务器真个开辟情况,它供应了一种复杂易学的剧本(VBScript或Jscript),并带有很多内置的工具,从而供应了一条简便的编程之路。更加主要的是,ASP中供应了ADO工具,让程序员能够轻松操纵各类数据库,从而能够发生和运转静态的、交互的Web服务使用程序。

今朝,国际良多电子商务站点都接纳了ASP手艺来与数据库交互,为用户供应各种服务。

因为电子商务站点的年夜部分信息都寄存在数据库中,要进步Web的呼应速率、创建高功能的电子商务站点,很年夜一部分取决于ASP与数据库之间的处置功能,本文将详细先容一些优化数据库处置的办法。

利用ConnectionPool机制
在数据库处置中,资本花消最年夜的是创建数据库毗连,并且用户还会有一个较长的毗连守候工夫。若每个用户会见时,都从头创建毗连,不但用户要长工夫守候,并且体系有大概会因为资本损耗过年夜而中断呼应。假如可以重用之前创建的数据库毗连,而不是每次会见时都从头创建毗连,则能够很好地办理这些成绩,从而进步全部体系的功能。在IIS+ASP处置系统中,接纳了ConnectionPool机制来包管这一点。

ConnectionPool的道理是:IIS+ASP系统中保持了一个毗连缓冲池,创建好的数据库毗连在ASP程序中的断开都是逻辑断开,而实践的物理毗连被存储在池中并被加以保护。如许,当下一个用户会见时,间接从毗连缓冲池中获得一个数据库毗连,而不需从头毗连数据库,因而,能够年夜年夜地进步体系的呼应速率。

为了准确利用ConnectionPool机制,必需注重以下几点:

1.在MDAC2.0之前的版本中,必需经由数据库驱动程序的设置才干利用ConnectionPool;在今后的版本中(好比MDAC2.1),缺省是利用ConnectionPool机制。详细设置情形能够拜见微软公司的站点(http://www.microsoft.com/data/)。

特地提一句,在利用Oracle数据库时,最好利用微软供应的驱动程序。

2.每次数据库毗连串参数必需不异,不然会被以为是分歧的毗连而从头往毗连数据库,而不是利用缓冲池中的毗连。最好的做法是将毗连串存储在Application变量中,一切的程序在创建毗连时利用Application变量的值。

3.为了更好地利用和保护毗连缓冲池,倡议在程序中利用以下的办法对数据库毗连举行操纵,由于隐式利用数据库毗连时不克不及使用缓冲池的机制:

显式创立毗连工具:Setconn=Server.CreateObject(“Adodb.connection”)
创建数据库毗连:conn.openApplication(“connection_string”)
显式封闭毗连工具:conn.close

使用间接的OLEDB驱动程序
在ASP中,经由过程ADO可使用两种体例毗连数据库,一种是传统的ODBC体例,一种是OLEDB体例。因为ADO是创建在OLEDB手艺上的,为了撑持ODBC,必需创建响应的OLEDB到ODBC的挪用转换(如MSOLEDBproviderforODBC)。而利用间接的OLEDB体例(如MSOLEDBproviderforSQL,Oracle),则不需转换,从而进步处置速率,同时,还能使用OLEDB的新特征。

在内存中缓存ADO工具或其内容
一般,在ASP程序中,城市触及到一些存储在数据库中的经常使用信息,如省分列表、商品分类等,这些信息关于每个会见用户都是不异的。若每个用户会见时,都要往数据库里掏出来,然后显现给用户,不但会使数据库服务器负载减轻,没法疾速服务于更主要的事件处置,并且Web服务器也必需一直地创立ADO工具,从而损耗大批资本,招致了当用户良多时几近得到呼应。若能把一些经常使用信息事前存储在内存中,当用户会见时,间接从内存中掏出,显现给用户,则能够年夜年夜减小体系的压力,进步呼应速率。

好比,我们能够把已获得了数据的RecordSet工具存储在Application变量中,当用户会见时,从Application变量中获得RecordSet工具,而不需再次创建数据库毗连;也能够将RecordSet工具里的数据以其他体例存储,好比存储在数组中,然后再将数组存储在Application变量中,利用时用数组的体例读取。

必要注重的是,一个工具要存储在Application变量中,线程形式必需是Both;关于不满意该前提的工具,必需以其他体例,好比转换成数组的体例存储在Application变量中,这也是下面所说的将内容存储在数组中的缘故原由。

利用数字序列
在ASP程序中,从诸如RecordSet中读取数据时,为了便利,常利用数据库列名的体例举行:

Response.writers(“fieldnameN”)

而很少接纳该数据库列名地点的数字序列来读取,即:

Response.writers(N)

实在,为了从RecordSet失掉列值,ADO必需将列名转化为数字序列,因而,若间接利用数字序列,则能够进步读取速率。若感到利用数字序列后,程序可读性不直不雅,能够接纳创建常量的办法,如界说:

constFIELDNAME11

如许就包管了程序的可读性和读取速率。

利用数据库历程
在电子商务站点中,特别是要举行买卖的站点,为了完成买卖,大概必要屡次查询大批的信息,用于判断长短,然后更新进库。若在编写ASP时,间接在一个程序中作屡次数据库操纵,不但IIS要创立良多的ADO工具,损耗大批资本,并且减轻了数据库服务器的包袱,增年夜了收集流量。若把屡次数据库操纵流程界说为一个数据库历程,用以下体例挪用:

connection.execute“{callprocedurename(..)}”

如许能够使用数据库的壮大功能,年夜年夜加重Web体系的压力,并且因为页面内容与营业分隔,办理保护也变得便利。

使用数据库的特征
ADO是一套通用的工具控件,自己没有益用数据库的任何特征。但如果在ASP程序编写时,无意识地思索分离数据库的特征,常常能够有很好的效果。

好比,Oracle数据库服务器关于实行过的SQL语句,一般都经由了剖析优化,并存储在一个SQL内存缓冲区中,当下次一样的SQL语句哀求时,间接从内存缓冲区掏出实行,不再举行剖析优化,从而能够年夜幅度进步功能。这就请求在ASP程序编写时,只管利用不异的SQL语句,大概参数化的SQL语句:

Setcmd=Server.createobject(“adodb.command”)
cmd.CommandText=”select*fromproductwhereproductcode=?”

用时创立用完开释
在后面也提到过,ADO工具长短常损耗资本的,因而必定要紧紧记着,只在用到ADO工具时才创立,用完后即刻开释,程序以下:

setrs=Server.createobject(“adodb.recordset”)
….
rs.close
setrs=nothing

利用优化过的SQL语句
关于电子商务网站,最次要的就是要包管不管会见用户的几,体系都要有充足快的呼应速率。因为在ASP手艺中,ADO工具损耗的资本长短常年夜的,若一个SQL语句要实行很长的一段工夫,对全部资本也将一向占用,使体系没有充足的资本服务于别的用户。因而,只管利用优化过的SQL语句,削减实行工夫。好比,不利用在in语句中包括子查询的语句,充实使用索引。

只需在我们的电子商务网站的建立中充实思索到效力成绩,并使用上述先容的办理办法,会极年夜地进步网站的呼应速率。
转自:静态网制造指南www.ckuyun.com减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。

小女巫 发表于 2015-1-18 20:48:20

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

仓酷云 发表于 2015-1-26 23:44:13

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

愤怒的大鸟 发表于 2015-2-5 01:32:56

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

蒙在股里 发表于 2015-2-11 02:24:17

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

小魔女 发表于 2015-3-1 19:44:35

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

第二个灵魂 发表于 2015-3-10 23:07:56

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

若天明 发表于 2015-3-17 16:08:10

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

再现理想 发表于 2015-3-17 16:08:10

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

精灵巫婆 发表于 2015-3-17 16:08:07

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。

冷月葬花魂 发表于 2015-3-17 16:08:10

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

小妖女 发表于 2015-3-17 16:08:14

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

飘飘悠悠 发表于 2015-3-17 16:08:18

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

不帅 发表于 2015-3-24 11:44:03

完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
页: [1]
查看完整版本: ASP教程之ASP中优化数据库处置