日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

ASP 組件向導

ASP 組件向導

更新時間:2022-05-07 文章作者:未知 信息來源:網絡 閱讀次數:

作者:J.D. Meier
Microsoft Corporation

2000 年 1 月 24 日

如果您符合以下幾種情況,這篇文章正適合您:

從 Active Server Pages (ASP) 代碼調用組件
設計將從 ASP 代碼調用的組件
希望利用 ASP 代碼中的組件
目錄
簡介
為什么使用組件?
狀態管理
范圍
分割服務
線程模型
安全性
Server.CreateObject 與 CreateObject
傳遞參數
事件
OnStartPage/OnEndPage 與 ObjectContext
錯誤處理
全局變量
分布組件
結論

簡介
組件。有人喜歡它們,有人則害怕。害怕組件的人通常都能給您講一個駭人的經歷。讓我們面對它:當開始在 ASP 下使用組件時,并不知道什么能傷害您。如果您摔倒了,那么站起來,自己拍干凈,然后接著來。在這篇文章中,我將提供從實踐中獲得的一般指南,幫助您建立更好的基于組件的 ASP 解決方案。

為什么使用組件?
在我開始討論組件指南之前,值得考慮將組件添加到 ASP 應用程序的價值。許多對組件不熟悉的開發人員總覺得一切都那么新鮮。組件可以為 ASP 應用程序帶來以下種種益處:

封裝功能和隱藏實現細節
可重用性(包括被不同客戶機應用程序重復使用)
知識產權保護
可伸縮性(體現在允許將應用程序分布到多臺計算機上)
配置和部署靈活性
性能(尤其在早期綁定是重要因素時)
訪問系統,例如 Win32 API 調用或編程語言的任何其他底層功能
鍵入功能較強(“Visual Basic® 腳本編輯器 [VBScript]”的鍵入功能較弱,而且 JScript® 也不太好)
業務邏輯與用戶界面分離,或者 Web 設計人員與 Web 開發人員分離
利益與付出同在。就增加開發過程的復雜性而論,創建組件解決方案可能更加昂貴。部署和疑難解答也可能變得更困難并成為現實因素。但是,不要讓眼前的困難阻礙了長期的利益。如何知道付出的成本是否值得呢?請考慮下列方面:

現有的代碼庫是如何?
開發隊伍的水平和經驗怎樣?
您對主服務器的控制范圍如何?
為特定任務選擇了什么樣的工具和語言?
存在什么協同問題?
存在性能和可伸縮性的因素嗎?
項目時間框架是什么?
誰會繼續維護和支持該應用程序?例如,開發小組能介入和接管嗎?
審查以上考慮的問題后,請考察您的假設。原型能迅速從設想中得出實際情況。

現在,對組件可能帶來的益處有了一定的理解,讓我們繼續討論。下面的指南將幫助您獲得最大的益處。這些指南可能成為指引您順利建立更穩定的、可升級的、性能更優的 ASP 組件應用程序的向導。

狀態管理
建議
一般來說,在可能的場合盡量使用無狀態的組件和無狀態的 ASP 頁面。組件不應需要狀態從一個方法調用到下一個狀態。將復雜的狀態存儲在數據庫中。對于簡單的數據、沿用 cookies、QueryString 或在頁面之間傳遞數據的隱藏的表單字段。

為什么
服務器資源是有限的。維護組件中的狀態意味著應用程序在資源沖突和并發問題時將消耗寶貴的資源。無狀態組件將幫助您避免這些問題。無狀態組件還提供更多的部署選項,并增強在多個客戶機上共享資源的能力。

常見的陷阱
開發人員常犯的錯誤是設計或使用需要維護狀態的組件。請注意防止這種常用于桌面開發的思想。通常,具有桌面開發背景的開發人員會設計出依賴狀態的組件。

詳細信息
避免使用“ASP 會話”將提高服務器的性能,因為它簡化了代碼路徑并減少了服務器資源的消耗。如果不使用“ASP 會話”,請通過“Internet 服務管理器” (請參閱“Internet 信息服務 [IIS]”文檔)禁用“會話”狀態。也可以在不需要“會話”的 ASP 頁面中使用下面的標記禁用基于頁的“會話”:

<%@ENABLESESSIONSTATE=False %>
部署靈活性是另一個重要方面,尤其在 Web 區域中運行應用程序時。如果依賴“ASP 會話”, 則給定用戶的請求綁定在指定的 Web 服務器上,因為“會話”狀態是服務器專用的。在中間層和 Web 服務器中避免狀態,并使用數據庫,將使 ASP 請求可由區域中任何有效的 Web 服務器處理。因此, 您將減少競爭,提供更好的冗余,并允許更多的分布選項。

不使用“ASP 會話”而在頁間傳遞數據的其他方法,請參閱下面的“知識庫 (KB)”文章:

Q175167 HOWTO: Persisting Values Without Sessions(英文)  
Q157906 HOWTO: Maintain State Across Pages with VBScript(英文)  
Don Box 在 ActiveX&reg; Q&A(英文) 一文中 還提出有關 MTS 狀態管理的更多見解。

范圍
建議
通常,請在頁面范圍內使用組件。頁面范圍的含義就是在同一頁上創建對象、并使用它和釋放它 — 所有這些均在同一頁上操作。

標記為“雙重”或“單元”的組件在頁面范圍內都能正常工作。僅在頁面范圍內使用“單元”模型組件,例如 VisualBasic 組件。如果需要在“應用程序”或“會話”中存儲組件,則建議使用“雙重”?梢栽凇皶挕被颉皯贸绦颉狈秶鷥却鎯擞洖椤半p重”的組件,但組件需要保證線程安全。

為什么
在頁面范圍內使用組件使服務器資源得以回收。釋放資源將使并發問題減到最小程度,并允許可匯集的資源在客戶機上共享。另外,頁面范圍組件避免了影響“會話” 或“應用程序”范圍的對象的線程問題。在下面的“線程模型分類”中將詳細討論線程問題。

常見的陷阱
最常見的問題之一就是在“應用程序”范圍內存儲 Visual Basic 或其他“單元”模型對象。如果您嘗試在“應用程序”范圍內存儲一個用 Server.CreateObject 創建的“單元”模型對象,可以看見下面的錯誤:

應用程序對象錯誤 'ASP 0197: 80004005'

不允許的對象使用

/VirDir/global.asa, line 7

不能將帶有單元模型行為的對象添加到應用程序的內部對象。

但是,如果使用 <OBJECT> 標記在“應用程序”范圍內存儲“單元”模型對象,就不會出現運行錯誤。相反,對象將創建在指定的“單線程單元 (STA)”線程上,并且所有調用都匯集到那個線程 — 而且是連續地。原因是沒有復選該組件的線程模型。很遺憾,在運行時出現了問題。

另一個常見問題是在“會話”范圍存儲“單元”模型對象,該“會話”范圍將用戶會話綁定到指定的線程。這個行為嚴重影響服務器的性能。由于所有調用將連續地匯集到創建該對象的線程,因此從根本上影響了線程緩沖池的目的。

詳細信息
有關詳細內容,請參閱下面的 KB 文章:

Q243543 INFO: Do Not Store STA Objects in Session or Application(英文)  
Q243548 INFO: Design Guidelines for VB Components Under ASP(英文)  
分割服務
建議
將表達、業務和數據服務分離。業務組件應該實施業務規則。業務組件不應包含數據訪問技術。那是數據層組件的任務。業務組件不應包含對 ASP 對象的引用。

ASP 提供表達服務。引用 ASP 的對象應該呈現為 HTML。這些對象能夠依次調用對 MTS/COM+ 注冊的業務對象。

為什么
將應用程序分割為單獨的和截然不同的服務,有以下好處:

更便于組件的重用
支持 Windows DNA model(英文)  
更好地孤立疑難問題
更靈活的部署選項(去掉服務的耦合允許在多臺計算機上分布應用程序)
常見的陷阱
有一種我們稱為“瑞士軍刀”組件的常見問題。 該“瑞士軍”組件將所有服務合成一體 (就像有螺絲錐、牙簽等 17 種工具的小瑞士軍刀)。 把不相關的服務組合到一個組件中, 使該組件很難使用、理解和維護。

容易掉入的另一個陷阱是從業務組件中引用 ASP。使 ASP 和業務邏輯耦合(通過使用 請求或響應對象,或在其內部構建 HTML),不僅限制不同的客戶機重用您的組件,而且限制了橫向的可伸縮性。引用 ASP 內置對象的對象應該與 Web 服務器在同一框圍中。理想情況下,由于橫向可伸縮性,業務組件可以分布在不同的框圍中。可以直接在 ASP 腳本中提供表達服務,也可以建立呈現引用 ASP 內置對象的組件的 HTML,并將這些組件保持在 IIS 框圍中。

詳細信息
成功的設計模型可用作處理公共業務問題的模型。例如,處理“創建讀更新刪除(CRUD)” 操作的模型,可幫助您將應用程序分為幾個截然不同的邏輯服務,即表達、業務規則和數據訪問。

請參閱下文以獲得更多的設計模型具體示例,可以在您自己的應用程序中模仿它:

Scalable Design Patterns(英文)
Simplify MTS Apps with a Design Pattern(英文)
FMStocks Application: Start Here(英文)
線程模型
建議
選擇組件的范圍還是選擇組件的線程模型,哪種方法優先?兩種方法都要考慮線程分支,除非決定在頁面范圍內使用“單元”或“雙重”模型組件。(如果 Visual Basic 程序員不知道組件是哪種線程模型,則總是“單元”。)

如果需要在“應用程序”或“會話”中存儲對象,則需要使用標記為“雙重”的組件并聚集“自由線程編組程序 (FTM)”。

不要使用“單線程”組件并避免使用來自 ASP 的“自由線程”組件。

注意: 如果不小心, Visual Basic 可產生“單線程”組件。請確保在項目屬性頁的常規選項卡上將線程模型設置為單元線程。還要注意在相同選項卡上選定無人值守執行和保留在內存中選項。

為什么
如果您使用的是 Visual Basic,它是一種“傻瓜”開發環境。 Visual Basic 僅限于使用“單元”模型。假如 Visual Basic“單元”模型對象執行得非常良好,我不想對頁面范圍上的限制考慮太多。 Fitch 和 Mathers Stock 2000 破壞了對性能的任何預先想法。另外,由 ASP、SQL 和 Visual Basic 構建的許多現有網站,無時不刻都在證明頁面范圍的“單元”模型組件是可伸縮和執行的。

如果在標記為“雙重”的組件上聚集 FTM,則可以不用任何編組或線程切換,便能在線程之間調用。如果標記為“雙重”的組件沒有聚集 FTM,ASP 將其視為“單元”線程對象 — 就像 Visual Basic 組件一樣。請記住,如果計劃利用“COM+ 對象池”,則不要聚集 FTM。 有關“對象池”的規則,請參閱“平臺 SDK”文檔。

“單線程”和“自由線程”組件運行在“系統”安全環境下。更糟的是,“單線程”組件會導致死鎖。

常見的陷阱
也許最常見的陷阱就是使用了沒有被設計為在 ASP 下運行的組件,如“單線程”組件。大多數開發人員陷入其中,是因為將桌面應用程序移向 ASP,或者使用了第三方的控件時。如果您不能確定組件的線程模型,可以檢查組件的注冊表項(但不能總依賴它)。

詳細信息
有關線程模型及其對 ASP 的影響,請參閱下面的文章:

Don Box's Active Server Pages and COM Apartments(英文)  
Agility in Server Components
另外,下面的 KB 文章提供了有關線程問題的詳細內容:

Q243543 Single-Threaded Apartment Objects in Session or Application(英文)  
Q243544 INFO: Component Threading Model Summary Under Active Server Page(英文)  
Q150777 INFO: Descriptions and Workings of OLE Threading Models(英文)  
安全性
建議
組件不應對它運行的用戶環境做任何假設。不要訪問用戶專用信息,如 HKEY_CURRENT_USER,或桌面計算機的專用資源,因為這些對組件來講是不可用的。應用程序也不要使用 SendKeys 或調用依賴用戶界面的組件,執行通常需要桌面交互的操作,如打開對話框。

為什么
組件將運行在不同安全性的桌面上。首先,這表示應用程序不能打開對話框,并不能與其他 GUI 實用程序交互(例如,使用 SendKeys)。默認情況下,不允許 Inetinfo.exe 與桌面交互。不同的用戶環境也會限制組件訪問某些資源 — 主要是注冊表的 HKEY_CURRENT_USER 部分。

常見的陷阱
常見的失誤是引用 HKEY_CURRENT_USER 下的表項。例如,Visual Basic 的 GetSetting 和 SaveSetting 函數不能在 ASP 下使用,因為它們引用了 HKEY_CURRENT_USER 配置單元下的表項。下面的 KB 將討論這個問題:

Q248348 PRB: SaveSetting and GetSetting Not Available in Visual Basic 6.0 Webclass (IIS Application)(英文)  
當從 ASP 而不是從桌面客戶機調用組件時,打印機、MAPI 信息和網絡共享通常“失效”。

有關詳細內容,請參閱下面的 KB 文章:

Q184291 PRB: COM Objects Fail to Print When Called From ASP(英文)
Q217144 INFO: Difficulties Using Net APIs in ISAPI and ASP COM Objects(英文)  
Q207671 HOWTO: Accessing Network Files from IIS Applications(英文)  
詳細信息
有關安全性的幾點考慮:

啟用哪種 IIS 身份驗證方法?
您的 Web 應用程序是進程內的還是進程外的?
如果組件以 MTS 或 COM+ 注冊,它是在“服務器”上還是在庫軟件包中?
您正在調用本地 DLL、遠程 DLL、本地 EXE、遠程 EXE 嗎?
有關安全性的詳細說明超出了本文的范圍。但是,由于這個主題的復雜性,下面的文章對從 ASP 組件角度理解問題有很大幫助:

Securing a Web-based Microsoft Transaction Server Application(英文)
Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions(英文)  
Q217202 PRB: CGI Applications and IIS OOP Applications May Fail(英文)  
下文很好地概述了 IIS 如何處理安全性:

Authentication and Security for Internet Developers(英文)
Server.CreateObject 與 CreateObject
建議
使用 Server.CreateObject。如果正在使用 MTS/COM+ 庫軟件包,請使用 Server.CreateObject 來避免線程阻塞。

為什么
CreateObject 相當于通過腳本引擎調用 CoCreateInstance。如果使用 CreateObject 而不是 Server.CreateObject,將發生下面情況:

ASP 不能識別該對象。
OnStartPage/OnEndPage 頁面方法沒有調用。
ASP 不知道對象的線程模型。
Server.CreateObject 相當于 GetObjectContext.CreateInstance。這表示 ASP 清楚該對象并知道它的線程模型。另外,如果 ASP 頁面是事務性的,則通過調用 Server.CreateObject 可使組件與 ASP 頁面在同一事務中。(請注意,事務性的頁面可能意味著可避免的業務規則與表達層的耦合。)

常見的陷阱
如果對象處于防火墻后面,可能需要調用 CreateObject。請參閱 Q193230 PRB: Server.CreateObject Fails when Object is Behind Firewall(英文)  以獲得詳細信息。

詳細信息
雖然在 IIS 4.0 下面 CreateObject比 Server.CreateObject 快,但在 IIS 5.0 下性能是相同的。同樣,如果正在使用 MTS/COM+ 庫軟件包/應用程序, Server.CreateObject 可防止線程阻塞。

傳遞參數
建議
聲明 Out 參數為 Variant。在 Visual Basic 術語中,這表示按引用 參數應該為 Variant。按值傳遞的參數(In 參數)不限于 Variant,但必須與 Variant 兼容。

為什么
腳本客戶機使用 Variant。 COM 服務器可使用指定的數據類型。當您將指定的數據類型按值傳遞給 COM 服務器時, COM 服務器可以毫無問題地接收。但除 Variant 外,其他按引用參數無法“回送”給 ASP 腳本。

常見的陷阱
最常見的錯誤之一是“類型不匹配”。這通常是因為按引用 傳遞到 COM 對象的變量不是 Variant。通常的解決方法是按值傳遞參數或者將參數變為 Variant。

詳細信息
如果要在多臺計算機上分布組件或在進程外運行它們,可能看到按值 傳遞參數獲得的顯著性能。按引用傳遞將在進程或計算機間造成更多的編組開銷,因為數據必須往復發送。如果實際上并不需要按引用傳遞參數時, 按值傳遞參數的正確性和有效性也是一個問題。注意,在默認情況下 Visual Basic 按引用傳遞參數。

下面的 KB 文章討論將參數從 ASP 傳遞到 COM 對象:

Q197956 PRB: Passing Parameters By Reference to a VB COM Object(英文)  
Q197957 PRB: Passing Parameters By Reference to a VC COM Object(英文)  
事件
建議
避免調用等待其他組件返回事件的組件。

組件方法應盡快返回對 ASP 的執行。請考慮使用“MSMQ”或“COM+ 排隊組件” 來提供異步調用 — 或當要做的工作正長時間運行并且不必聯機運行時。

請異步地分派工作項目,而不要讓 ASP 等待長時間運行的進程結束。然后您將從 ASP 給客戶機返回一個響應。一旦工作項目完成,您可以用電子郵件或其他方法通知客戶機(請參閱下面內容)。

為什么
ASP 并不是為處理事件設計的。為了優化服務器性能,請盡快返回對 HTTP 請求的響應。

常見的陷阱
循環檢查服務器上的狀態標識并不是一種提供瀏覽器通知的“服務器友好”方法。

詳細信息
通常開發人員關注事件的原因是為了給瀏覽器提供關于在服務器上處理的工作的通知。雖然可以開發出精致的瀏覽器通知系統,如通過套接字在服務器上打開另一個端口,但許多開發人員通過下面的技術實現他們的需要:

使用電子郵件通知
在頁面中添加 Meta-Refresh 標記以輪詢服務器。
發送到瀏覽器的連接,并讓客戶機手動檢查未決請求的狀態。
下面的 KB 文章討論這些問題:

Q243547 PRB: ASP Does Not Provide Progress Notifications to Client Browsers(英文)  
Q243546 PRB: ASP Does Not Support Events(英文)  
OnStartPage/OnEndPage 與 ObjectContext
建議
在 IIS 4.0 及更高版本中使用 ObjectContext 訪問 ASP 內置對象(如響應、請求、服務器等等)。無論何時請盡量避免使用 ScriptingContext 對象、 OnStartPage 和 OnEndPage。

為什么
OnStartPage、OnEndPage 和 ScriptingContext 對象是用于遺留支持的。

常見的陷阱
如果插入 ASP 對象,ATL 向導將使用 OnStartPage 和 OnEndPage。

詳細信息
用“雙重”或“單元”模型組件獲取 ObjectContext 而無須以 MTS/COM+ 進行注冊。對于本地的 ActiveX EXE 不能使用 ObjectContext,所以需要使用 OnStartPage/OnEndPage。若要使用“自由線程”和“單線程”組件環境,需要以 MTS/COM+ 注冊這些組件。否則需要使用 OnStartPage。

錯誤處理
建議
錯誤處理器將期待著意外情況。捕獲應用程序每一部分中的錯誤,并盡可能完整地記錄下來。好的日志對于跟蹤、隔離和疑難解答有重大意義。這些日志可以實現為文本文件或寫入 NT 事件日志。在多數情況下,邊添加信息邊“冒出”錯誤,是通知調用者已經出錯的有效途徑。冒出錯誤使調用者可自由地與處理具體問題的具體方法交互。

當記錄錯誤時,提供盡可能多的有用信息至關重要。考慮包括以下幾點:

當前用戶環境(調用 Win32 API — GetUserName)
當前線程 ID(調用 Win32 API — GetCurrentThreadId 或 Visual Basic 中的 App.ThreadId)
當前時間(使用 Win32 GetTickCount,得到的是毫秒數據)
傳遞至方法的參數
錯誤源,包括方法名
為什么
根據我們的經驗,好的錯誤處理和記錄是隔離和診斷運行時問題的最有效途徑。

常見的陷阱
還記得 ASP 0115 錯誤嗎? 但愿您不用和它苦苦斗爭了。 如果還在為其苦惱, 建議您參閱 Troubleshooting with the IIS Exception Monitor(英文)。

ASP 0115 錯誤不是總出現在開發人員的控制下 — 但多數時候是這樣,錯誤處理可能已經避免了很多這種情況的發生,還可能在其發生時幫助解決了它們。

總之,最大的問題為跳過錯誤處理或沒有包含有用的診斷信息。

在 COM 中,罕有跨越組件的界限傳播異常的情況。捕獲異常 — 但返回 HResults,以向調用者傳送失敗信息。

詳細信息
下面的文章提供了有關有效錯誤處理的應用示例:

Fitch & Mather Stocks: Web Application Design(英文)
全局變量
建議
避免在組件中使用全局變量。在 Visual Basic 術語中,這表示在標準的 .BAS 模塊中沒有 Public 或 Global 變量。

為什么
Global 變量并不是真正意義上的全局。每個線程都有自己的副本。如果幾種方法恰好在同一線程中執行,它們將看到相同的變量;否則它們訪問的是這些變量的不同副本。這意味著您可能給一個全局變量賦了值(在線程 A 中),但其另一個用戶(在線程 B 中執行)看不到新值。

其原因是 Visual Basic 內部使用“線程本地存儲 (TLS)”來引用全局變量。這意味著每個線程都有自己的 Public 變量的副本,并且因為它存在多個副本,全局數據并不是真正“全局的”。也就是說,恰好在同一線程中運行的用戶才會訪問到同一個變量,不論他們是否期望如此。

常見的陷阱
如果在標準 .BAS 模塊中使用 Public 變量,當不同線程向還想使用同一個數據的不同用戶請求提供服務時,這個數據可能已被破壞了。

詳細信息
Visual Basic Programmer's Journal(英文)1999 年 6 月版中由 Matt Curland 所著的下列文章 是必讀的:

Black Belt Programming - Create Worker Threads in DLLs
COMponent Builder - Create Efficient Multithreaded Apps
另外,下面 Daniel Appleman 所著的文章 很好地概述了 Visual Basic 中多線程的工作原理: A Thread to Visual Basic(英文)

分布組件
建議
組件的分布涉及性能、可伸縮性和安全性問題。相同組件的不同分布可能產生更高性能、更易伸縮和更易管理的配置。

下面的指南有助于提高在多臺計算機上分布組件時的性能和可伸縮性:

在 IIS 的同一框圍中運行引用 ASP 內置對象的組件。
在應用程序服務器上運行數據庫組件。
在哪一臺計算機上運行業務組件很重要。倘若您去掉業務組件與任何 ASP 的耦合,您就可以根據您的應用程序設計、計算機的可用性和測試,來自由選擇。
當然還有例外。但這些是指南的好的開始。

為什么
跨計算機分布組件使應用程序可以滿足伸縮性要求。其次,上面提到的指南有助于實現應用程序的性能和可伸縮性目標。

對象引用 ASP 內置對象,會與您的 Web 服務器進行大量通訊,并且由于它們是表達層的一部分,因此它們就在那里。

數據庫或對數據極為敏感的邏輯可能在數據庫的存儲過程中。將數據訪問組件置于應用程序服務器而非數據庫上,避免了組件之間的昂貴調用。相反,數據訪問組件則利用 SQL Server 通信(如 TCP/IP)與數據庫更有效地通信。

常見的陷阱
您應當嘗試避免下列問題:

當橫向可伸縮性較為合適之后,繼續追求從您的計算機開始的縱向可伸縮性。
忽視了防火墻的考慮(幫自己一個忙。如果計算機間的產品環境有防火墻,則在測試方案中添加防火墻。)
將引用 ASP 內置對象的組件置于與 IIS 服務器分離的計算機上(回調和編組 ASP 內置對象的成本很高。)
使用組件內部的后期綁定(這產生對 GetIdsOfNames 的額外調用,這在分布式應用程序中可能很昂貴。盡量使用早期綁定。)
按引用傳遞參數(這產生更多的編組開銷。盡可能“按值”傳遞參數。)
成功地從 IIS 調用遠程 MTS 組件也可能很棘手。一個簡單有效、既提高性能又簡化安全性問題的解決方案,是調用中間的 MTS/COM+ 軟件包/應用程序。早期綁定可減少網絡路程段,提高性能。如果您使用“服務器”軟件包/應用程序,則可以設置軟件包/應用程序的運行標識。這個技術將在 KB 文章 159311 Instantiating Remote Components in Microsoft Transaction Server and Internet Information Server 中討論。

詳細信息
如果已經解耦了服務,特別是已使 ASP 在業務組件之外,則分布將相當靈活。您就可以更多地考慮框圍,并根據需要分散組件以解決隨之而來的可伸縮性和性能問題。如何知道?進行測試。如何測試?請看下面的基本指南:

若要測試 Web 站點的可靠性,請剖析計算機并檢查錯誤。
若要測試性能,請查看每秒可處理多少 ASP 請求。
若要測試可伸縮性,請設置每秒需要處理多少 ASP 請求的閥值。用重要的工具考驗應用程序——添加用戶直到性能壞到不能接受為止。
加強對應用程序的測試非常重要,因為需要暴露運轉條件和單瀏覽器測試中不會出現的其他問題。
有關對應用程序加強測試的詳細內容, 請參閱 I Can't Stress It Enough -- Load Test Your ASP Application(英文)。

結論
正如所見,有一些事情在整個開發中需要時刻注意。在此,應用程序指南所涉及的諸多因素已全部闡明,因為它們有助于徹底避免嚴重失誤。在整個開發周期中遵循本文中略述的幾個指南,不僅可以避免一些額外的工作,而且能夠提交可收縮的、可靠的、高性能的基于 ASP 組件的解決方案。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 久久久精品免费热线观看 | 乱码中文在线观看 | 亚洲一区二区三区免费看 | 波多野结衣一区二区三区在线观看 | 久久视频这里只有精品35 | 久久综合97色综合网 | 久久久99精品免费观看精品 | 成人精品亚洲 | 亚洲精品一区二区三区国产 | 狠狠操视频网站 | 亚洲精品视频专区 | www.在线免费观看 | 初高中生洗澡福利视频网站 | 色综合色综合色综合色综合 | 99国产精品免费观看视频 | 中文字幕在线不卡 | 天天摸日日碰天天看免费 | 日韩精品一区二区三区不卡 | 天天草天天干 | 在线观看一区二区精品视频 | 竹菊影视一区二区三区 | 日本国产免费一区不卡在线 | 国产成人精品免费视频大全五级 | www亚洲精品| 亚洲精品二区 | 国产乱淫a∨片免费视频 | 最新国产美女一区二区三区 | 亚洲四虎| 天天干天天爱天天射 | 日韩精选在线 | 久草剧场 | 999成人国产精品 | 成年人免费在线观看网站 | 亚洲欧美日韩综合在线一区二区三区 | 日干夜干天天干 | 国产一极毛片 | 亚洲一二三区在线观看 | 免费一级毛片不卡在线播放 | 亚洲人成伊人成综合网久久久 | 999久久久国产 | 午夜影院在线观看免费 |