ASP 指南(轉貼自Microsoft)

來源:互聯網
上載者:User

ASP 指南


作者:J.D. Meier
發表日期:1999 年 12 月 27 日 簡介
“Active Server Page (ASP)”應用程式的成功常常取決於對體繫結構和設計這兩方面的取捨。考慮到 ASP 技術的範圍之廣和當前應用程式固有的複雜性,這種取捨是非常困難的。本文中,我將為您提供一些特定的指導方針,以助您成功開發基於 ASP 的應用程式。從過去成功的開發模式經驗中,我們總結出以下原則。
我已將指導方針整理成一組開發原則。在評估解決方案和技術時,可以應用以下原則協助您做出決策。以下原則是我長期以來從成功的開發模式所得的經驗積累。 原則 1:採用標準方法
建立命名規範並使目錄結構標準化,可以協助您大大提高 ASP 應用程式的可讀性和可維護性。雖然目前尚無 ASP 應用程式的正式標準,許多開發人員還是建立了一些通用方式。在此,我將與您共用一些更為通用的方式。
因為 ASP 技術依靠指令碼引擎進行工作,而且指令碼具有類型不嚴密的天性,命名規範也很模糊。在類型非常嚴密的語言中,變數將按照它的實際類型進行聲明。在使用 ASP 技術時,通常按照處理變數的方式(而不是其實際資料類型)在 ASP 代碼中聲明變數。例如,在使用“Visual Basic(R) Scripting Edition (VBScript)”時,儘管所有的 VBScript 變數都是 Variant,你還是會將成功標誌聲明為 bSuccess(b 代表布爾型),而不是 vSuccess(v 代表 Variant)。
下表是一些通行的命名規範。
變數首碼:首碼使用的變數變數樣本b or bln Boolean bSuccess c or cur Currency cAmount d or dbl Double dblQuantity dt or dat Date and Time dtDate f or flt Float fRatio l or lng Long lMilliseconds i or int Integer iCounter s or str String sName a or arr Array aUsers() o or obj COM Object oPipeline

資料庫物件的變數首碼:首碼 使用的變數 變數樣本 cnn Connection cnnPubs rst Recordset rstAuthors cmd Command cmdEmployee fld Field fldLastName

範圍及首碼的用法:首碼說明g_ 建立於 Global.asa。 m_ 對於 ASP 頁或在 Include 檔案中是局部的。 (沒有首碼)非靜態變數,對於過程來說首碼是局部的

Knowledge Base (KB) 中的一篇文章“Q110264 INFO: Microsoft Consulting Services Naming Conventions for Visual Basic”(英文)(http://support.microsoft.com/support/kb/articles/Q110/2/64.asp)對命名規範提供了真知灼見。
儘可能採用目錄結構為您的各個應用程式組件提供始終如一的位置。您應用程式的實際目錄結構當然由您自己決定,但通常是將映像、文檔、include 檔案和組件分別放置在單獨的目錄中。以下是簡單 ASP 應用程式目錄結構樣本。
目錄結構樣本:
\SimpleAspApp
\Docs
\Images
\Includes

一個好的目錄結構允許您有選擇地應用 NTFS 許可權。您還可以從 ASP 應用程式內部使用相對路徑。例如,可以使用以下代碼,從位於 SimpleAspApp 目錄的 default.asp 頁,引用 Includes 目錄中的 include 檔案 top.asp:
./includes/top.asp

注意我的 include 檔案的副檔名是 .asp,而不是 .inc。這樣做是出於安全方面的考慮,而且使用 .asp 副檔名(而不是 .inc),還能夠在 Visual InterDev(R) 中使用彩色編碼。
有關結構化 ASP 應用程式的其他一些提示和技巧,請參閱文章“ASP Conventions”(英文)(http://msdn.microsoft.com/workshop/server/asp/aspconv.asp)。 原則 2:設計為在服務下運行
ASP 將在服務下運行。設計 ASP 應用程式時,您馬上會面臨在傳統型應用程式中不會遇到的安全環境和線程問題。在案頭環境中,通常只處理作為互動式使用者啟動並執行單線程執行,而且有權訪問當前的案頭系統。在“Internet 資訊服務 (IIS)”中,類比不同使用者環境的多個客戶機線程調用您的應用程式,而且您的應用程式被限於“系統”案頭。
這對您來說意味著什嗎?請學習 IIS 的安全模式。還要提醒您:僅因為某些東西能在 Visual Basic IDE 下能夠正常運行,並不意味著它就能在 ASP 技術中安全運行。Visual Basic IDE 並沒有準確地類比運行時環境。常見的設計錯誤包括:在 ASP 技術中使用需要使用者介面的 .OCX 控制項,使用對線程來說不安全的組件,和使用要求特殊的使用者內容相關的組件。要避免的一個最簡單的問題,就是從應用程式中試圖訪問 HKEY_CURRENT_USER (HKCU) 登錄機碼(例如,不要調用 Visual Basic 的 GetSettingSaveSetting 函數,它們都依賴於 HKCU)。同樣,不要出現需要使用者進行人機互動的訊息框或其他對話方塊。
以下文章是有關 ASP 技術中的安全和驗證問題的相當不錯的入門讀物:
  • “Authentication and Security for Internet Developers”(英文)(http://msdn.microsoft.com/workshop/server/feature/security.asp)
  • “Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions”(英文)(http://support.microsoft.com/support/kb/articles/Q172/9/25.asp)
原則 3:封裝商務邏輯
ASP 技術通過產生 HTML 輸出提供了表示服務。簡而言之,它會產生使用者介面。您需要將商務邏輯從 ASP 表示指令碼中分隔開來。即使您不使用 COM 組件將商務邏輯從 ASP 代碼中分隔開來,至少也要將商務邏輯分隔到函數和 include 檔案中,以提高可維護性、可讀性和可重用性。在需要排除故障和隔離問題時,您還能體會模組化設計方法的好處。
呼叫指令碼內部調用函數和方法,可避免代碼亂作一團,並能在 ASP 應用程式中添加結構。下面舉例說明從 ASP 代碼中,將邏輯分離到方法調用中:
  lt;% Main()    MyBizMethod()    ...    Sub Main()        GetData()        DisplayData()    End Sub%>

在使用包含 ASP 功能的技術時,可以應用這一原則。下面舉一個使用 Visual Basic WebClass 時的例子,說明如何使用這一原則:
  • 因為 WebClass 本身引用 ASP 代碼產生 HTML,所以您不要將商務邏輯直接置於 WebClass 內。因為這是您的展示層,不在 MTS/COM+ 下直接運行 WebClass。
  • 從 WebClass,可以調用能運行在 MTS/COM+ 中的單獨業務組件。
  • 您可以決定建立自己的、具有對 ASP 引用的 COM 組件,而不是依賴於 WebClass 架構結構和額外的 WebClass 運行時開銷 — 您也可以使用 ASP 指令碼直接將業務組件自動化。
原則 4:盡晚擷取資源,儘早釋放資源
常見的問題是,從案頭系統到伺服器的過渡。許多具有案頭系統背景的開發人員從來沒有為伺服器的一些問題和資源共用擔心過。在傳統的傳統型應用程式中,串連到伺服器是個耗時的過程。為了改善使用者的體驗,通常採用儘早擷取資源和延遲釋放資源的方法。例如,許多應用程式會在它的整個已耗用時間內始終串連著資料庫。
這種方式在傳統的傳統型應用程式中能夠正常工作,其原因是使用者數量非常明確,容易加以控制,並且後端與前端緊密串連。然而,對於當前的 Web 應用程式,這種方式已經不可行了,其原因是有限的伺服器資源將面對越來越多的使用者。為了使您的應用程式能夠應付使用者的增加,您需要盡晚擷取資源,儘早釋放資源。
共用有助於增加這一方式的有效性。通過共用,多個使用者能夠共用資源,而且等待時間最少,對伺服器的影響也最小。例如,在處理資料庫時,ODBC 串連共用和 OLEDB 資源共用可以實現從共用池中選擇串連,最大程度地減少串連資料庫的開銷。
有關共用 ADO 的詳細資料,請參閱“Pooling in Microsoft Data Access Components”(英文)(http://msdn.microsoft.com/library/techart/pooling2.htm)。 原則 5:使用資料庫維護複雜的狀態
儘管 HTTP 協議是無狀態的,ASP 開發人員還是會經常使用 ASP 功能內建的狀態保持機制。例如,使用 ASP 技術內建的 Application 對象,開發人員所儲存的資源能夠為應用程式的所有使用者共用。通過使用 ASP 內建的 Session 對象,開發人員只為單個使用者儲存資源。
儘管聽起來在 ASP 技術的 Session 對象中儲存資訊是一個非常方便的保持狀態的方式,然而這一方式付出的代價太大,而且它也可能成為對延展性的最大的限制因素之一。應用程式的延展性本質上是隨著使用者數目的增長能夠繼續保持其效能的能力。而對於每一使用者,在會話逾時或被放棄之前, Session 對象都會消耗伺服器的資源。會話還會將您捆綁到一台伺服器上,從而限制您利用 Web 叢集的功能。請儘可能不要使用 ASP Session 對象進行狀態管理。如果您完全沒有使用會話,您就可以禁用 Web 應用程式的 Session 狀態(請參閱 IIS 文檔)。否則,您可以使用下述語句



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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