快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

如何写出优秀的ASP应用

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

什么是ASP

Active Server Page,简称ASP,是:

连接网友界面(HTML)和商业逻辑(Business Logic);

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

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


--------------------------------------------------------------------------------

ASP不是:

实现商业逻辑(Business Logic)的地方;商业逻辑应该通过COM+、MTS或者数据库来实现。


--------------------------------------------------------------------------------

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

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

对输入和输出进行缓存;

在发布之前要测试;

选择性能较好的部件;

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

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


--------------------------------------------------------------------------------

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

信息架构:80/20准则;

站点导航;

u 页面布局;

u 可用性;

使用ALT和Title属性;

不使用图片或者Image Map的导航;

适合大多数低版本浏览器,考虑他们对ActiveX、RDS、XML、DHTML、Java Applet的支持状况;

屏幕分辨率和屏幕颜色数

是否支持WebTV、PDA…?

设置IMG的width和height属性。

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

使用帧(Frame)?

使用Cookies的个性化;

避免坏连接;

使用meta标签;

内容审核;

内容检索;

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

减少下载时间;


--------------------------------------------------------------------------------

三层、四层应用设计

可读性、可维护性

使用注释;

在VBScript脚本中使用<%OptioExplicit%>;

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

使用Server.MapPath和相对路径;

使用ADODB.INC或者<!―metadata typelib=somelib file=somedll-->来引用常量,不要直接使用常量数值。

指定ADO调用的缺省参数,避免出错;

使用库或者部件来封装代码。


准确的方式:


--------------------------------------------------------------------------------

使用Server.URLEncode

错误捕捉和处理

国际化:


--------------------------------------------------------------------------------

使用<%CodePage%>

使用Session.CodePage

在IIS5.0中,Response.write支持UTF8


--------------------------------------------------------------------------------

其他:

使用#include 重用代码

使用分页技术

站点安全:

客户身份验证

输入验证

#include 文件不要使用.INC后缀,使用.ASP或者设置.INC的应用程序映射

把MDB文件存放在非WEB路径下;

使用ADSI做安全治理


--------------------------------------------------------------------------------

Session和Application状态
Session的使用:

使用起来很方便但是很有问题;

HTTP是一个无状态的协议;

设计购物推车特殊有用;

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

在不需要Session的页面中使用<%EnableSessionState=false%>

尽可能完全避免使用Session;

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

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

消耗内存;

Session有超时的问题

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

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

在global.asa不要使用空的Session_OnEnd;

可选方案:

cookies

直接状态编码:简朴、轻易、不安全

后端数据库的ID作为状态值

querystring 参数

如amazon的url方法

隐藏的表单


--------------------------------------------------------------------------------

Application变量:

共享变量

不能持久保存

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

缓存
对静态内容异常理想

不要使用Response.Expires=0,使用负数:

Response.Expires=-10000;

Response.AddHeader “Pragma”,”no-cache”

Response.AddHeader “cache-control”,”no-store”

服务器缓存

proxy缓存

客户端缓存


--------------------------------------------------------------------------------

部件

性能

伸缩性

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

被ASP或其他环境重用

事务处理

类型安全

存取操作系统特性

保护知识产权

在下列情况下使用Server.CreateObject:

MTS事务处理

上下文安全性

ASP内部部件

OnStartPage、OnEndPage

使用<Object RunAt=server>延迟对象初始化

是否保存到Session或者Application变量中


--------------------------------------------------------------------------------

性能

Response缓冲:Response.Buffer=True

关闭Connection并:set Connection=Nothing

使用局部变量

用<Object >代替Server.CreateObject

不要使用Session和Application变量

不要将COM对象存储在Session或者Application变量中

关闭脚本调试

避免重复的字符串相加

在费时的页面顶端使用Response.IsClientConnected

使用MSMQ

不要在Session或者Application中存储大数组

不要ReDim 数组

将集合类型的对象赋给临时变量

减小微处理器的最大线程数(运行regedt32,在HKEY_LOCAL_MACHINESYSTEM CurrentControlSetServicesw3SVCASPParameters,增加ProcessorThreadMax,减小这个值,看看性能的变化;或者增大这个值。)

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

减少Session.Timeout;

在MMC中,设置ASP应用程序缓冲为有效。


--------------------------------------------------------------------------------

把某些工作交给客户端:

CSS、DHTML

XML

RDS

Remote Scripting

Xmlhttp

客户端验证

减小文件大小

尽可能避免https和SSL

使用Response.End测试性能




--------------------------------------------------------------------------------

数据库

减少数据库存取访问;

缓存变换后的结果;

使用ODBC连接池和OLEDB资源池;

使用系统DSN或者非DSN,不要使用DSN或者文件DSN;

使ADO运行在双线程模式(Both-threaded):makefre.bat;

使用ADO的Field对象;

GetString或者GetRows比较快;

RDS和XML把负载嫁到客户端;

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

尽量使用SQL Server 7,不要使用Access;

使用SQL Server的特性:存储过程、Job、Join、sort、group

使用SQL Analysis,优化SQL的性能

使用索引

本地使用Name-pipes,远程使用Sockets

正确地指定Command Type



-----------------------------------------------------------------------

IIS 5的新特性

可靠的重新启动

ASP性能提高

Server.Transfer比Server.Redirect更好

Server.Execute

Server.GetLastError
返回类别: 教程
上一教程: 菜鸟十天学会ASP教程之第七天:删除记录
下一教程: 查看ASP源代码的方式

您可以阅读与"如何写出优秀的ASP应用"相关的教程:
· 在ASP应用中如何限制同一表单被多次提交!!!!好东西
· 在ASP应用中如何限制同一表单被多次提交
· 编译 ASP 应用程序
· 如何防止ASP木马在服务器上运行
· 一个功能完善的专栏治理的程序->这是asp.net的第二个应用(一)
    微笑服务 优质保证 索取样品