Thursday, November 16, 2006 - 文章

KB-用VS 2005 Build Web Site,總是慢到讓你想哭嗎?

這大概是所有由VS.NET 2003轉到VS 2005的ASP.NET Developer最重要的感想之一吧! 跟VS.NET 2003時代的ASP.NET Web Application Project相比,VS 2005的Web Site Project Build起來真像老牛拉車,只見CPU猛飆,HD狂轉,以前3-5秒搞定的事,現在沒有個10秒20秒東西出不來,對我這種且戰且走型的Programmer來說,真是痛苦的折磨。

前些日子,看到Scott Guthrie一篇文章,讓我眼睛一亮,直到剛才有機會試了一下。親愛的史考特,這真是太神奇了! 一個Refrence了四個dll的專案,Build時間足足縮短為1/3(12秒->4秒),大家看完以下的說明,快點試試吧!

Scott的文章裡提到了一件事,當你的ASP.NET專案參考DLL時,若DLL是來自於檔案(也就是用瀏覽功能去挑DLL檔案),VS 2005會很"貼心地"自動補上一個yourAssemblyDllName.dll.refresh的檔案,裡面只有一行文字,指向原始參考的檔案路徑,其用意是每次Build Web Project時,雖然BIN下已經有了該DLL檔,VS 2005還是會去原始來源檢查該檔案有沒有更新。若有,會將較新版的DLL檔以及其相依的DLL一併Copy回BIN下面。這樣子,被參考DLL只要一有更新,不勞你動手,VS 2005就會自動抓最新版的回來用。雖然Scott強調的是Dueling Assembly Reference Problem(導因於共用被參考檔的版本衝突),未必會發生在每個Project中,但那個.refresh的特性,倒讓我想試看看單純.refresh造成的效能衝擊。我找了一個專案,特意以選取檔案的方式參考了幾個DLL檔案,果不其然,.refresh出現了:

開啟專案後第一次Build Web Site耗時12秒,第二次約8秒。接著我將四個.refresh移除,咻~~~ 首次Build大約只花了4秒,之後更是不到2秒,效果驚人!! (剛才在另一台機器不同專案做的實測是25"->10",快了一倍以上!)

被VS 2005的慢郎中性格氣到吐血的朋友們,不妨試試,再留言分享一下實測的改善效果吧!

KB-ASP.NET 2.0 TextBox.ReadOnly之行為改變

今天接獲回報,先前寫的控件(繼承自TextBox的數字輸入欄位WebControl)在ASP.NET 2.0下有問題,當控件ReadOnly設為True時,在前端用Javascript修改控件<INPUT>的Value,用Fiddler看,新值明明PostBack回後端了,但是在Server-Side查到的是前端修改前的舊值。

有點懷疑這是ASP.NET 2.0的Behavior改變,用TextBox測試,果然如此!

我的測試是先在Server-Side設定TextBox1屬性
TextBox1.Text=”OldValue”;
TextBox1.ReadOnly=true;
接著前端用document.all(“TextBox1”).value=”NewValue”;改變數值,PostBack後,Server-Side用TextBox1.Text取得的是”OldValue”,同樣的程式在1.1上執行結果為”NewValue”。

Google了一下,印證了這是ASP.NET 2.0的改變,主要是為了安全的考量,因為這樣可以防止前端利用Javascript或其他技巧去篡改已設為ReadOnly的欄位,提高安全性。不過呢,過去有不少專案將加總值等等設成ReadOnly,由JavaScript計算填入再傳入後端。我想若以最高安全標準來看,應該要在後端再重算一次,以免將有心人篡改過的數字寫入資料庫。只是同樣的邏輯要寫兩次(還一次用Javascript、一次用C#/VB.NET),成本有點高。若該欄位存的是連狗都沒興趣的數字,則便宜行事是可以被接受的(又不是在報特支費發票),如果你想要找回從前"前端對User設唯讀,但JavaScript修改值可以傳回"的模式,可以試試以下兩種做法:
1.用Request["TextBox1"]的方式取值
2.TextBox1.Attributes.Add("ReadOnly","ReadOnly");

雖然還是有解決方案,但比較煩的是,過去的一些ASP.NET 1.1專案,不少的TextBox.ReadOnly只用來擋使用者輸入,還是接受由JavaScript自動算值後填入;專案轉到2.0,表面上順利無誤,執行的結果可不太妙,全部掃一次Code的功夫看來是少不了,要做1.1->2.0移轉的朋友們要特別留意。

搜尋

Go

<November 2006>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication