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到一個浏覽器來回切換以觀察用戶控件最終生成的樣子。僅此而已。