最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET編程中的十大技巧第1/2頁(yè)

 更新時(shí)間:2006年09月18日 00:00:00   作者:  
在本篇文件中,我們將討論編程人員在使用ASP.NET開(kāi)發(fā)應(yīng)用程序時(shí)需要注意的10個(gè)技巧,這些技巧涉及從缺省的控件、表單名的改變到StringBuilder類(lèi)的使用,有助于編程人員能夠盡快地適應(yīng).NET環(huán)境。 

1、在使用Visual Studio .NET時(shí),除直接或非引用的對(duì)象外,不要使用缺省的名字。 

.NET帶來(lái)的好處之一是所有的源代碼和配置文件都是純文本文件,能夠使用Notepad或WordPad等任意的文本編輯器進(jìn)行編輯。如果不愿意,我們并非一定要使用Visual Studio .NET作為集成開(kāi)發(fā)環(huán)境。但使用了Visual Studio .NET,我們可以在Windows文件管理器中看到文件,或在Visual Studio .NET之外從文本編輯器中瀏覽文件的內(nèi)容。 
使用Visual Studio .NET作為集成開(kāi)發(fā)環(huán)境有許多好處,其中最顯著的好處是它極大地提高了生產(chǎn)效率。使用Visual Studio. NET,我們能夠在付出較小代價(jià)的情況下更快地開(kāi)發(fā)軟件。作為集成開(kāi)發(fā)環(huán)境一部分的IntelliSense提供自動(dòng)的代碼完成、在輸入方法或函數(shù)時(shí)提供動(dòng)態(tài)幫助、語(yǔ)法錯(cuò)誤的實(shí)時(shí)提示,以及其他能夠提高生產(chǎn)效率的功能。 
象其他復(fù)雜的工具那樣,在學(xué)會(huì)如何充分發(fā)揮它的作用和掌握其“習(xí)性”前,Visual Studio .NET也會(huì)使我們產(chǎn)生一種挫折感。有時(shí),它象一個(gè)難以了解的黑盒子,會(huì)生成大量的文件和許多無(wú)用的代碼。 
Visual Studio .NET的一個(gè)功能是,無(wú)論是類(lèi)、控件或表單中的對(duì)象,它都能夠?yàn)樾聦?duì)象提供缺省名字。例如,如果我們創(chuàng)建了一個(gè)新的ASP.NET Web Application,其缺省的名字將是WebApplication1。我們可以在“新工程”對(duì)話框中方便地改變?cè)搼?yīng)用的名字,但同時(shí)改變的只是該應(yīng)用程序的名字空間的名字及其所在的虛擬目錄,源代碼文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs(C#工程)或WebForm1.aspx.vb(VB.NET工程)。 

我們可以在方案瀏覽器中改變ASPX和代碼使用的文件名字,但Web頁(yè)類(lèi)的名字仍然將是WebForm1。如果在該Web表單上生成一個(gè)按鈕,其缺省的名字將是Button1。事實(shí)上,所有控件的名字都是由控件的類(lèi)型和數(shù)字組成的。 
我們能夠,也應(yīng)該將應(yīng)用程序中所有的表單和控件的名字都修改成有意義的名字。對(duì)于較小的演示性程序而言,缺省的名字還能夠勝任,但如果應(yīng)用程序由多個(gè)表單,每個(gè)表單上有許多按鈕和標(biāo)簽時(shí),象frmStartup、frmDataEntry和frmReports這樣的表單名就比Form1、Form2和Form3這樣的名字更易于理解和維護(hù)。 
如果表單上控件要在代碼的其他地方引用,使它有一個(gè)有意義的名字就更重要了。btnOK、btnCancel和btnPrint這樣的名字使看代碼的人更容易理解,因而,也比名字為Button1、Button2、Button3這樣的控件更容易維護(hù)。 
修改一個(gè)工程中所有文件中出現(xiàn)的一個(gè)名字的一個(gè)好方法是,在Visual Studio .NET菜單中依次選擇“編輯”->“發(fā)現(xiàn)和替換”->“替換”命令。 
在看二周前編寫(xiě)的代碼時(shí),我們經(jīng)常就象第一次見(jiàn)到這些代碼一樣,因此使它們有一個(gè)有助于我們理解其含義的名字是十分有必要的。 


2、即使不使用Visual Studio .NET進(jìn)行編程,使用代碼支持文件也有利于提高應(yīng)用程序的性能 

在Web應(yīng)用程序、Web服務(wù)或Web控件等所有的ASP.NET Web工程中,Visual Studio .NET都使用代碼支持文件。代碼支持文件使工程具有更好的組織、模塊性,更適合多人組成的開(kāi)發(fā)團(tuán)隊(duì)。另外,它還會(huì)帶來(lái)性能的提高。 
代碼支持文件的內(nèi)容被編譯成一個(gè)組合文件中的類(lèi),一般是一個(gè)DLL文件,有時(shí)也可以是EXE文件。該文件駐留在應(yīng)用程序的組合體高速緩沖區(qū)中,在應(yīng)用程序啟動(dòng)時(shí),可以立即得到它。 
如果代碼是包含在<script>標(biāo)記中或ASPX文件代碼中,它仍然會(huì)被編譯成一個(gè)Web頁(yè)類(lèi)。在這種情況下,每當(dāng)該網(wǎng)頁(yè)在應(yīng)用程序?qū)υ捴械谝淮渭虞d時(shí),都需要重新進(jìn)行編譯,被編譯的類(lèi)就會(huì)駐留在內(nèi)存中。每當(dāng)計(jì)算機(jī)啟動(dòng)、IIS停止、重新啟動(dòng)或者源代碼、配置文件改變時(shí),該文件必須重新編譯。盡管不大,但這樣引起的性能損耗也是相當(dāng)可觀的。 


3、盡量減少表單回送 

每當(dāng)點(diǎn)擊Web網(wǎng)頁(yè)上的Button、LinkButton或ImageButton控件時(shí),表單就會(huì)被發(fā)送到服務(wù)器上。如果控件的AutoPostBack屬性被設(shè)置為true,如果CheckBox、CheckBoxList等控件的狀態(tài)被改變后,也會(huì)使表單會(huì)發(fā)送回服務(wù)器。 
每次當(dāng)表單被發(fā)送回服務(wù)器,就會(huì)被重新加載,啟動(dòng)Page_Load事件,執(zhí)行Page_Load事件處理程序中的所有代碼。把網(wǎng)頁(yè)的初始化代碼放在這里是最合適不過(guò)的了。我們經(jīng)常會(huì)希望在每次加載網(wǎng)頁(yè)時(shí)執(zhí)行一些代碼,而希望只有在網(wǎng)頁(yè)第一次加載時(shí)執(zhí)行另一些代碼,甚至希望一些代碼在除首次加載外的每次加載時(shí)執(zhí)行。 
可以利用IsPostBack特性來(lái)完成這一功能。在網(wǎng)頁(yè)第一次加載時(shí),該屬性的值是false。如果網(wǎng)頁(yè)因回送而被重新加載,IsPostBack屬性的值就會(huì)被設(shè)置為true。通過(guò)測(cè)試,可以在任意時(shí)候執(zhí)行指定的代碼。下面是相關(guān)的C#代碼: 
protected void Page_Load(Object sender, EventArgs e) 

// 網(wǎng)頁(yè)每次加載時(shí),執(zhí)行的一些操作 
if (!IsPostBack) 

// 網(wǎng)頁(yè)第一次加載時(shí)執(zhí)行的操作 

else 

// 回送時(shí)執(zhí)行的操作 


// 網(wǎng)頁(yè)每次加載時(shí)執(zhí)行的操作 

我們希望盡量不引起回送(每次回送都會(huì)要求服務(wù)器進(jìn)行一系列的操作),即使引起回送后。也希望能夠執(zhí)行盡量少的操作。大規(guī)模、浪費(fèi)時(shí)間的操作(例如數(shù)據(jù)庫(kù)查找)尤其應(yīng)當(dāng)避免,因?yàn)樗鼈兡軌蜓娱L(zhǎng)應(yīng)用程序的響應(yīng)時(shí)間。 


4、使用StringBuilder類(lèi) 

字符串在.NET框架中是不可變的,這意味著改變字符串的操作符和方法會(huì)返回字符串的改變后的拷貝,這意味著性能還有提高的空間。當(dāng)進(jìn)行大量的字符串操作時(shí),使用StringBuilder類(lèi)就是一種比較好的選擇了。 
下面的C#代碼測(cè)試用二種方式從10000個(gè)子字符串中生成字符串所需要的時(shí)間。第一次使用了一個(gè)簡(jiǎn)單的字符串串聯(lián)操作;第二次使用了StringBuilder類(lèi)。要想查看結(jié)果字符串,可以去掉下面的代碼中注解行的注解符號(hào): 

<%@ Page Language="C#" %> 

<script runat="server"> 
void Page_Load(Object Source, EventArgs E) 

int intLimit = 10000; 
DateTime startTime; 
DateTime endTime; 
TimeSpan elapsedTime; 
string strSub; 
string strWhole = ""; 

// 首先執(zhí)行字符串連接操作 
startTime = DateTime.Now; 
for (int i=0; i < intLimit; i++) 

strSub = i.ToString(); 
strWhole = strWhole + " " + strSub; 

endTime = DateTime.Now; 
elapsedTime = endTime - startTime; 
lblConcat.Text = elapsedTime.ToString(); 
// lblConcatString.Text = strWhole; 

// 使用stringBuilder類(lèi)進(jìn)行同樣的操作 
startTime = DateTime.Now; 
StringBuilder sb = new StringBuilder(); 
for (int i=0; i < intLimit; i++) 

strSub = i.ToString(); 
sb.Append(" "); 
sb.Append(strSub); 

endTime = DateTime.Now; 
elapsedTime = endTime - startTime; 
lblBuild.Text = elapsedTime.ToString(); 
// lblBuildString.Text = sb.ToString(); 


</script> 

<html> 
<body> 
<form runat="server"> 

<h1>String Concatenation Benchmark</h1> 

Concatenation: 
<asp:Label 
id="lblConcat" 
runat="server"/> 

<br/> 

<asp:Label 
id="lblConcatString" 
runat="server"/> 

<br/> 
<br/> 

StringBuilder: 
<asp:Label 
id="lblBuild" 
runat="server"/> 

<br/> 

<asp:Label 
id="lblBuildString" 
runat="server"/> 

</form> 
</body> 
</html> 
二種方式的差別是相當(dāng)大的:使用StringBuilder類(lèi)的Append方法的速度比使用字符串連接的速度快近200倍。比較的結(jié)果如下所示: 
(圖:picture01) 

相關(guān)文章

  • 關(guān)于dotnet?替換?ASP.NET?Core?的底層通訊為命名管道的?IPC?庫(kù)的問(wèn)題

    關(guān)于dotnet?替換?ASP.NET?Core?的底層通訊為命名管道的?IPC?庫(kù)的問(wèn)題

    這篇文章主要介紹了dotnet?替換?ASP.NET?Core?的底層通訊為命名管道的?IPC?庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 如何使用Microsoft.Extensions.AI簡(jiǎn)化.NET中的AI集成

    如何使用Microsoft.Extensions.AI簡(jiǎn)化.NET中的AI集成

    Microsoft.Extensions.AI是一個(gè)創(chuàng)新的?.NET?庫(kù),它為平臺(tái)開(kāi)發(fā)人員提供了一個(gè)內(nèi)聚的?C#?抽象層,簡(jiǎn)化了與大型語(yǔ)言模型(LLMs)和嵌入等AI服務(wù)的交互,本文給大家介紹如何使用Microsoft.Extensions.AI簡(jiǎn)化.NET中的AI集成,感興趣的朋友一起看看吧
    2024-11-11
  • asp.net Md5的用法小結(jié)

    asp.net Md5的用法小結(jié)

    在ASP.NET中提供了加密的解決方法。在名字空間System.Web.Security中包含了類(lèi)FormsAuthentication,其中有一個(gè)方法HashPasswordForStoringInConfigFile。
    2009-11-11
  • C#頁(yè)碼導(dǎo)航顯示及算法實(shí)現(xiàn)代碼

    C#頁(yè)碼導(dǎo)航顯示及算法實(shí)現(xiàn)代碼

    C#頁(yè)碼導(dǎo)航算法要求:頁(yè)數(shù)小于等于1時(shí)不顯示;頁(yè)數(shù)大于10時(shí),自動(dòng)縮短,需要的朋友可以了解下
    2012-12-12
  • 老生常談.NET中的?COM?組件

    老生常談.NET中的?COM?組件

    COM組件中的接口是一組由組件實(shí)現(xiàn)的,提供給客戶(hù)使用的函數(shù),這篇文章主要介紹了.NET中的?COM?組件,需要的朋友可以參考下
    2022-10-10
  • VS2012實(shí)現(xiàn)簡(jiǎn)單登錄界面

    VS2012實(shí)現(xiàn)簡(jiǎn)單登錄界面

    這篇文章主要為大家詳細(xì)介紹了VS2012實(shí)現(xiàn)簡(jiǎn)單登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • ASP.NET Eval進(jìn)行數(shù)據(jù)綁定的方法

    ASP.NET Eval進(jìn)行數(shù)據(jù)綁定的方法

    ASP.NET Eval在數(shù)據(jù)綁定方面的應(yīng)用是眾所周知的,不過(guò)技術(shù)在發(fā)展,當(dāng)ASP.NET Eval 1.1變成ASP.NET Eval 2.0的時(shí)候,在操作的時(shí)候會(huì)有什么變化呢?
    2013-04-04
  • .NET?8新預(yù)覽版使用?Blazor?組件進(jìn)行服務(wù)器端呈現(xiàn)(項(xiàng)目體驗(yàn))

    .NET?8新預(yù)覽版使用?Blazor?組件進(jìn)行服務(wù)器端呈現(xiàn)(項(xiàng)目體驗(yàn))

    這篇文章主要介紹了.NET?8新預(yù)覽版使用?Blazor?組件進(jìn)行服務(wù)器端呈現(xiàn)(項(xiàng)目體驗(yàn)),這是 Blazor 統(tǒng)一工作的開(kāi)始,旨在使 Blazor 組件能夠滿(mǎn)足客戶(hù)端和服務(wù)器端的所有 Web UI 需求,需要的朋友可以參考下
    2023-04-04
  • 詳解ASP.NET MVC 解析模板生成靜態(tài)頁(yè)(RazorEngine)

    詳解ASP.NET MVC 解析模板生成靜態(tài)頁(yè)(RazorEngine)

    我們?cè)诤芏囗?xiàng)目開(kāi)發(fā)中會(huì)常常用到頁(yè)面靜態(tài)化,本篇文章主要介紹了詳解ASP.NET MVC 解析模板生成靜態(tài)頁(yè)(RazorEngine) ,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • 淺析.NET邏輯分層架構(gòu)

    淺析.NET邏輯分層架構(gòu)

    這篇文章主要介紹了.NET邏輯分層架構(gòu),分層架構(gòu)的三個(gè)基本層次分別為:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評(píng)論

建瓯市| 百色市| 吴江市| 靖西县| 芮城县| 尼勒克县| 西充县| 西乡县| 东方市| 南安市| 长顺县| 深圳市| 顺昌县| 准格尔旗| 闻喜县| 策勒县| 施甸县| 化隆| 汉源县| 乐安县| 海林市| 河西区| 常德市| 万宁市| 新津县| 赤壁市| 十堰市| 龙岩市| 肇州县| 湄潭县| 梅河口市| 同德县| 淮南市| 丰镇市| 越西县| 盐池县| 漾濞| 绍兴市| 娄底市| 肥乡县| 满城县|