2009-12-09 58 views
3

我聽說,我們應該避免默認ASP.Net控制,因爲他們是沉重關於視圖狀態等..ASP.Net控制VS HTML控制性能

所以我thinkink使用,HTML標記時我只想顯示信息,並使用Eval函數將服務器端代碼插入到href或src屬性中。

但我也聽說Eval函數不是最好的性能解決方案,因爲它使用反射來評估傳遞的參數。

所以我打算在簡單的html標籤中使用顯式強制轉換。

這是關於性能的最佳解決方案嗎?你有任何其他的消化/意見?

回答

8

而不是避免ASP.Net服務器控件,也許你可以這樣想:不要超出你的需要。

如果您可以使用HTML標記,請使用它。一個常用的ASP.Net控件是標籤。如果您需要使用不同於樣式表格式的格式,則只需使用標籤。如果您只是將文本置於HTML中,則無需擔心ViewState。同樣,許多人使用ASP.Net HyperLink時,他們真正需要的是一個<a>

隨着更復雜的控制,它變得更加複雜。例如,所有不同的網格。這些可能體積龐大,但寫起來很快。我們中一些從事大型企業高性能應用程序的人可能會編寫我們自己的HTML代碼來創建網格。

除非性能是您Web應用程序的重要因素,否則我會建議您明智地使用ASP.Net控件,用HTML代替簡單元素。然後,隨着您對這兩種控制更加熟悉,您對何時使用什麼的判斷將變得更加明瞭。

+0

很好的答案。謝謝。你介意我是否有機會用默認分頁來問哪一個更好:GridView或ListView? (儘管在大多數情況下我們使用自定義尋呼的DataGrid)。 – Marco 2009-12-09 20:58:31

+0

這些控件可能差別很大。你可以測試你的特定實現,通過每個網頁製作示例網頁,然後檢查呈現的HTML(在瀏覽器中使用View Source)。國際海事組織,你會通過優化你的數據檢索(存儲過程,表索引,只檢索你實際顯示的記錄等),從網格中獲得更多的整體性能增強。 – DOK 2009-12-09 21:09:58

+0

@DOK:Thx您的意見。是的,我們已經在做所有那些你提到的加上gZip,壓縮JS,壓縮CSS,壓縮圖片等......這只是一件需要考慮的事情。 – Marco 2009-12-09 21:16:17

3

如果你擔心這樣的事情,那麼你最好使用ASP.NET MVC(特別是關於ViewState)。您的應用程序目前是否存在性能問題,或者您是否擔心性能問題(過早優化器的禍害)?

+0

應用程序尚未完成,但我們預計每天有大量用戶(大約1000)。我們希望儘可能以最好的方式構建它,以避免在不久的將來重新制作部分程序的成本。 – Marco 2009-12-09 20:52:55

+1

不能說我會推薦切換到MVC框架,只是因爲viewstate。 MVC是一種旨在解決特定設計問題/目標的系統設計模式。消除viewstate是MVC實現的副作用,但不是MVC模式的設計目標之一。這是一個像使用大錘在牆上拍照的吊架 - 它可能工作,但這是否合適? Viewstate可以在應用程序級別,頁面級別或控制級別上禁用。如果我們有疑慮,我們會全面禁用它,並在需要時重新啓用。 – 2009-12-09 20:53:36

+5

一天1000個用戶對我來說聽起來不像一個大數字。 – RichardOD 2009-12-09 20:54:37

2

只需使用默認的ASP .Net控件並通過屬性菜單禁用視圖狀態。

直到您真正遇到問題時才擔心費用。

+1

+1用於過早優化。 – Mark 2009-12-09 20:51:45

+0

我明白你的答案,但我更喜歡避免問題而不是解決它們......修理它們有時比從頭開始修復它更昂貴。 – Marco 2009-12-09 20:55:32

+1

@Marco,但是花費時間手動滾動您的所有控件,只是爲了找出該網站在負載下仍然執行不力,因爲您忽略了其他一些架構考慮因素。 – 2009-12-09 21:04:30

2

關於使用ASP.Net控件vs Html控件,對於靜態內容我們可以使用Html控件。但是,如果您正在大量使用Eval將數據與控件綁定,那麼我們應該使用ASP.Net控件。

關於Gridview和listview之間的比較,我的經驗是,與Gridview相比,ListView更輕量。 Gridview提供了更多功能,但它也會大量加載頁面。

+0

Thx,很好的評論。 – Marco 2009-12-10 12:54:35