ASP.NET 2.0與Visual Studio 2005正式上市至今已經有好幾個月了。隨著時間的一天天向前推移,如今越來越多的人能夠使用到這一產品。本文作者基於對該產品的試用試圖從個人角度來對這一產品的優點與不足作出評析,僅供參考。
一、 引言
說實在的,我對ASP.NET 2.0與Visual Studio 2005之間的關係有些喜歡也有些討厭;但是,我最終還是決定把我的大多數內部應用程式遷移到2.0並且決不後悔。基本上,ASP.NET 2.0中存在太多的新的特徵使我的生活變得更為輕鬆,並且從此以後再也不會返回到以前的1.1版本中編程了。
到目前為止,這個平台一直工作良好。我已經發現了其中存在的許多改進能夠大量地降低編碼的複雜性和編碼數量,在效能方面大約提高了10~20%,並且減少了記憶體需求量(這對於大型應用程式而言是十分重要的),但是對我的工作來說幾乎沒有太大的作用。
把2.0特徵加入到現有應用程式中絕對不是一夜之間的事情。但是,隨著我逐漸地習慣快速地把大量的2.0特徵加入到我的新式應用程式中,我的最後感覺是:如果再回到ASP.NET 1.1和VS 2003的話,那將是一個很大的後退。
二、 優點評析
下面,讓我們來逐步剖析這個新產品中的主要變化,首先來看一下它的優點。
(一) Visual Studio 2005基於檔案的工程開發
現在,在Visual Studio 2005中,你能夠把一個目錄作為一個web工程來開啟,這是一種相當不錯的改進。在我的開發機器上,我可能有50個不同的web工程。使用以前的VS2003,要把所有這些作為IIS中的虛擬目錄加以配置和維護並且使工程實現正確地引用是令人相當頭疼的事情。你不這樣認為嗎?你是否想把某些工程移動到一台新機器上?在VS2005中,你只需要簡單地指向一個目錄就可以開啟工程。你完全可以使用本地的Web伺服器構建方式來運行應用程式,這樣以來就免除了配置Web伺服器的需要。
這個特徵特別適合於共用樣本的開發人員—任何想檢查一個樣本web應用程式的開發人員都不必經受基於IIS進行配置的痛苦。現在,藉助於基於檔案的工程,你能夠—至少在開發場所下—實現真正的“xCopy”工程。這個特徵相當偉大,但是也不無缺點(一會兒後我們會詳及)。
【另注】我接觸到的每一位都喜歡構建到Visual Studio內部的Cassini web伺服器。當然,我也喜歡,因為它極大地簡化了許多問題的處理。然而,有關它的使用也存在一些缺點。主要是在使用過程中應當避免Cassini與IIS之間的相互幹擾。例如,Cassini能夠把所有的請求傳遞給ASP.NET而忽略擴充內容。如果你擁有處理特定的檔案類型的定製的處理器(例如,動態地構建Excel報告,等等),那麼,你必須記住,當發布你的應用程式時,你要在IIS中為擴充內容建立定製的映射;否則的話,IIS不會把請求傳遞給ASP.NET。我接觸過許多朋友在發布時花費大量的時間來解決他們的應用程式中的問題,因為他們在開發過程中從不擔心Cassini中的配置設定問題。
(二) 主版頁面面
現在,你可以定義一個能夠在你的應用程式中重用的母片(Master)頁模板。使用這個功能能夠節約你大量的開發時間。事實上,在2.0版本出現以前,已經存在基於ASP.NET 1.x版本的這種概念,但是對於我來說,吸引我的最關鍵的特徵在於,Visual Studio提供了對它的可視化支援。這可以使你看到母片的布局,其中ContentPlaceholders可以應用於每一個頁面中以提供頁面級內容。
除了設計器提供的重要的可視化方面外,主版頁面模板還提供了一種良好的方式來把彼此相關的可重用的代碼聯絡到一起。主版頁面面的目的是,把以前需要使用若干使用者控制項(例如,Header,Footer和Sidebar)才能實現的功能融合到一起,從而使它們能夠比以前更為有效地實現邏輯分離。
【另注】你還能夠在運行時刻動態地改變主版頁面面,從而實現更大的靈活性。這一支援使使用者能夠改變一個應用程式的整體外觀感覺;而且這種效果是僅憑藉切換層疊式樣表所無法實現的。
(三) 使用者控制項可視化描述
說實在的,我非常希望自己在設計時就能看到整個頁面的樣子。就象主版頁面面一樣,現在,Visual Studio 2005能夠在Web表單編輯器內顯示一個產生的使用者控制項。不再象是以前的老式的、非描述性的灰色的方框加上一個控制項名,現在,你能夠在設計器內得到一個全面產生的恰當到位的控制項。雙擊它,則VS就能把你導航到使用者控制項設計器。在我的開發中,我一般不會大量地使用使用者控制項,而是使用主版頁面面來替換我的許多現有的控制項,但是我發現這種使用者控制項可視化描述使設計模式更為有用了。對於我的現有1.1版本的應用程式來說,尤其如此—我的這些程式中通常仍然使用這樣的控制項來表達頁面的頁首,側欄和頁尾。
【另注】完全自動地產生使用者控制項極大地節約了開發時間。當然,我還需要花費不少的時間從IDE到一個瀏覽器來回切換以觀察使用者控制項最終產生的樣子。僅此而已。