首頁 »
2007/04/14

ASP.NET 2.0 Health Monitor健康監視

ASP.NET 2.0 Health Monitor 最近祭司較少為各位寫一些私人技術觀感的長篇大論,不過倒是開始有幫一些雜誌寫稿,於良心不安之際,想到了從我將來的ASP.NET新書偷一些文章來刊出,其中一篇叫「Health Monitor健康監視」


【聖殿祭司.奚江華】 現在最火紅的.NET技術題材是什麼?不是ASP.NET 2.0,而是ASP.NET AJAX,因為ASP.NET 2.0大家都已經玩很久了,在常見的主題上大家都熟到不能再熟,就算不熟手邊的ASP.NET 2.0書籍翻開大概也查得到,故大家瘋ASP.NET AJAX技術是有道理的,因為大多數人還無法隨心所欲地掌握ASP.NET AJAX,而愈是遙不可及的夢想,愈是高深,大家就愈是瘋狂地夢想AJAX這個技術. 但人是善變的,熱情也有消減時,你可以捫心自問投入AJAX十分力氣,回收了幾成?三成有嗎?至於回收幾成要如何計算,祭司提供眾多方法的一種,就是任何AJAX問題到你面前,十個AJAX你能回答幾個,你大概就算回收幾成,學AJAX的人手上大概都有好幾本,但即使你看完三本AJAX書,有人敢回答我精通AJAX,我AJAX出師了,我是AJAX高手否?這問題要我回答,我則答No.... 原因在於AJAX是一種概念,而不是某個廠商的附屬品,即便你精通ASP.NET AJAX這個套件,我還是要說AJAX你還是有許多不懂的,事實上除了微軟ASP.NET AJAX之外,比它更強,UI Component更炫者,所在多有,而且不是一兩個,而是滿坑滿谷!若論不用錢的,你去看看Dojo,若論要錢的,你去比比看NetAdvantage,Dundas,ComponentOne,ASP.NET AJAX比之如何一望便知,我個人覺得AJAX是不好學的,原因在於它是沒有範圍的,也就是說要窮盡AJAX很難,沒有範圍的東西要如何窮盡?目前世界上AJAX的解決方案超過50種到上百種,AJAX廠商更是不計其數. 但祭司的思意是什麼,是AJAX不好?還是說ASP.NET AJAX不好?嗯~這個問題我不直接回答,但我最主要的重點是”人要謙卑”,尤其是AJAX如此難以全然掌握,無法窮盡的情況下,大家更要花心思好好地學,也不要以為學了一個ASP.NET AJAX就是掌握了全世界,面對無法全然掌握的知識面前,人還是要懂得謙卑. 而AJAX太難,AJAX回收相對較少,人的熱情容易消減,則導出另一個重要議題,就是”喜新厭舊”,現在喜愛AJAX,但過一陣子(不出半年),我可以預見大家又會轉向瘋另一個技術主題了,而這個技術主題是明確的,且特定的,很有意思足以吸引全世界目光好幾年,讓我們期待它的到來..很快的,不出半年就會出現的,聰明的人應該知道我講的是什麼,而若你猜不到也沒關係,因為不出幾個月就會有大規模的造勢,慢慢接引這個技術王者,然後一舉主宰下一個十年的技術王朝....它是誰,就是~~~(名字祭司暫不直接點出,因為大家腦袋中全是AJAX,AJAX,AJAX) 最後拉回正題~ASP.NET 2.0 Health Monitor健康監視,什麼是健康監視,以下是說明: ASP.NET 2.0針對網頁的運作健康狀況,提供了一個新的機制叫做:「Health Monitoring」,中文翻譯成健康監視,用來監視網頁各種狀況的發生,以便您可以據此進行網頁應用程式的追蹤、管理、改善等等工作。 以下是微軟對ASP.NET 2.0健康監視所稱的幾種作用: • 個別地或跨 Web 伺服陣列監視實體 ASP.NET 應用程式,確認是否正常運作。 • 診斷可能會失敗的 ASP.NET 應用程式。 • 記錄不一定與 ASP.NET 應用程式有關的錯誤,但是對您進行診查有所幫助或感興趣的事件。 • 監視ASP.NET應用程式效能,以確保網站處於健康狀態。 而ASP.NET 2.0增加健康監視功能的原因在於,過於網站管理者對於Web應用程式的監控,只能處於被動狀態,如網頁發生問題時,透過功能及資訊有限的Http錯誤、debugging輸出或event log等等。故有了健康監視功能,可以讓您反轉為主動狀態,平時就主動積極地監視與記錄網頁的各種資訊,不但可以瞭解網頁運作健康情形,於問題發生時,也可提供更多資訊供您參考。 一如各位到醫院做身體的健康檢查,透過儀器就可以測試出您的心跳、脈搏與血壓狀況等等,以便可以瞭解一個人的身體健康狀況是如何,同時醫生也會根據記錄下來的數據,給您改善調整的建議。而網頁的健康狀況作用也是如此,它可以將各種事件(Events)數據記錄在SQL Server、事件檢視器,或是發送E-mail,而您可以事後分析資料庫之數據,以便找瞭解網頁運作的健康狀況,或者針對問題來進一步追蹤,找出可能原因。 健康監視可以記錄網頁各種事件的發生,包括:網頁成功、失敗、驗證等等事件,您可以將這些事件(1)寫入到SQL Server資料庫(2)寫入作業系統的事件檢視器(Event Viewer)(3)將事件傳送到WMI(4)發送事件E-Mail(5)事件傳送給ASP.NET Trace系統。 而在在祭司的「ASP.NET 2.0專家技術手冊」的2-7小節,就教過各位使用以下指令註冊各種Providers所需的SQL Server資料庫: aspnet_regsql -S localhost -U sa -P test -d vs2005test -A all 執行完畢後,就會建立出11個資料表,而其中一個「aspnet_WebEvent_Events」資料表,一直沒向各位提起是何用途,事實上它就是給Health Monitoring健康監視所使用的SQL Server資料表。 若要啓用健康監視功能 請在Web.config啓用健康監視設定: 如此健康監視就會啓動,但預設是使用「EventLogWebEventProvider」這個Provider,這個Provider預設會將所有的錯誤寫到事件檢視器中,而非SQL Server。故若您想要事件寫入到SQL Server或其他地方,則必須透過進一步組態設定,在後續的小節及範例將會介紹。 啓用健康監視後,任何大大小小的事件都可以被自動記錄到SQL Server資料庫之中,供您日後追蹤分析問題之用,小到如哪個User幾點幾分Login登入到系統,User幾點幾分執行過哪個.aspx網頁,系統資源使用率,系統例外狀況發生等等都可以詳加記錄,最重要的是~~~不用寫程式,這個才是最妙! 而不用寫程式是”主體”,在一般情況下不用寫,若您想進一步客製化也有提供寫程式的功能,總之我覺得這個主題還不錯,因為我在ASP.NET 1.0時,為了監控User何時登入網站,誰幾點幾分執行哪個程式,甚至我做到了User執行了哪個Select,insert,update,delete方法都記錄到資料庫之中,那我是如何做的?就是自行撰寫Httpmodule方式,從中攔截,比較麻煩的是要自己動手,且也不是每個人都懂怎麼做,但ASP.NET 2.0 Health Monitor健康監視直接內建這些功能了,所以真是方便不少!

註:

就ASP.NET 2.0諸多功能中,市面上的中文書所談全部加一加也了不起是50%+,仍有許多很好的主題應談而未談,原本祭司打算出的ASP.NET 2.0下冊,因為時程的關係在今年不會推出了,未來將會隨著新版的VS 2007或2008,Orcas開發工具上市而一併發行,健康監視就會是其中的一個章節,而Cache 2.0也會是其中一個章節..還有很多很棒的主題,到時見! 【聖殿祭司.奚江華】



GridView動態程式篇的用意←上一篇 │首頁│ 下一篇→下一代的ASP.NET 3.5
本文引用網址: