LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

如何写出优秀的ASP应用程序

admin
2010年7月4日 23:55 本文热度 5695

怎样创建鲁棒性、正确性、可维护性和性能俱佳的asp应用程序?要做什么?不做什么?本文以提纲的形式,给出了主要的check-points(检查点)。



什么是asp


active server page,简称asp,是:


l连接网友界面(html)和商业逻辑(business logic);


l提供一致的、容易使用的、有状态保持的、基于web的客户端;


l为那些需要事务处理的web 应用提供应用程序环境。


asp不是:


l 实现商业逻辑(business logic)的地方;商业逻辑应该通过com+、mts或者数据库来实现。


asp的使用者应该有下面的教训:


l 开发应用程序,而不是开发一个一个的孤立asp页面;


l 对输入和输出进行缓存;


l 在发布之前要测试;


l 选择性能较好的部件;


l 减少数据库的存取:缓存变换后的结果;


l 使用msmq来处理有时间延迟的工作;


站点设计
u 你的站点想提供什么?


u 信息架构:80/20准则;


u 站点导航;


u 页面布局;


u 可用性;


n 使用alt和title属性;


n 不使用图片或者image map的导航;


u 适合大多数低版本浏览器,考虑他们对activex、rds、xml、dhtml、java applet的支持状况;


u 屏幕分辨率和屏幕颜色数


n 是否支持webtv、pda…?


n 设置img的width和height属性。


u 非浏览器的访问,如自动机器人(spider);


u 使用帧(frame)?


u 使用cookies的个性化;


u 避免坏连接;


u 使用meta标签;


u 内容审核;


u 内容检索;


u 结果反馈:用户反馈和跟踪;


u 减少下载时间;


三层、四层应用设计



可读性、可维护性
u 使用注释;


u 在vbscript脚本中使用<%option explicit%>;


u 使用字符串变量存储sql字符串:便于调试;


u 使用server.mappath和相对路径;


u 使用adodb.inc或者来引用常量,不要直接使用常量数值。


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 使用起来很方便但是很有问题;


u http是一个无状态的协议;


u 设计购物推车特别有用;


u 不利于可伸缩性设计(scalability);


u 在不需要session的页面中使用<%enablesessionstate=false%>


u 尽可能完全避免使用session;


u 在多个web服务器情况下不适合;


u 某些部件使session运行在单一线程模式,减少了吞吐量;


u 消耗内存;


u session有超时的问题


u 需要客户端的浏览器打开cookie设置;


u 不要在session中保存recordset,或者缓存connection对象;


u 在global.asa不要使用空的session_onend;


u 可选方案:


n cookies


u 直接状态编码:简单、容易、不安全


u 后端数据库的id作为状态值


n querystring 参数


n 如amazon的url方式


n 隐藏的表单


application变量:


u 共享变量


u 不能持久保存


u 多个web服务器时不行,除非只是只读变量。


缓存
u 对静态内容非常理想


u 不要使用response.expires=0,使用负数:


n response.expires=-10000;


n response.addheader “pragma”,”no-cache”


uresponse.addheader “cache-control”,”no-store”


u 服务器缓存


u proxy缓存


u 客户端缓存


部件
u 性能


u 伸缩性


u 分离商务逻辑和页面表现


u 被asp或其他环境重用


u 事务处理


u 类型安全


u 存取操作系统特性


u 保护知识产权


u 在下列情况下使用server.createobject:


n mts事务处理


n 上下文安全性


n asp内部部件


n onstartpage、onendpage


u 使用延迟对象初始化


u 是否保存到session或者application变量中


u



性能
n response缓冲:response.buffer=true


n 关闭connection并:set connection=nothing


n 使用局部变量


n 用代替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_machinesystem currentcontrolsetservicesw3svcaspparameters,增加processorthreadmax,减小这个值,看看性能的变化;或者增大这个值。)


n 设置aspscriptenginecachemax,使它等于processorthreadmax*cpu个数。缺省的是30;(在系统路径下:system32inetsrv/adminisamples下,键入adsutil.vbs,设置/w3svc/aspscriptenginecachemax);


n 减少session.timeout;


n 在mmc中,设置asp应用程序缓冲为有效。



把某些工作交给客户端:


n css、dhtml


n xml


n rds


n remote scripting


n xmlhttp


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对象;


n getstring或者getrows比较快;


n rds和xml把负载嫁到客户端;


n 不要使用select *,把字段写出来;


n 尽量使用sql server 7,不要使用access;


n 使用sql server的特性:存储过程、job、join、sort、group


n 使用sql analysis,优化sql的性能


n 使用索引


n 本地使用name-pipes,远程使用sockets


n 准确地指定command type


iis 5的新特性
n 可靠的重新启动


n asp性能提高


n server.transfer比server.redirect更好


n server.execute


n server.getlasterror


该文章在 2010/7/4 23:55:08 编辑过

关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved