ASP 開發準則_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:分享:XML HTTP Request的屬性和方法簡介
      由于現在在公司負責制作標準的靜態頁面,為了增強客戶體驗,所以經常要做些AJAX效果,也學你也和我一樣在,學習AJAX。而設計AJAX時使用的一個重要的技術(工具)就是XMLHTTPRequest對象了。這里

      應用程序服務器被,或最終將被 Web 服務器所使用,它通常是運行 ASP 頁面的 IIS 計算機。ASP 是您的對象的唯一客戶機。它帶來了專門的線程和安全考慮。

      雖然許多使用 ASP 的 Web 站點根本就不用組件,但在這篇文章中假定 ASP 是 Internet 客戶機和組件之間的橋梁。下面的 ASP 組件準則(英文)提供

      ASP 和組件之間的劃分服務

      ASP 最常用于在服務器上創建供客戶機使用的 HTML 或 XML 文件,因此我們主要討論這種使用方案。這就引出了一個常見的問題,如果 ASP 頁面在服務器上,那么它們是否屬于業務層的一部分呢?在組件世界中,答案通常是否。雖然 ASP 確實在服務器上運行,而且可能與應用程序服務器在同一個空間,但是這不能使它成為業務邏輯的一部分。

      隨著用戶界面工具的發展或者隨著啟用更多的業務對業務方案,擁有這種明確的區別將獲得巨大的回報。

      話說到此,讓我們來看一些最重要的業務層和表示層劃分準則:

      令 UI 代碼與業務邏輯分離。這包括編寫與 UI 耦合的代碼,例如使用 ASP 內部組件的 MTS 對象,讓它與業務邏輯代碼分離,如同在不同的 DLL 中。


      將事務與 ASP 頁面分離。事務 ASP 在某些情況下非常好,但是組件和多層應用程序會改變這種情況。組件不應該依賴由客戶機層來管理它們的事務和業務邏輯語義。


      將表示組件(使用請求和響應的組件)與 Web 服務器放在相同的機器和/或進程中。如果將使用 ASP 內部組件對象的對象放在遠程機器上,那么對內部組件的所有調用將以回調形式發生。調用 IIS 客戶機的是 COM 服務器,它顯著降低了性能并使安全配置復雜化。可以將這些調整對象放在標記為“庫激活”的 COM 應用程序中。
      ASP 存在于服務器上,因此 ASP 頁面必須符合資源共享規則,并且記住可伸縮性。請看下面的詳細內容:

      在“會話”中,管理應盡量避免用戶特定的狀態。


      保持 ASP 無狀態,并在可能的情況下允許資源池。
      操作方式

      在評價某個代碼段是否屬于業務邏輯或者表示層時,請問一下自己,“如果我必須用按鍵式電話應用程序代替我的 ASP 頁面,那么該代碼是否還有用?”如果答案為“是”,那么可以嘗試將它劃分為業務邏輯代碼或者用戶界面幫助器代碼。

      如果改變了客戶機后該代碼不能用,或者如果它是構造用戶界面的幫助器,則該代碼屬于表示服務層。它在 ASP 頁面中,或在使用 ASP 內部組件的組件中。它不屬于業務對象組件。

      理解桌面與 ASP 客戶機的區別

      ASP 是組件的特殊客戶機,不同于桌面上的傳統單線程 Win32 應用程序。主要區別概括如下。

      線程管理:ASP 是多線程客戶機。這意味著可以有許多并發活動一起運行,也許在同一時刻處理不同的 ASP 頁面。這說明不能使對象偽稱它是唯一的使用者來獨占系統。這樣做可能有意外的反應,例如,養成一個壞習慣:將對象存儲在 ASP 會話或者應用程序變量中。


      安全環境:ASP 是由 Web 站點中的 Internet Information Services 5.0 執行的,有低、中、高三種隔離度。甚至這些 Web 站點可以有不同的安全設置、允許或拒絕匿名訪問、驗證客戶等等。所有這些設置產生了大量的方案,即不同的用戶帳戶最終用的是您的對象。


      輕松增長:這不是技術問題,而是 Web 應用程序所提供設施的副效應。傳統上,為桌面應用程序增加用戶基,要求仔細計劃好向已知數量客戶機的轉出。ASP 已經改變了該過程。在啟動和運行后,ASP-Visual Basic 應用程序可以方便地打開,供當地的或世界范圍的所有職員、所有業務伙伴和所有客戶使用。可以用這種方式描述 — 擁有超鏈接的單個電子郵件可以使用戶基成十倍地增長。您的應用程序為此作好準備了嗎?唯一了解的方式是對 Web 站點進行強度測試,以獲得實際性能的預期值。關于強度測試的詳細信息,請參閱“應用程序生命周期”一節。
      在 ASP 內應該如何使用 Visual Basic 對象?在頁面范圍內創建和取消您的對象。也就是說,盡可能使 ASP 頁面無狀態,只在暫時狀態下依賴會話或應用程序變量。不要將對象存儲在會話或應用程序變量中。這將 ASP 線程鎖定到您的會話、取消所有可伸縮性的預期值。也就是說,Web 服務器處理的用戶數不會超過幾十個。如果需要在會話或應用程序中存儲內容,請使之成為數據而不是對象。

      還有可以遵守的許多其他準則。我們建議您閱讀 MSDN Voices 上 J. D. Meier 撰寫的專欄“Servin' it Up”。該專欄包括了大量的技術、實踐和技巧,有助于開發可擴展的、可靠的 ASP 和組件應用程序。

      參考

      MSDN Voices: Servin' it Up Column(英文)
      SeminarOnline:在 ASP 下使用自定義 COM 組件(英文)
      MSDN 雜志(英文)

      不要將引用存儲在會話或應用程序中的 VB 對象中
      所有 Visual Basic 6.0 組件都是“單元線程”的,就是說它們都運行在 STA 單元中。這意味著如果在線程中創建對象,那么對該對象的所有調用都必須用同一線程服務。許多線程(來自并發 Web 站點用戶)使用 STA 對象的同一實例,會引起一連串的活動,有可能成為應用程序中的瓶頸。

      此外,在會話范圍內存儲用 Server.CreateObject 創建的 STA 對象,可以有效地將執行線程聯系到當前用戶,從而將應用程序的最大并發用戶數限制到默認的 20xN(N = 處理器數量)。

      操作方式

      如果您按照我們的建議使對象無狀態,則不需要存儲引用以供客戶機復用,并在應用程序范圍內存儲它們。客戶機將能夠獨立創建、使用和取消它們自己的對象。這就減少了保持會話特有對象的需要,原因是它們不保留會話特有的狀態。

      推薦的方式是使對象無狀態,它在需要時訪問數據庫或其他存儲區(例如 cookies 和 LDAP)。

      如果需要使用會話或應用程序范圍的數據,請將數據,而不是處理數據的對象,存儲在此。您可以創建一個類,來封裝對所需值的處理。

      參考

      信息:不要在會話或應用程序中存儲 STA 對象 (Q243543)(英文)
      PRB:將 STA COM 組件存儲在會話中,會將會話鎖定在單線程中 (Q243815)(英文)
      信息:ASP 下的組件線程模型概要 (Q243544)(英文)

      學習 IIS 5.0 中的新內容

      Internet Information Server 5.0 增加了許多新功能。這些改進均已寫入 J.D. Meier 的 MSDN 文章中:沿用 IIS 5.0 中的 ASP(英文)。下面是該文中最重要改進的概述。

      改進的、出色的性能


      Server.Transfer 和 Server.Execute 方法


      集中式錯誤處理


      改進的瀏覽器功能


      改進的腳本引擎


      正則表達式分析器


      與 ADO 記錄集 XML 功能的集成


      新的安全性、緩沖、隔離和管理功能
      參考

      ASP 中的重要更改(英文)

      分享:技巧:得到剛剛插入的記錄的自動編號值一例
      對于access和Sql server 數據庫,下面方法可以得到剛剛插入記錄的自動編號值。 '得到剛剛插入的記錄的自動編號值 以下為引用的內容:

      來源:模板無憂//所屬分類:ASP教程/更新時間:2008-08-22
      相關ASP教程