ASP.NET中常用的26個優化性能方法(3)_.Net教程
推薦:如何構造一個C#語言的爬蟲程序C#特別適合于構造蜘蛛程序,這是因為它已經內置了HTTP訪問和多線程的能力,而這兩種能力對于蜘蛛程序來說都是非常關鍵的。下面是構造一個蜘蛛程序要解決的關鍵問題: 、 HTML分析:需要
首選機制是推遲對象的創建,直到以后在 STA 線程下執行上述代碼,如下面的例子所示。
<%@ Page Language="VB" ASPCompat="true" %> <script. runat=server> Dim myComp Public Sub Page_Load() myComp = new MySTAComponent() myComp.Name = "Bob" End Sub </script> <html> <% Response.Write(myComp.SayHello) %> </html> |
推薦的做法是在需要時或者在 Page_Load 方法中構造任何 COM 組件和外部資源。永遠不要將任何 STA COM 組件存儲在可以由構造它的線程以外的其他線程訪問的共享資源里。這類資源包括像緩存和會話狀態這樣的資源。即使 STA 線程調用 STA COM 組件,也只有構造此 STA COM 組件的線程能夠實際為該調用服務,而這要求封送處理對創建者線程的調用。此封送處理可能產生重大的性能損失和可伸縮性問題。在這種情況下,請研究一下使 COM 組件成為 MTA COM 組件的可能性,或者更好的辦法是遷移代碼以使對象成為托管對象。
11. 將調用密集型的 COM 組件遷移到托管代碼
.NET Framework 提供了一個簡單的方法與傳統的 COM 組件進行交互。其優點是可以在保留現有投資的同時利用新的平臺。但是在某些情況下,保留舊組件的性能開銷使得將組件遷移到托管代碼是值得的。每一情況都是不一樣的,決定是否需要遷移組件的最好方法是對 Web 站點運行性能測量。建議您研究一下如何將需要大量調用以進行交互的任何COM 組件遷移到托管代碼。許多情況下不可能將舊式組件遷移到托管代碼,特別是在最初遷移 Web 應用程序時。在這種情況下,最大的性能障礙之一是將數據從非托管環境封送到托管環境。因此,在交互操作中,請在任何一端執行盡可能多的任務,然后進行一個大調用而不是一系列小調用。例如,公共語言運行庫中的所有字符串都是 Unicode 的,所以應在調用托管代碼之前將組件中的所有字符串轉換成 Unicode 格式。另外,一處理完任何 COM 對象或本機資源就釋放它們。這樣,其他請求就能夠使用它們,并且最大限度地減少了因稍后請求垃圾回收器釋放它們所引起的性能問題。
12. 在 Visual Basic .NET 或 JScript. 代碼中使用早期綁定
以往,開發人員喜歡使用 Visual Basic、VBScript. 和 JScript. 的原因之一就是它們所謂“無類型”的性質。變量不需要顯式類型聲明,并能夠簡單地通過使用來創建它們。當從一個類型到另一個類型進行分配時,轉換將自動執行。不過,這種便利會大大損害應用程序的性能。Visual Basic 現在通過使用 Option Strict 編譯器指令來支持類型安全編程。為了向后兼容,默認情況下,ASP.NET 不啟用該選項。但是,為了得到最佳性能,強烈建議在頁中啟用該選項。若要啟用 Option Strict,請將 Strict 屬性包括在 @ Page 指令中,或者,對于用戶控件,請將該屬性包括在 @ Control 指令中。下面的示例演示了如何設置該屬性,并進行了四個變量調用以顯示使用該屬性是如何導致編譯器錯誤的。
<%@ Page Language="VB" Strict="true" %> <% Dim B Dim C As String ' This will cause a compiler error. A = "Hello" ' This will cause a compiler error. B = "World" ' This will not cause a compiler error. C = "!!!!!!" ' But this will cause a compiler error. C = 0 %> |
JScript. .NET 也支持無類型編程,但它不提供強制早期綁定的編譯器指令。若發生下面任何一種情況,則變量是晚期綁定的:被顯式聲明為 Object,是無類型聲明的類的字段,是無顯式類型聲明的專用函數或方法成員,并且無法從其使用推斷出類型。最后一個差別比較復雜,因為如果 JScript. .NET 編譯器可以根據變量的使用情況推斷出類型,它就會進行優化。在下面的示例中,變量 A 是早期綁定的,但變量 B 是晚期綁定的。
var A; var B; A = "Hello"; B = "World"; B = 0; |
為了獲得最佳的性能,當聲明 JScript. .NET 變量時,請為其分配一個類型。例如,var A : String。
分享:ASP.NET MVC :實現我們自己的視圖引擎在ASP.NET MVC的一個開源項目MvcContrib中,為我們提供了幾個視圖引擎,例如NVelocity, Brail, NHaml, XSLT。那么如果我們想在ASP.NET MVC中實現我們自己的一個視圖引擎,我們應該要怎么做呢?
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-ASP.NET中常用的26個優化性能方法(3)
。