人生的抉擇—aspx、ashx、asmx文件處理請求效率比較

 導語:
     人生老是面臨着許多抉擇許多困惑!做爲一名「攻城師」或「程序猿」的咱們,工做的時候更是如此。你曾經是否苦惱過在系統中使用哪一種文件編寫客戶端請求最合適或最高效呢?aspx、ashx、asmx到底該如何選擇呢?若是有過而且沒有時間靜下來好好思考過這些問題(咱們老是這樣),那麼請進來我這坐坐,一塊兒品味一下,放鬆心情!
     aspx文件也就是普通的頁面文件,ashx就是通常處理程序,他沒有頁面部分,asmx文件也就是輕量級的WebService。假如咱們須要一個處理某個請求而後返回一個結果的程序,那麼你會選擇什麼樣的文件來編碼呢?總的來講,這三種文件各有各的好處,我如今就從客戶端發起一個get請求,服務端返回一個「Hello World」字符串做爲本次請求的結果,這三種文件處理效率上作個比較分析。
     咱們實驗的準備環境是,IIS7.5,三種文件只是簡單的返回一個「Hello World」字符串,不要多寫別的代碼,aspx文件就採用直接寫在頁面上,也不要指定什麼後臺處理類了,同時也去掉多餘的HTML代碼。如圖:
 
 
      經過apache輕量級的測試工具ab,模擬10個併發用戶共請求1000次分別得出出結果如圖:
      一、aspx
 
     二、ashx
 
     三、asmx
      經過觀察三者中的Requests per second(服務器每秒處理請求數)以及Time per request<mean,across all concurrent requests>(服務端平均處理每一個請求耗時)能夠得知以下結論:
        aspx與ashx處理效率差很少,但ashx還是首選。asmx處理效率很是低下只有前者的1/3,故在高性能環境下慎用。
道理
一、爲啥ashx是首選?
   ashx比較輕量級,沒有aspx實現的複雜,他只是一個簡單服務端處理請求程序,而aspx框架須要處理更多的額外的東西,加上aspx屬於動態編譯,首次訪問速度會很是慢,本次試驗已經去掉了這個階段,另外經過上面分析數據可知,即便我去掉了多餘的內容,其實際傳輸內容也比ashx多,關於aspx頁面默認Session加鎖,致使同一個用戶一次只能處理一個任務的問題,我也測試過關閉Session的狀況下,獲得的結果是同樣的,這個緣由是由於本次測試處理時間很短,因此能夠忽略不計對Session加鎖帶來的延時問題。實際狀況下,不須要Session就關閉之,能夠提升單個用戶的併發量。但二者處理效率整體來講很是接近,你們能夠根據本身的須要抉擇。
二、爲啥asmx效率介麼低?
   這是一個SOA範疇的程序,遵照一些SOA的標準協議,服務端收到請求後返回的結果不能直接返回,還須要使用標準的SOAP協議組織好數據,相似一個XML文檔結構的返回流,從分析結果圖中也能夠看出來,他返回的數據量比前者高出一位數,總之基於序列化和多餘的XML文檔數據等使得他處理請求的能力遠不如前者。
相關文章
相關標籤/搜索