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

ASP.NET程序設(shè)計的10大技巧(2)_.Net教程

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

推薦:.net 框架程序的設(shè)計
.net 平臺構(gòu)成 1 底層操操作系統(tǒng) windows 由于Web服務(wù)和使用Web服務(wù)的應(yīng)用程序仍然運行在計算機上,而且既然是計算機都 要有外設(shè),所以我們?nèi)匀恍枰粋操作系統(tǒng).. Windows添加了Xml支持.. Windows XP和Windows.net (現(xiàn)在改名為windows Server 2003 ) 所有版本

4. 使用StringBuilder類

字符串在.NET框架中是不可變的,這意味著改變字符串的操作符和方法會返回字符串的改變后的拷貝,這意味著性能還有提高的空間。當(dāng)進行大量的字符串操作時,使用StringBuilder類就是一種比較好的選擇了。

下面的C#代碼測試用二種方式從10000個子字符串中生成字符串所需要的時間。第一次使用了一個簡單的字符串串聯(lián)操作;第二次使用了StringBuilder類。要想查看結(jié)果字符串,可以去掉下面的代碼中注解行的注解符號:


<%@ 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類進行同樣的操作

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類的Append方法的速度比使用字符串連接的速度快近200倍。

5. 只在必要時使用服務(wù)器端控件

ASP.NET中新引入了一種在服務(wù)器端運行的被稱作Web Server Controls的控件,在代碼中,它們經(jīng)常通過下面的語法被說明:

<asp:TextBox id="txtLastName" size="40" runat="server" />


它們有時也被稱作ASP控件。服務(wù)器端控件是由runat屬性指示的,它的值總是“server”。
通過添加runat屬性,一般的HTML控件可以被很方便地轉(zhuǎn)換到服務(wù)器端運行,下面是一個簡單的例子:

<input type="text" id="txtLastName" size="40" runat="server" />


可以通過id屬性中指定的名字,我們可以引用程序中的控件,可以通過編程的方式設(shè)置屬性和獲得值,因此,服務(wù)器端處理方式有較大的靈活性。

這種靈活性是有一定代價的。每種服務(wù)器端控件都會消耗服務(wù)器上的資源。另外,除非控件、網(wǎng)頁或應(yīng)用程序明確地禁止view state,控件的狀態(tài)是包含在view state的隱藏域中,并在每次回送中都會被傳遞,這會引起嚴重的性能下降。

在這方面的一個很好的例子是,網(wǎng)頁上控件表格的應(yīng)用,如果不需要在代碼中引用表格中的元素,則使用無需進行服務(wù)器端處理的HTML表格。我們?nèi)匀豢梢栽贖TML表格單元中放置服務(wù)器控件,并在代碼中引用服務(wù)器控件。如果需要引用任意的表格元素,例如指定的單元,則整個表格必須是服務(wù)器控件。

6. HyperLink控件、LinkButton控件的差別

對于Web訪問者而言,HyperLink、LinkButton控件是一樣的,但它們在功能方面仍然有較大的差異。

當(dāng)用戶點擊控件時,HyperLink控件會立即將用戶“導(dǎo)航”到目標(biāo)URL,表件不會回送到服務(wù)器上。 LinkButton控件則首先將表件發(fā)回到服務(wù)器,然后將用戶導(dǎo)航到目標(biāo)URL。如果在“到達”目標(biāo)URL之前需要進行服務(wù)器端處理,則使用LinkButton控件;如果無需進行服務(wù)器端處理,則可以使用HyperLink控件。

7. 注釋代碼

這一技巧并不是針對ASP.NET的,但它是一個良好的編程習(xí)慣。

注釋不僅僅應(yīng)當(dāng)說明代碼會執(zhí)行什么操作,還應(yīng)當(dāng)注明原因。例如,不要僅僅在注釋中說明是在遍歷數(shù)組,而是要說明遍歷數(shù)組是根據(jù)某一算法計算一個值,除非算法是相當(dāng)簡單的,否則還應(yīng)當(dāng)對算法進行簡要的說明。

.NET工程中的不同的編程語言都有各自不同的注釋符號,下面是一個簡要的說明:

HTML <!-- 注釋 --> JavaScript // 注釋 VBScript ' 注釋 VB.NET ' 注釋 C# // 注釋 /* 多行內(nèi)容 的注釋 */ SQL -- 注釋

在服務(wù)器控件的開始和結(jié)束標(biāo)記中沒有注釋符號,但服務(wù)器能夠忽略掉所有它不能識別的屬性,因此我們能夠通過使用沒有定義的屬性來插入注釋。下面是一個例子:

<asp:TextBox id="txtLastName" size="40" comment="這是我的注釋" runat="server" />


在Visual Studio .NET中對源代碼進行注釋非常簡單。高亮度顯示需要注釋的行,然后按Ctrl K C組合鍵添加注釋。要刪除注釋,只需高亮度顯示被注釋的代碼,并按下Ctrl K U組合鍵。

在C#工程中,我們還可以通過在每行的開始處使用///輸入XML注釋小節(jié)。在注釋小節(jié)中,我們可以使用下面的XML標(biāo)記組織注釋:

<summary></summary> <remarks></remarks > <param></param> <returns></returns> <newpara></newpara>


要在Visual Studio .NET中查看這些XML注釋的格式化的報告,我們可以首先選擇“工具”菜單項,然后選擇“建立注釋W(xué)eb網(wǎng)頁”菜單項。

分享:解析ASP.NET MVC項目中視圖的單元測試
關(guān)于視圖的單元測試 說到ASP.NET MVC,我們似乎始終都在關(guān)注對于Controller的測試雖然Stephen Walther也寫過如何脫離Web Server對View進行單元測試,但是他的方法可看而不可用。復(fù)雜的構(gòu)造和預(yù)備,以及對生成的HTML字符串作判斷這真是在對視圖做單元測試嗎?

來源:模板無憂//所屬分類:.Net教程/更新時間:2009-04-18
相關(guān).Net教程