aspx、ashx、asmx檔案處理請求效率比較
aspx檔案也就是普通的頁面檔案,ashx就是一般處理程式,他沒有頁面部分,asmx檔案也就是輕量級的WebService。假如我們需要一個處理某個請求然後返回一個結果的程式,那麼你會選擇什麼樣的檔案來編碼呢?總的來說,這三種檔案各有各的好處,我現在就從客戶端發起一個get請求,服務端返回一個“Hello World”字串作為本次請求的結果,這三種檔案處理效率上做個比較分析。
我們實驗的準備環境是,IIS7.5,三種檔案只是簡單的返回一個“Hello World”字串,不要多寫別的程式碼,aspx檔案就採用直接寫在頁面上,也不要指定什麼後臺處理類了,同時也去掉多餘的HTML程式碼。如圖:
通過apache輕量級的測試工具ab,模擬10個併發使用者共請求1000次分別得出出結果如圖:
1、aspx 2、ashx 3、asmx通過觀察三者中的Requests per second(伺服器每秒處理請求數)以及Time per request<mean,across all concurrent requests>(服務端平均處理每個請求耗時)可以得知如下結論:
aspx與ashx處理效率差不多,但ashx仍是首選。asmx處理效率非常低下只有前者的1/3,故在高效能環境下慎用。
道理1、為啥ashx是首選?
ashx比較輕量級,沒有aspx實現的複雜,他只是一個簡單服務端處理請求程式,而aspx框架需要處理更多的額外的東西,加上aspx屬於動態編譯,首次訪問速度會非常慢,本次試驗已經去掉了這個階段,另外通過上面分析資料可知,即使我去掉了多餘的內容,其實際傳輸內容也比ashx多,但兩者處理效率總體來說非常接近,大家可以根據自己的需要抉擇。
2、為啥asmx效率介麼低?
這是一個SOA範疇的程式,遵守一些SOA的標準協議,服務端收到請求後返回的結果不能直接返回,還需要使用標準的SOAP協議組織好資料,類似一個XML文件結構的返回流,從分析結果圖中也可以看出來,他返回的資料量比前者高出一位數,總之基於序列化和多餘的XML文件資料等使得他處理請求的能力遠不如前者。