• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    編寫高性能WEB 應用程序的10 個技巧

    發布: 2009-4-16 09:27 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 47次 | 進入軟件測試論壇討論

    領測軟件測試網

    數據層性能


    談到應用程序的性能調整,有一個試紙性的測試可用來對工作進行優先級劃分:代碼是否訪問數據庫?如果是,頻率是怎樣的?請注意,這一相同測試也可應用于使用 Web 服務或遠程處理的代碼,但是本文對這些內容未做講述。

    如果某個特定的代碼路徑中必需進行數據庫請求,并且您認為要首先優化其他領域(如字符串操作),則請停止,然后執行這個試紙性測試。如果您的性能問題不是非常嚴重的話,最好花一些時間來優化一下與數據庫、返回的數據量、進出數據庫的往返頻率相關的花費時間。

    了解這些常規信息之后,我們來看一下可能會有助于提高應用程序性能的十個技巧。首先,我要講述可能會引起最大改觀的更改。


    技巧 1 — 返回多個結果集


    仔細查看您的數據庫代碼,看是否存在多次進入數據庫的請求路徑。每個這樣的往返都會降低應用程序可以提供的每秒請求數量。通過在一個數據庫請求中返回多個結果集,可以節省與數據庫進行通信所需的總時間長度。同時因為減少了數據庫服務器管理請求的工作,還會使得系統伸縮性更強。

    雖然可以使用動態 SQL 返回多個結果集,但是我首選使用存儲過程。關于業務邏輯是否應該駐留于存儲過程的問題還存在一些爭議,但是我認為,如果存儲過程中的邏輯可以約束返回數據的話(縮小數據集的大小、縮短網絡上所花費時間,不必篩選邏輯層的數據),則應贊成這樣做。

    使用 SqlCommand 實例及其 ExecuteReader 方法填充強類型的業務類時,可以通過調用 NextResult 將結果集指針向前移動。圖 1 顯示了使用類型類填充幾個 ArrayList 的示例會話。只從數據庫返回您需要的數據將進一步減少服務器上的內存分配。


    技巧 2 — 分頁的數據訪問


    ASP.NET DataGrid 具有一個很好的功能:數據分頁支持。在 DataGrid 中啟用分頁時,一次會顯示固定數量的記錄。另外,在 DataGrid 的底部還會顯示分頁 UI,以便在記錄之間進行導航。該分頁 UI 使您能夠在所顯示的數據之間向前和向后導航,并且一次顯示固定數量的記錄。

    還有一個小小的波折。使用 DataGrid 的分頁需要所有數據均與網格進行綁定。例如,您的數據層需要返回所有數據,那么 DataGrid 就會基于當前頁篩選顯示的所有記錄。如果通過 DataGrid 進行分頁時返回了 100,000 個記錄,那么針對每個請求會放棄 99,975 個記錄(假設每頁大小為 25 個記錄)。當記錄的數量不斷增加時,應用程序的性能就會受到影響,因為針對每個請求必須發送越來越多的數據。

    要編寫性能更好的分頁代碼,一個極佳的方式是使用存儲過程。圖 2 顯示了針對 Northwind 數據庫中的 Orders 表進行分頁的一個示例存儲過程。簡而言之,您此時要做的只是傳遞頁索引和頁大小。然后就會計算合適的結果集,并將其返回。

    在社區服務器中,我們編寫了一個分頁服務器控件,以完成所有的數據分頁。您將會看到,我使用的就是技巧 1 中討論的理念,從一個存儲過程返回兩個結果集:記錄的總數和請求的數據。

    返回記錄的總數可能會根據所執行查詢的不同而有所變化。例如,WHERE 子句可用來約束返回的數據。為了計算在分頁 UI 中顯示的總頁數,必須了解要返回記錄的總數。例如,如果總共有 1,000,000 條記錄,并且要使用一個 WHERE 子句將其篩選為 1000 條記錄,那么分頁邏輯就需要了解記錄的總數才能正確呈現分頁 UI。


    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    62/6<123456>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>