如何写出优秀的ASP应用程序
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
[p]怎样创建鲁棒性、正确性、可维护性和性能俱佳的asp应用程序?要做什么?不做什么?本文以提纲的形式,给出了主要的check-points(检查点)。 [/p]
[p][br]什么是asp[/p] [p]active server page,简称asp,是:[/p] [p]l连接网友界面(html)和商业逻辑(business logic);[/p] [p]l提供一致的、容易使用的、有状态保持的、基于web的客户端;[/p] [p]l为那些需要事务处理的web 应用提供应用程序环境。[/p] [p]asp不是:[/p] [p]l 实现商业逻辑(business logic)的地方;商业逻辑应该通过com+、mts或者数据库来实现。[/p] [p]asp的使用者应该有下面的教训:[/p] [p]l 开发应用程序,而不是开发一个一个的孤立asp页面;[/p] [p]l 对输入和输出进行缓存;[/p] [p]l 在发布之前要测试;[/p] [p]l 选择性能较好的部件;[/p] [p]l 减少数据库的存取:缓存变换后的结果;[/p] [p]l 使用msmq来处理有时间延迟的工作;[/p] [p]站点设计[br]u 你的站点想提供什么?[/p] [p]u 信息架构:80/20准则;[/p] [p]u 站点导航;[/p] [p]u 页面布局;[/p] [p]u 可用性;[/p] [p]n 使用alt和title属性;[/p] [p]n 不使用图片或者image map的导航;[/p] [p]u 适合大多数低版本浏览器,考虑他们对activex、rds、xml、dhtml、java applet的支持状况;[/p] [p]u 屏幕分辨率和屏幕颜色数[/p] [p]n 是否支持webtv、pda…?[/p] [p]n 设置img的width和height属性。[/p] [p]u 非浏览器的访问,如自动机器人(spider);[/p] [p]u 使用帧(frame)?[/p] [p]u 使用cookies的个性化;[/p] [p]u 避免坏连接;[/p] [p]u 使用meta标签;[/p] [p]u 内容审核;[/p] [p]u 内容检索;[/p] [p]u 结果反馈:用户反馈和跟踪;[/p] [p]u 减少下载时间;[/p] [p]三层、四层应用设计[/p] [p][br]可读性、可维护性[br]u 使用注释;[/p] [p]u 在vbscript脚本中使用<%option explicit%>;[/p] [p]u 使用字符串变量存储sql字符串:便于调试;[/p] [p]u 使用server.mappath和相对路径;[/p] [p]u 使用adodb.inc或者来引用常量,不要直接使用常量数值。[/p] [p]u 指定ado调用的缺省参数,避免出错;[/p] [p]u 使用库或者部件来封装代码。[/p] [p][br]正确的方法:[/p] [p]u 使用server.urlencode[/p] [p]u 错误捕获和处理[/p] [p]国际化:[/p] [p]u 使用<%codepage%>[/p] [p]u 使用session.codepage[/p] [p]u 在iis5.0中,response.write支持utf8[/p] [p]其他:[/p] [p]u 使用#include 重用代码[/p] [p]u 使用分页技术[/p] [p]站点安全:[/p] [p]u 客户身份验证[/p] [p]u 输入验证[/p] [p]u #include 文件不要使用.inc后缀,使用.asp或者设置.inc的应用程序映射[/p] [p]u 把mdb文件存放在非web路径下;[/p] [p]u 使用adsi做安全管理[/p] [p][br]session和application状态[br]session的使用:[/p] [p]u 使用起来很方便但是很有问题;[/p] [p]u http是一个无状态的协议;[/p] [p]u 设计购物推车特别有用;[/p] [p]u 不利于可伸缩性设计(scalability);[/p] [p]u 在不需要session的页面中使用<%enablesessionstate=false%>[/p] [p]u 尽可能完全避免使用session;[/p] [p]u 在多个web服务器情况下不适合;[/p] [p]u 某些部件使session运行在单一线程模式,减少了吞吐量;[/p] [p]u 消耗内存;[/p] [p]u session有超时的问题[/p] [p]u 需要客户端的浏览器打开cookie设置;[/p] [p]u 不要在session中保存recordset,或者缓存connection对象;[/p] [p]u 在global.asa不要使用空的session_onend;[/p] [p]u 可选方案:[/p] [p]n cookies[/p] [p]u 直接状态编码:简单、容易、不安全[/p] [p]u 后端数据库的id作为状态值[/p] [p]n querystring 参数[/p] [p]n 如amazon的url方式[/p] [p]n 隐藏的表单[/p] [p]application变量:[/p] [p]u 共享变量[/p] [p]u 不能持久保存[/p] [p]u 多个web服务器时不行,除非只是只读变量。[/p] [p]缓存[br]u 对静态内容非常理想[/p] [p]u 不要使用response.expires=0,使用负数:[/p] [p]n response.expires=-10000;[/p] [p]n response.addheader “pragma”,”no-cache”[/p] [p]uresponse.addheader “cache-control”,”no-store”[/p] [p]u 服务器缓存[/p] [p]u proxy缓存[/p] [p]u 客户端缓存[/p] [p]部件[br]u 性能[/p] [p]u 伸缩性[/p] [p]u 分离商务逻辑和页面表现[/p] [p]u 被asp或其他环境重用[/p] [p]u 事务处理[/p] [p]u 类型安全[/p] [p]u 存取操作系统特性[/p] [p]u 保护知识产权[/p] [p]u 在下列情况下使用server.createobject:[/p] [p]n mts事务处理[/p] [p]n 上下文安全性[/p] [p]n asp内部部件[/p] [p]n onstartpage、onendpage[/p] [p]u 使用 |
关键字查询
相关文章
正在查询... |