|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
怎样创建性能棒、准确性、可维护性和性能俱佳的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的第二个应用(一) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |