熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

ASP.NET開發應用編程中的十大技巧

2013-11-15 12:53:54  來源: ASP編程 

  手動用戶界面測試是一種最基本的軟件測試類型大多數軟件工程師首次采用的就是這種測試類型與此矛盾的是自動化用戶界面測試可能是編寫的測試類型中最具技術挑戰的一種Microsoft? NET 環境為您提供了許多編寫自動用戶界面測試自動化的方式一種常見而有用的方法是記錄擊鍵鼠標移動和單擊然後在應用程序中回放以確保它以預期方式執行(有關這種方法的詳細信息請參見 MSDN?Magazine 月號中 John Robbins 的 Bugslayer 專欄這一期 MSDN Magazine 的 Paul DiLascia 專欄也闡釋了如何使用 NET 將這種類型的輸入發送到另一個應用程序中)在本月的專欄中我將探討為 NET 應用程序編寫輕量級 UI 測試自動化的另一種方法
  
  最好的方式是以一個屏幕快照開始進行討論 顯示我有一個虛擬應用程序要進行測試它是一個顏色合成器應用程序允許用戶在文本框控件中鍵入一種顏色然後在 Combobox 中鍵入或選擇一種顏色單擊按鈕Listbox 就會顯示一條消息表明兩種顏色混合的結果在圖 根據應用程序紅色和藍色會產生紫色UI 測試自動化是一個控制台應用程序它啟動一個待測試窗體模擬用戶移動應用程序窗體定義和調整應用程序窗體的大小設置文本框和 Combobox 控件的值並單擊按鈕控件測試自動化檢查測試應用程序的結果狀態驗證 Listbox 控件包含正確的消息並記錄pass結果 中的屏幕快照是在測試自動化模擬用戶單擊關閉測試應用程序的 File | Exit 之前捕獲的
  
  在本篇文件中我們將討論編程人員在使用ASPNET開發應用程序時需要注意的個技巧這些技巧涉及從缺省的控件表單名的改變到StringBuilder類的使用有助於編程人員能夠盡快地適應NET環境
  
  在使用Visual Studio NET時除直接或非引用的對象外不要使用缺省的名字
  NET帶來的好處之一是所有的源代碼和配置文件都是純文本文件能夠使用Notepad或WordPad等任意的文本編輯器進行編輯如果不願意我們並非一定要使用Visual Studio NET作為集成開發環境但使用了Visual Studio NET我們可以在Windows文件管理器中看到文件或在Visual Studio NET之外從文本編輯器中浏覽文件的內容
  
  使用Visual Studio NET作為集成開發環境有許多好處其中最顯著的好處是它極大地提高了生產效率使用Visual Studio NET我們能夠在付出較小代價的情況下更快地開發軟件作為集成開發環境一部分的IntelliSense提供自動的代碼完成在輸入方法或函數時提供動態幫助語法錯誤的實時提示以及其他能夠提高生產效率的功能
  
  象其他復雜的工具那樣在學會如何充分發揮它的作用和掌握其習性Visual Studio NET也會使我們產生一種挫折感有時它象一個難以了解的黑盒子會生成大量的文件和許多無用的代碼
  
  Visual Studio NET的一個功能是無論是類控件或表單中的對象它都能夠為新對象提供缺省名字例如如果我們創建了一個新的ASPNET Web Application其缺省的名字將是WebApplication我們可以在新工程對話框中方便地改變該應用的名字但同時改變的只是該應用程序的名字空間的名字及其所在的虛擬目錄源代碼文件的缺省名字仍然是WebFormaspx和WebFormaspxcs(C#工程)或WebFormaspxvb(VBNET工程)
  
  我們可以在方案浏覽器中改變ASPX和代碼使用的文件名字但Web頁類的名字仍然將是WebForm如果在該Web表單上生成一個按鈕其缺省的名字將是Button事實上所有控件的名字都是由控件的類型和數字組成的
  
  我們能夠也應該將應用程序中所有的表單和控件的名字都修改成有意義的名字對於較小的演示性程序而言缺省的名字還能夠勝任但如果應用程序由多個表單每個表單上有許多按鈕和標簽時象frmStartupfrmDataEntry和frmReports這樣的表單名就比FormForm和Form這樣的名字更易於理解和維護
  
  如果表單上控件要在代碼的其他地方引用使它有一個有意義的名字就更重要了btnOKbtnCancel和btnPrint這樣的名字使看代碼的人更容易理解因而也比名字為ButtonButtonButton這樣的控件更容易維護
  
  修改一個工程中所有文件中出現的一個名字的一個好方法是在Visual Studio NET菜單中依次選擇編輯>發現和替換>替換命令
  
  在看二周前編寫的代碼時我們經常就象第一次見到這些代碼一樣因此使它們有一個有助於我們理解其含義的名字是十分有必要的
  
  即使不使用Visual Studio NET進行編程使用代碼支持文件也有利於提高應用程序的性能
  在Web應用程序Web服務或Web控件等所有的ASPNET Web工程中Visual Studio NET都使用代碼支持文件代碼支持文件使工程具有更好的組織模塊性更適合多人組成的開發團隊另外它還會帶來性能的提高
  
  代碼支持文件的內容被編譯成一個組合文件中的類一般是一個DLL文件有時也可以是EXE文件該文件駐留在應用程序的組合體高速緩沖區中在應用程序啟動時可以立即得到它
  
  如果代碼是包含在<script>標記中或ASPX文件代碼中它仍然會被編譯成一個Web頁類在這種情況下每當該網頁在應用程序對話中第一次加載時都需要重新進行編譯被編譯的類就會駐留在內存中每當計算機啟動IIS停止重新啟動或者源代碼配置文件改變時該文件必須重新編譯盡管不大但這樣引起的性能損耗也是相當可觀的
  
  盡量減少表單回送
  每當點擊Web網頁上的ButtonLinkButton或ImageButton控件時表單就會被發送到服務器上如果控件的AutoPostBack屬性被設置為true如果CheckBoxCheckBoxList等控件的狀態被改變後也會使表單會發送回服務器
  
  每次當表單被發送回服務器就會被重新加載啟動Page_Load事件執行Page_Load事件處理程序中的所有代碼把網頁的初始化代碼放在這裡是最合適不過的了我們經常會希望在每次加載網頁時執行一些代碼而希望只有在網頁第一次加載時執行另一些代碼甚至希望一些代碼在除首次加載外的每次加載時執行
  
  可以利用IsPostBack特性來完成這一功能在網頁第一次加載時該屬性的值是false如果網頁因回送而被重新加載IsPostBack屬性的值就會被設置為true通過測試可以在任意時候執行指定的代碼下面是相關的C#代碼
  
  protected void Page_Load(Object sender EventArgs e)
  {
  // 網頁每次加載時執行的一些操作
  if (!IsPostBack)
  {
  // 網頁第一次加載時執行的操作
  }
  else
  {
  // 回送時執行的操作
  }
  
  // 網頁每次加載時執行的操作
  }
  我們希望盡量不引起回送(每次回送都會要求服務器進行一系列的操作)即使引起回送後也希望能夠執行盡量少的操作大規模浪費時間的操作(例如數據庫查找)尤其應當避免因為它們能夠延長應用程序的響應時間
  
  使用StringBuilder類
  字符串在NET框架中是不可變的這意味著改變字符串的操作符和方法會返回字符串的改變後的拷貝這意味著性能還有提高的空間當進行大量的字符串操作時使用StringBuilder類就是一種比較好的選擇了
  
  下面的C#代碼測試用二種方式從個子字符串中生成字符串所需要的時間第一次使用了一個簡單的字符串串聯操作第二次使用了StringBuilder類要想查看結果字符串可以去掉下面的代碼中注解行的注解符號
  
  <%@ Page Language=C# %>
  
  <script runat=server>
  void Page_Load(Object Source EventArgs E)
  {
  int intLimit = ;
  DateTime startTime;
  DateTime endTime;
  TimeSpan elapsedTime;
  string strSub;
  string strWhole = ;
  
  // 首先執行字符串連接操作
  startTime = DateTimeNow;
  for (int i=; i < intLimit; i++)
  {
  strSub = iToString();
  strWhole = strWhole + + strSub;
  }
  endTime = DateTimeNow;
  elapsedTime = endTime startTime;
  lblConcatText = elapsedTimeToString();
  // lblConcatStringText = strWhole;
  
  // 使用stringBuilder類進行同樣的操作
  startTime = DateTimeNow;
  StringBuilder sb = new StringBuilder();
  for (int i=; i < intLimit; i++)
  {
  strSub = iToString();
  sbAppend( );
  sbAppend(strSub);
  }
  endTime = DateTimeNow;
  elapsedTime = endTime startTime;
  lblBuildText = elapsedTimeToString();
  // lblBuildStringText = sbToString();
  }
  
  </script>
  
  <html>
  <body>
  <form runat=server>
  
  <h>String Concatenation Benchmark</h>
  
  Concatenation:
  <asp:Label
  id=lblConcat
  runat=server/>
  
  <br/>
  
  <asp:Label
  id=lblConcatString
  runat=server/>
  
  <br/>
  <br/>
  
  StringBuilder:
  <asp:Label
  id=lblBuild
  runat=server/>
  
  <
From:http://tw.wingwit.com/Article/program/ASP/201311/21835.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.