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文檔數據等使得他處理請求的能力遠不如前者。
aspx、ashx、asmx文件處理請求效率比較