ASP教程之怎样写出优异的ASP使用程序
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;程序如何创立鲁棒性、准确性、可保护性和功能俱佳的ASP使用程序?要做甚么?不做甚么?本文以大纲的情势,给出了次要的Check-Points(反省点)。
甚么是ASP
ActiveServerPage,简称ASP,是:
l毗连网友界面(HTML)和贸易逻辑(BusinessLogic);
l供应分歧的、简单利用的、有形态坚持的、基于WEB的客户端;
l为那些必要事件处置的WEB使用供应使用程序情况。
ASP不是:
l完成贸易逻辑(BusinessLogic)的中央;贸易逻辑应当经由过程COM+、MTS大概数据库来完成。
ASP的利用者应当有上面的教导:
l开辟使用程序,而不是开辟一个一个的伶仃ASP页面;
l对输出和输入举行缓存;
l在公布之前要测试;
l选择功能较好的部件;
l削减数据库的存取:缓存变更后的了局;
l利用MSMQ来处置偶然间提早的事情;
站点计划
u你的站点想供应甚么?
u信息架构:80/20原则;
u站点导航;
u页面结构;
u可用性;
n利用ALT和Title属性;
n不利用图片大概ImageMap的导航;
u合适年夜多半低版本扫瞄器,思索他们对ActiveX、RDS、XML、DHTML、JavaApplet的撑持情况;
u屏幕分辩率和屏幕色彩数
n是不是撑持WebTV、PDA…?
n设置IMG的width和height属性。
u非扫瞄器的会见,如主动呆板人(Spider);
u利用帧(Frame)?
u利用Cookies的本性化;
u制止坏毗连;
u利用meta标签;
u内容考核;
u内容检索;
u了局反应:用户反应和跟踪;
u削减下载工夫;
三层、四层使用计划
可读性、可保护性
u利用正文;
u在VBScript剧本中利用<%OptionExplicit%>;
u利用字符串变量存储SQL字符串:便于调试;
u利用Server.MapPath和绝对路径;
u利用ADODB.INC大概<!―metadatatypelib=somelibfile=somedll-->来援用常量,不要间接利用常量数值。
u指定ADO挪用的缺省参数,制止堕落;
u利用库大概部件来封装代码。
准确的办法:
u利用Server.URLEncode
u毛病捕捉和处置
国际化:
u利用<%CodePage%>
u利用Session.CodePage
u在IIS5.0中,Response.write撑持UTF8
其他:
u利用#include重用代码
u利用分页手艺
站点平安:
u客户身份考证
u输出考证
u#include文件不要利用.INC后缀,利用.ASP大概设置.INC的使用程序映照
u把MDB文件寄存在非WEB路径下;
u利用ADSI做平安办理
Session和Application形态
Session的利用:
u利用起来很便利可是很有成绩;
uHTTP是一个无形态的协定;
u计划购物推车出格有效;
u倒霉于可伸缩性计划(Scalability);
u在不必要Session的页面中利用<%EnableSessionState=false%>
u尽量完整制止利用Session;
u在多个web服务器情形下不合适;
u某些部件使Session运转在单一线程形式,削减了吞吐量;
u损耗内存;
uSession有超时的成绩
u必要客户真个扫瞄器翻开cookie设置;
u不要在session中保留recordset,大概缓存connection工具;
u在global.asa不要利用空的Session_OnEnd;
u可选计划:
ncookies
u间接形态编码:复杂、简单、不平安
u后端数据库的ID作为形态值
nquerystring参数
n如amazon的url体例
n埋没的表单
Application变量:
u共享变量
u不克不及耐久保留
u多个web服务器时不可,除非只是只读变量。
缓存
u对静态内容十分幻想
u不要利用Response.Expires=0,利用正数:
nResponse.Expires=-10000;
nResponse.AddHeader“Pragma”,”no-cache”
uResponse.AddHeader“cache-control”,”no-store”
u服务器缓存
uproxy缓存
u客户端缓存
部件
u功能
u伸缩性
u分别商务逻辑和页面体现
u被ASP或其他情况重用
u事件处置
u范例平安
u存取操纵体系特征
u回护常识产权
u鄙人列情形下利用Server.CreateObject:
nMTS事件处置
n高低文平安性
nASP外部部件
nOnStartPage、OnEndPage
u利用<ObjectRunAt=server>提早工具初始化
u是不是保留到Session大概Application变量中
u
功能
nResponse缓冲:Response.Buffer=True
n封闭Connection并:setConnection=Nothing
n利用部分变量
n用<Object>取代Server.CreateObject
n不要利用Session和Application变量
n不要将COM工具存储在Session大概Application变量中
n封闭剧本调试
n制止反复的字符串相加
n在费时的页面顶端利用Response.IsClientConnected
n利用MSMQ
n不要在Session大概Application中存储年夜数组
n不要ReDim数组
n将汇合范例的工具赋给一时变量
n减小微处置器的最年夜线程数(运转regedt32,在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesw3SVCASPParameters,增添ProcessorThreadMax,减小这个值,看看功能的变更;大概增年夜这个值。)
n设置AspScriptEngineCacheMax,使它即是ProcessorThreadMax*CPU个数。缺省的是30;(在体系路径下:system32inetsrv/adminisamples下,键进adsutil.vbs,设置/w3svc/AspScriptEngineCacheMax);
n削减Session.Timeout;
n在MMC中,设置ASP使用程序缓冲为无效。
把某些事情交给客户端:
nCSS、DHTML
nXML
nRDS
nRemoteScripting
nXmlhttp
n客户端考证
n减小文件巨细
n尽量制止https和SSL
n利用Response.End测试功能
n
数据库
n削减数据库存取会见;
n缓存变更后的了局;
n利用ODBC毗连池和OLEDB资本池;
n利用体系DSN大概非DSN,不要利用DSN大概文件DSN;
n使ADO运转在双线程形式(Both-threaded):makefre.bat;
n利用ADO的Field工具;
nGetString大概GetRows对照快;
nRDS和XML把负载嫁到客户端;
n不要利用Select*,把字段写出来;
n只管利用SQLServer7,不要利用Access;
n利用SQLServer的特征:存储历程、Job、Join、sort、group
n利用SQLAnalysis,优化SQL的功能
n利用索引
n当地利用Name-pipes,远程利用Sockets
n正确地指定CommandType
IIS5的新特征
n牢靠的从头启动
nASP功能进步
nServer.Transfer比Server.Redirect更好
nServer.Execute
nServer.GetLastError
asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 那么,ASP.Net有哪些改进呢? 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
页:
[1]