如何寫出優秀的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 使用 |
關鍵字查詢
相關文章
正在查詢... |