如何追蹤 ASP.NET 網站各頁面的執行狀況與效能

通常要監測 ASP.NET 網頁的執行狀況與效能會使用 Trace (追蹤) 功能,大致上追蹤分兩種層級,一種是「網頁層級的追蹤」,另一種是「應用程式層級的追蹤」。

第一種:網頁層級的追蹤

顧名思義就是針對單一網頁的追蹤,你只要在頁面最上方的 Page 指示詞中加入 Trace="true" 屬性就可以啟用了。

    網頁層級的追蹤,顧名思義就是針對單一網頁的追蹤,你只要在頁面最上方的 Page 指示詞中加入 Trace="true" 屬性就可以啟用了

而執行起來後就會出現該頁面中執行時期完整的詳細資訊,包括 HTTP Request 的詳細資訊、追蹤資訊(Page類別中預設事件的執行時間)、整個網頁的控制項樹狀結構、所有的 Session、Cookie、HTTP Header、Form 集合、QueryString 集合、伺服器變數、......等。十分的完整而詳細,對於開發的時候除錯十分的有用。

    網頁層級的追蹤畫面

而在你自己的 Code Behind 事件程式中,就可以使用 Trace.Write 或 Trace.Warn 方法來設定輸出你追蹤的時間點與備註說明,另一方面,對於初學者來說,比較不清楚「事件執行順序」的人也可以透過 Trace 功能協助你瞭解每一個事件的執行順序。而 Trace.Write 方法與 Trace.Warn 方法唯一的不同就是用 Trace.Warn 所輸出的文字是紅色的。

    可以使用 Trace.Write 或 Trace.Warn 方法來設定輸出你追蹤的時間點與備註說明

另外,你也可以在你自己開發的 .NET 元件中使用 HttpContext.Current.Trace.Write 來輸出需要追蹤的訊息。 

    你也可以在你自己開發的 .NET 元件中使用 HttpContext.Current.Trace.Write 來輸出需要追蹤的訊息。

你如果要監控某個事件的執行時間的話,就可以在事件的第一行程式碼寫入一段 Trace.Write 程式,在最後一行寫入 Trace.Write 程式,就可以記錄到這個時間到底執行多少時間了,而你要看的追蹤欄位是「從最末項開始(秒)」這一欄,因為這一欄是指從「上一個追蹤點到這個追蹤點所花費的時間」。

第二種:應用程式層級的追蹤

這個方式可以在整個網站下進行追蹤,不用特別開啟每一頁的追蹤,只要在 web.config 的 <system.web> 區段下宣告以下的設定即可。

[code:html] 


<trace enabled="true" pageOutput="true" requestLimit="100" traceMode="SortByTime" localOnly="true" />


[/code]

開啟後原本的頁面都不會變,但是每一頁在執行的時候都會將追蹤資訊寫入到記憶體中,你可以進入該網站或該虛擬目錄下的  trace.axd 頁面就可以看到所有追蹤的資訊。

例如:http://localhost:1997/trace.axdhttp://localhost/webapp1/trace.axd

應用程式層級的追蹤畫面

每一項追蹤的後面都有「檢視詳細資料」,點進去後就會看到跟「網頁層級的追蹤」一模一樣的資料了,這對於正式主機上的效能監測十分便利,因為有些數據在開發的時候是偵測不出來的,但如果你有辦法再開發時期做好完整的壓力測試的話,當然最好不要在正式執行的環境進行追蹤分析,因為這會對網站的執行效能造成很大的影響。

除了用 Trace 功能之外,要追蹤網頁執行效能還可以用 Log Parser 工具直接從 IIS 產生的 Log 檔進行分析,找出一段時間內執行最久的頁面,然後針對這些執行最久的頁面進行細部的追蹤分析。

底下列出一些使用 Log Parser 分析網頁效能與追蹤潛在問題的文章連結:

相關連結

 

  

此文章由 will 發表於 2008/3/31 上午 12:00:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: ASP.NET | IIS

標籤: , , ,

收藏:

在 Visual Studio 中搜尋文字的多種選擇

在 Visual Studio 中搜尋文字有許多選擇,今天介紹許多好用的搜尋技巧。

第一種大家耳熟能詳的,就是用 Ctrl + F 立即開始搜尋 ( Quick Find ),你可以選擇「目前文件(Current Document)」、「所有開啟的文件(All Open Documents)」、「目前專案(Current Project)」或「整個方案(Entire Solution)」,如下圖:

   

我個人在專案開發上雖然對這個功能很依賴,但有時後也蠻討厭的,因為每次都會跳出一個 Find and Replace 的視窗讓我選,大部分的時候我只是要搜尋目前文件的文字而已,沒必要每次都選擇這麼多選項,且你上一次搜尋 Current Project 的話,這次想搜尋 Current Document 就要重選一次 Look in 欄位,我自己是覺得蠻麻煩的。

第二種很特別,就是按下 Ctrl + / 快速鍵可以進入 command line 視窗, 直接輸入要查詢的文字後按下 Enter 就可以搜尋了,也可以連續按 Enter 搜尋下一筆,也可以按下 Shift + Enter 往上搜尋,真的很方便喔!

    按下 Ctrl + / 快速鍵可以進入 command line 視窗

除此之外,還可以利用 command line 視窗執行一些常見的 Macro 指令,你只要按下 Ctrl + / 之後先輸入一個大於符號 ( > ) 就可以輸入或選擇巨集了,像我最常用的指令有兩個:

>op           開啟專案

>of            開啟檔案

你如果有自訂的巨集(Macro)也可以用這種方式快速啟動!

第三種搜尋方式也是我蠻常用的,叫做 "遞增搜尋 (Incremental Search)",快速鍵是 Ctrl + I ,按下去之後畫面的正中央匯出線一個「望遠鏡」的圖示,如下圖示:

    遞增搜尋 ( Incremental Search )

出現之後就可以直接輸入關鍵字,打幾個字他就搜尋幾的字,只要有找到就會跳到那個地方去,直到按下 Esc 按鍵才會停止搜尋,如果你要搜尋下一個的話,可以直接按下 F3 或連續按下 Ctrl + I 就會重複上一次搜尋的關鍵字了繼續搜尋下一筆,如果要「往上搜尋」的話,可以按下 Shift + F3 或 Shift + Ctrl + I 即可。

以上就是快速搜尋「目前文件」的方式,應該是蠻實用的。

除了這些以外,還有很多「搜尋整個專案」的進階搜尋方式,例如說按下 Ctrl + Shift + F 會開啟 Find in Files (在檔案中尋找) 的視窗,可以過濾特定副檔名去搜尋,在專案檔案很多的時候很實用,例如說我想要找出所有 *.aspx , *.ascx 與 *.master 的檔案中有出現 Check.aspx 字串的地方,就可以透過 Find in Files 過濾特定副檔名, 你可以在 Look at these file types 中輸入多個過濾規則,並用分號 ( ; ) 分隔即可,如下圖示:

   

找到之後,就可以在搜尋結果視窗用滑鼠雙擊(Double Click)搜尋的結果行,檔案就會自動開啟並將游標直接定位到你搜尋到的那個字串前面!

    可以在搜尋結果視窗用滑鼠雙擊(Double Click)搜尋的結果行,檔案就會自動開啟並將游標直接定位到你搜尋到的那個字串前面

也可以在搜尋結果視窗選取多行,然後按下 Enter 鍵就會自動將你選取的所有檔案自動開啟,並將游標直接定位到你搜尋到的那個字串前面,這樣一來可以很方便的快速編輯搜尋到的文字。

    也可以在搜尋結果視窗選取多行,然後按下 Enter 鍵就會自動將你選取的所有檔案自動開啟,並將游標直接定位到你搜尋到的那個字串前面,這樣一來可以很方便的快速編輯搜尋到的文字

 

  

此文章由 will 發表於 2008/3/30 上午 12:00:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 心得分享 | Visual Studio

標籤: , ,

收藏:

ASP.NET 如何使用 HTML 中的 fieldset 和 legend 標籤

在 HTML 4.0 的規格中加入了 FieldsetLegend 標籤,可以做出這樣的效果(如下圖)

因為之前都沒看過 ASP.NET 有這個功能,還以為 ASP.NET 沒有支援呢,但也因為很少用所以沒特別去注意,直到最近才發現原來早就有這個東西了。

這兩個標籤已經內建的 Panel 類別中了,只要設定 Panel 類別的 GroupingText 屬性就會自動產生,真是方便呢! ^_^

    <asp:Panel ID="Panel1" runat="server" GroupingText="這裡是Legend的內容">
        Panel's Content Here.
    </asp:Panel>

 

相關連結

  

此文章由 will 發表於 2008/3/29 上午 12:00:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: ASP.NET

標籤: , , ,

收藏:

ASP.NET 2.0 學習心得分享與推薦書單

在推薦書單之前,我想先分享一些學習的經驗,讓有有經驗、有潛力的程式設計師能夠快速上手,但針對缺乏程式設計經驗的人來說,這裡的建議也是有幫助的,只是需要更多時間看書、寫 Code、除錯、除錯、再除錯、然後改 Code、改 Code、再改 Code,改到自己滿意為止。

對於讀書這件事來說,沒人可以強迫你讀書的,一定要強烈的動機靜下心來讀,若不能自動自發有規律的吸收新知,進步是有限的。但我也相信有許多人不看書是因為網路資訊太多,有需要上網找就好,不過我是覺得網路資訊不連貫,若要串連起完整的觀念需要一段時間(可能好幾年),但透過書籍卻是有很清楚的知識脈絡可以遵循,我是覺得比較容易得到全面的資訊,但每個人的觀念見仁見智,你只要覺得有吸收到想知道的也行。

首先,我認為一直寫 Code 而不看書是不實際的,這樣的寫 Code 過程必須面對許多因為觀念不對而導致寫錯程式的狀況,必須不斷的嘗試錯誤、上 Google 查資料、改寫、Debug、完成,也許 Try and Error 的過程很有趣,是可以不斷的驗證自己的理解能力很強,成就感也很高,但是我個人認為過多的 Try and Error 是很浪費生命的。沒有完整的觀念會導致寫程式缺乏效率,光是查資料就花了許多時間,因為不斷打字也會對你的手造成負擔。雖然這種「一步到位」的寫程式不太可能,不過可以當成一個目標來追尋,等你的程式設計功力越來越強,就會感覺越來越深刻。

我知道大部分程式設計師都很忙,都在忙著寫 Code,真要讓所有人想清楚再寫是不太可能的,所以大多數的人都一樣先寫了再說,最後如果有時間再重整自己的程式碼,因為程式設計師都是蠻懶的,所以我還蠻懷疑有幾個人會主動重整自己的程式碼,大多應該是沒出 Bug 就得過且過吧!不過會自己主動重整自己程式碼的人大多是有潛力的人才,有沒有重整過看 Subversion 的 Log 就知道了。

簡言之,擁有豐富的基礎知識(例如: .NET 基礎觀念)不管對你寫程式來說或是學習新知,速度都會比較快,像我現在一個晚上花兩小時大約可以看 50 頁的技術原文書,五年前的我大概只能看 10 頁,我現在每天也都會上網看一些國內外知名的 Blog 文章,充實新知的速度也是慢慢培養訓練出來的。

想學習 ASP.NET 2.0 (以上),多少還是需要充實 .NET 的基本觀念,我會推薦由悅知文化出版的 Microsoft .NET Framework 2.0 應用程式開發基礎 系列,共兩本:

我學習 ASP.NET 2.0 進步最多的時候是看了一本名叫 Professional ASP.NET 2.0 Special Edition 的書,當初是先看到電子書,在某一個週末一口氣把整本書看完 (將近 1,500 頁),看這本書的時候我已經寫 ASP.NET 一年多了,對 ASP.NET 只瞭解一些些,大多是工作上用的技術範圍到才會去瞭解,且當時的中文書也都寫的很粗淺,很多經驗都是自己 Try and Error 出來的,但看完這本書後覺得寫的太好了,對於 ASP.NET 的各個領域都講解的很完整,雖然每個章節所提到的技術沒有很深入,但是夠全面,對初學者來說是個不可多得的好書,當時就是覺得電子書很難標記重點,所以就把原文書給買回來了,然後貼了一堆標籤在上面,但過了幾個月後才發現中文翻譯書已經出來了,但是只有翻譯這本書的一半而已,直到最近又出了另一本下集,有興趣的人可以去買來看。

如果你已經有點 Web 的開發經驗,也可以考慮底下這兩本書,可以幫你補強許多 ASP.NET 基本觀念,這兩本書中有許多印刷錯誤的地方喔,看書的時候不要「照單全收」,最好都要認真思考過,否則可能會被誤導:

而最近剛看完一本書 Programming Microsoft® ASP.NET 3.5 (原文書),這本書的作者 Dino Esposito 文筆很好,英文用詞淺顯易懂,很容易閱讀,書中提到的大部分都跟 ASP.NET 2.0 差不多,但是卻講了許多在開發實務上才會用到的細節與小技巧,我覺得很實用,有些壓根沒想到的用他他都有提出來討論,還有書中的許多備註的地方 ( Note ) 都有很多好東西,一定要看。

剛那本 Programming Microsoft® ASP.NET 3.5 看完後欲罷不能,又去買了 Dino Esposito 的另一本書叫做 Programming Microsoft® ASP.NET 2.0 Applications: Advanced Topics,當然也寫的不錯,只是這本已經非常進階了,如果你不熟 .NET 基礎的話,應該是看不下去的。

最近也剛在看一本書叫做 Developing More-Secure Microsoft® ASP.NET 2.0 Applications,才剛看完兩章而已,看的速度有點慢,但是很過癮,會讓你更加瞭解 ASP.NET 2.0 運作的所有細節,讓你開發出來的 ASP.NET 2.0 網站更加的安全、可靠、有效率。

現在 ASP.NET 3.5 越來越熱門,我們也已經都全面採用 ASP.NET 3.5 開發了,技術轉換的幅度不大,應該很容易上手,主要是針對 LINQ 語法的熟悉與 ASP.NET 3.5 的控制項,還有 LINQ to SQL 的部分都能夠掌握的話,就差不多夠了。

最後,就是多訂閱一些國內外知名的 Blog,每天吸收一些新知,還有我的 Blog 一定要每天看,以前的文章每一篇也都要看,包你功力大增。

2008-07-07 更新:

我另外介紹一本我覺得寫的很棒的書 Microsoft Visual C# 2008 Step by Step ,最近剛出中譯本,如下:

 

  

此文章由 will 發表於 2008/3/28 上午 12:01:00

永久連結 | 評論 (7) | 此文章的RSSRSS comment feed |

分類: .Net | ASP.NET | C# | 心得分享

標籤: , , , ,

收藏:

網頁親和力工具列 2.0 繁體中文版

網頁要做的好不只是畫面漂亮就好,還要考慮到各種不同上網方式的人,例如說身心障礙人士,政府所建立的無障礙網路空間服務網就已經積極推廣無障礙網路的觀念多年,也提供許多檢測的工具,只可惜成效不盡理想。

在國外就有個網頁親和力工具列 ( for IE ),功能也蠻多的,很適合用來開發無障礙網頁,這軟體日前出到 2.0 版有一段時間了,直到前幾天才釋出繁體中文版,有興趣的可以去下載回來玩玩看。

以下是工具列的圖示,每一個按鈕下都還有好多功能:

 

 

相關連結

 

  

此文章由 will 發表於 2008/3/27 上午 12:02:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: Accessibility | 介紹好用工具

標籤:

收藏: