ASP.NET應用程式設計的10大技巧(二)

來源:互聯網
上載者:User
   5、只在必要時使用伺服器端控制項

  ASP.NET中新引入了一種在伺服器端啟動並執行被稱作Web Server Controls的控制項,在代碼中,它們經常通過下面的文法被說明:

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

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

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

  可以通過id屬性中指定的名字,我們可以引用程式中的控制項,可以通過編程的方式設定屬性和獲得值,因此,伺服器端處理方式有較大的靈活性。

  這種靈活性是有一定代價的。每種伺服器端控制項都會消耗伺服器上的資源。另外,除非控制項、網頁或應用程式明確地禁止view state,控制項的狀態是包含在view state的隱藏欄位中,並在每次回送中都會被傳遞,這會引起嚴重的效能下降。

  在這方面的一個很好的例子是,網頁上控制項表格的應用,如果不需要在代碼中參考資料表格中的元素,則使用無需進行伺服器端處理的HTML表格。我們仍然可以在HTML表格單元中放置伺服器控制項,並在代碼中引用伺服器控制項。如果需要引用任意的表格元素,例如指定的單元,則整個表格必須是伺服器控制項。

  6. HyperLink控制項、LinkButton控制項的差別

  對於Web訪問者而言,HyperLink、LinkButton控制項是一樣的,但它們在功能方面仍然有較大的差異。
當使用者點擊控制項時,HyperLink控制項會立即將使用者“導航”到目標URL,表件不會回送到伺服器上。 LinkButton控制項則首先將表件發回到伺服器,然後將使用者導航到目標URL。如果在“到達”目標URL之前需要進行伺服器端處理,則使用LinkButton控制項;如果無需進行伺服器端處理,則可以使用HyperLink控制項。

  7、注釋代碼

  這一技巧並不是針對ASP.NET的,但它是一個良好的編程習慣。

  注釋不僅僅應當說明代碼會執行什麼操作,還應當註明原因。例如,不要僅僅在注釋中說明是在遍曆數組,而是要說明遍曆數組是根據某一演算法計算一個值,除非演算法是相當簡單的,否則還應當對演算法進行簡要的說明。

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


HTML <!-- 注釋 -->
javascript // 注釋
VBScript ' 注釋
VB.NET ' 注釋
C# // 注釋
/* 多行內容
的注釋
*/
SQL -- 注釋 

  在伺服器控制項的開始和結束標記中沒有注釋符號,但伺服器能夠忽略掉所有它不能識別的屬性,因此我們能夠通過使用沒有定義的屬性來插入注釋。下面是一個例子:

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

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

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


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

  要在Visual Studio .NET中查看這些XML注釋的格式化的報告,我們可以首先選擇“工具”功能表項目,然後選擇“建立注釋Web網頁”功能表項目。

  8、使用trace方法和trace屬性記錄Page目錄中網頁的執行情況

  偵錯工具的一種古老的技術是在程式中的關健點插入輸出語句,通常情況下,輸出資訊中會包含重要變數的值,相關資訊可以輸出到螢幕、記錄檔或者資料庫。

  在ASP.NET中,通過使用Page命令中的trace屬性,這種調試技術的使用更簡單了。Page命令是ASPX檔案開始處的一行代碼,它提供編譯器的指示。Page命令中包含一個或多個屬性,向編譯器提供使用的程式設計語言、代碼支援檔案的位置或要繼承的類的名字等資訊。

  Page命令中的屬性之一是trace,其值可能是true或false,下面是一個典型的Page命令,其中的trace屬性的值是true:

<%@ Page language="c#" trace="true" %> 

  如果trace屬性的值設定為true,由ASPX檔案產生的Web頁就會顯示出來,除了網頁本身外,關於該頁的大量其他資訊也會顯示出來。這些資訊以下面小節的形式顯示在一張表格中:

  ·Request細節 提供Session ID、請求時間和請求的狀態代碼。
  ·Trace Information 包含追蹤記錄檔、網頁生命週期中按時間先後順序各個步驟的列表。另外,也可以向其中添加定製資訊。
  ·控制項樹 以一種分層次的方式列出網頁上的所有控制項,包括每個控制項以位元組計算的大小。
  ·Cookies集合 列出該網頁建立的所有Cookie。
  ·頭部集合 HTTP頭部以及它們的值。
  ·Server變數 與該網頁相關的Server環境變數。

  包含在Trace Information小節中的追蹤記錄檔是最有用的,在這裡我們可以插入自己的跟蹤命令。trace類中有2個方法能夠在追蹤記錄檔中插入命令:Trace.Write和Trace.Warn,除了Trace.Warn命令用紅色字型顯示、Trace.Write命令用黑色字型顯示外,它們是相同的。下面是追蹤記錄檔的一個螢幕快照,其中包含有幾個Trace.Warn命令。

  追蹤記錄檔中最方便的功能是我們可以在開發與測試過程中在整個代碼中插入Trace.Write和Trace.Warn語句,而在最終交付應用程式時,可以通過改變Page命令中trace屬性的值,禁止這些命令起作用,而無需在部署應用軟體前刪除這些輸出語句。

  9、使用預存程序

  微軟公司的SQL Server和其他現代關聯式資料庫都使用SQL命令定義和處理查詢。一個SQL語句或一系列SQL語句提交給SQL Server,SQL Server會對命令進行解析,然後建立一個查詢計劃並對它進行最佳化,然後執行該查詢計劃,這都需要大量的時間。

  預存程序是一系列被查詢處理器預解析和最佳化的SQL命令,這些命令會被儲存起來,可以得到快速地執行。預存程序也被稱作sprocs,它可以接收輸入參數,使一個單一的預存程序能夠處理較大範圍的特定的查詢。

  因為sprocs是預先被解析的,對於複雜的查詢更顯得重要,其查詢計劃是預先最佳化的,因此調用查詢過程比執行相同功能的SQL語句速度要快得多。

  10、使用.NET命令列

  .NET命令列工具在命令提示字元視窗中運行。為了使命令能夠執行,它必須駐留在命令提示字元的目前的目錄中,或通過設定PATH環境變數。

  .NET SDK在“啟動”菜單上安裝一個功能表項目,該功能表項目能夠開啟一個正確設定了PATH環境變數的命令提示字元視窗。我們可以通過依次點擊“開始”->“程式”->“Microsoft Visual Studio .NET”->“Visual Studio .NET工具”->“Visual Studio .NET命令提示字元”,啟動命令提示字元視窗。

  通過在將該功能表項目從菜單上拖到案頭上時,同時按Ctrl+C鍵,就可以將該功能表項目的捷徑拷貝到案頭上,使用起來會非常方便。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。