如何寫出優秀的ASP應用 (1)

來源:互聯網
上載者:User
   怎樣建立魯棒性、正確性、可維護性和效能俱佳的ASP應用程式?要做什嗎?不做什嗎?本文以提綱的形式,給出了主要的Check-Points(檢查點)。
  
  什麼是ASP
  
  Active Server Page,簡稱ASP,是:
  
  . 串連網友介面(HTML)和商業邏輯(Business Logic);
  . 提供一致的、容易使用的、有狀態保持的、基於Web的用戶端;
  . 為那些需要交易處理的WEB 應用提供應用程式環境。
  
  ASP不是:
  
  . 實現商業邏輯(Business Logic)的地方;商業邏輯應該通過COM+、MTS或者資料庫來實現。
  
  ASP的使用者應該有下面的教訓:
  
  . 開發應用程式,而不是開發一個一個的孤立ASP頁面;
  . 對輸入和輸出進行緩衝;
  . 在發布之前要測試;
  . 選擇效能較好的組件;
  . 減少資料庫的存取:緩衝變換後的結果;
  . 使用MSMQ來處理有時間延遲的工作;
  
  網站設計
  
  . 你的網站想提供什嗎?
  . 資訊架構:80/20準則;
  . 網站導覽;
  . 頁面配置;
  . 可用性;
  . 使用ALT和Title屬性;
  . 不使用圖片或者Image Map的導航;
  . 適合大多數低版本瀏覽器,考慮他們對ActiveX、RDS、XML、DHTML、Java Applet的支援狀況;
  . 螢幕解析度和螢幕顏色數
  . 是否支援WebTV、PDA…?
  . 設定IMG的width和height屬性。
  . 非瀏覽器的訪問,如自動機器人(Spider);
  . 使用幀(Frame)?
  . 使用Cookies的個人化;
  . 避免壞串連;
  . 使用meta標籤;
  . 內容審核;
  . 內容檢索;
  . 結果反饋:使用者反饋和跟蹤;
  . 減少下載時間;
  
  三層、四層應用設計
  
  可讀性、可維護性
  
  . 使用注釋;
  . 在VBScript指令碼中使用<%Optio. Explicit%>;
  . 使用字串變數儲存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緩衝
  . 用戶端緩衝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.