日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

ASP.NET中常用的26個(gè)優(yōu)化性能方法(3)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:如何構(gòu)造一個(gè)C#語(yǔ)言的爬蟲程序
C#特別適合于構(gòu)造蜘蛛程序,這是因?yàn)樗呀?jīng)內(nèi)置了HTTP訪問和多線程的能力,而這兩種能力對(duì)于蜘蛛程序來說都是非常關(guān)鍵的。下面是構(gòu)造一個(gè)蜘蛛程序要解決的關(guān)鍵問題:   ⑴ HTML分析:需要

首選機(jī)制是推遲對(duì)象的創(chuàng)建,直到以后在 STA 線程下執(zhí)行上述代碼,如下面的例子所示。


<%@ 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>


推薦的做法是在需要時(shí)或者在 Page_Load 方法中構(gòu)造任何 COM 組件和外部資源。永遠(yuǎn)不要將任何 STA COM 組件存儲(chǔ)在可以由構(gòu)造它的線程以外的其他線程訪問的共享資源里。這類資源包括像緩存和會(huì)話狀態(tài)這樣的資源。即使 STA 線程調(diào)用 STA COM 組件,也只有構(gòu)造此 STA COM 組件的線程能夠?qū)嶋H為該調(diào)用服務(wù),而這要求封送處理對(duì)創(chuàng)建者線程的調(diào)用。此封送處理可能產(chǎn)生重大的性能損失和可伸縮性問題。在這種情況下,請(qǐng)研究一下使 COM 組件成為 MTA COM 組件的可能性,或者更好的辦法是遷移代碼以使對(duì)象成為托管對(duì)象。

11. 將調(diào)用密集型的 COM 組件遷移到托管代碼

.NET Framework 提供了一個(gè)簡(jiǎn)單的方法與傳統(tǒng)的 COM 組件進(jìn)行交互。其優(yōu)點(diǎn)是可以在保留現(xiàn)有投資的同時(shí)利用新的平臺(tái)。但是在某些情況下,保留舊組件的性能開銷使得將組件遷移到托管代碼是值得的。每一情況都是不一樣的,決定是否需要遷移組件的最好方法是對(duì) Web 站點(diǎn)運(yùn)行性能測(cè)量。建議您研究一下如何將需要大量調(diào)用以進(jìn)行交互的任何COM 組件遷移到托管代碼。許多情況下不可能將舊式組件遷移到托管代碼,特別是在最初遷移 Web 應(yīng)用程序時(shí)。在這種情況下,最大的性能障礙之一是將數(shù)據(jù)從非托管環(huán)境封送到托管環(huán)境。因此,在交互操作中,請(qǐng)?jiān)谌魏我欢藞?zhí)行盡可能多的任務(wù),然后進(jìn)行一個(gè)大調(diào)用而不是一系列小調(diào)用。例如,公共語(yǔ)言運(yùn)行庫(kù)中的所有字符串都是 Unicode 的,所以應(yīng)在調(diào)用托管代碼之前將組件中的所有字符串轉(zhuǎn)換成 Unicode 格式。另外,一處理完任何 COM 對(duì)象或本機(jī)資源就釋放它們。這樣,其他請(qǐng)求就能夠使用它們,并且最大限度地減少了因稍后請(qǐng)求垃圾回收器釋放它們所引起的性能問題。

12. 在 Visual Basic .NET 或 JScript. 代碼中使用早期綁定

以往,開發(fā)人員喜歡使用 Visual Basic、VBScript. 和 JScript. 的原因之一就是它們所謂“無類型”的性質(zhì)。變量不需要顯式類型聲明,并能夠簡(jiǎn)單地通過使用來創(chuàng)建它們。當(dāng)從一個(gè)類型到另一個(gè)類型進(jìn)行分配時(shí),轉(zhuǎn)換將自動(dòng)執(zhí)行。不過,這種便利會(huì)大大損害應(yīng)用程序的性能。Visual Basic 現(xiàn)在通過使用 Option Strict 編譯器指令來支持類型安全編程。為了向后兼容,默認(rèn)情況下,ASP.NET 不啟用該選項(xiàng)。但是,為了得到最佳性能,強(qiáng)烈建議在頁(yè)中啟用該選項(xiàng)。若要啟用 Option Strict,請(qǐng)將 Strict 屬性包括在 @ Page 指令中,或者,對(duì)于用戶控件,請(qǐng)將該屬性包括在 @ Control 指令中。下面的示例演示了如何設(shè)置該屬性,并進(jìn)行了四個(gè)變量調(diào)用以顯示使用該屬性是如何導(dǎo)致編譯器錯(cuò)誤的。


<%@ 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 也支持無類型編程,但它不提供強(qiáng)制早期綁定的編譯器指令。若發(fā)生下面任何一種情況,則變量是晚期綁定的:被顯式聲明為 Object,是無類型聲明的類的字段,是無顯式類型聲明的專用函數(shù)或方法成員,并且無法從其使用推斷出類型。最后一個(gè)差別比較復(fù)雜,因?yàn)槿绻?JScript. .NET 編譯器可以根據(jù)變量的使用情況推斷出類型,它就會(huì)進(jìn)行優(yōu)化。在下面的示例中,變量 A 是早期綁定的,但變量 B 是晚期綁定的。


var A;
  var B;
  A = "Hello";
  B = "World";
  B = 0;

為了獲得最佳的性能,當(dāng)聲明 JScript. .NET 變量時(shí),請(qǐng)為其分配一個(gè)類型。例如,var A : String。

分享:ASP.NET MVC :實(shí)現(xiàn)我們自己的視圖引擎
在ASP.NET MVC的一個(gè)開源項(xiàng)目MvcContrib中,為我們提供了幾個(gè)視圖引擎,例如NVelocity, Brail, NHaml, XSLT。那么如果我們想在ASP.NET MVC中實(shí)現(xiàn)我們自己的一個(gè)視圖引擎,我們應(yīng)該要怎么做呢?

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程