應IT168寫的專稿.ttp://tech.it168.com/msoft/2007-08-03/200708031112343.shtml
Visual Studio 2008和ASP.NET 3.5使用之初體驗
自由紫風
Visual Studio和.NET Framework的下一個版本,代號名為 Visual Studio 2008, 其中有許多新的特性。當Visual Studio 2008在2007年5月份發布Beta1后,筆者使用了一段時間。給人的整體感覺是愜意。微軟在Visual Studio及.NET Framework這兩方面做了大量的工作,可以非常有效的提高開發人員的開發效率。
Visual Studio 2008將是一個非常激動人心的版本,包含了成堆的強大的功能。在本文中,將展示的只是幾個特性而已,沒有談及的特性還多著呢。
一、 前言
當大家還在使用 Visual Studio 2005 的時候,微軟的下一代開發工具——Visual Studio 2008正悄悄地在醞釀中,未來微軟的新開發工具將使得開發應用程序更容易,對VB、C# 語言提供了更多的支持,開發人員未來將可以透過新的開發工具來進行 LINQ (Language Integrated Query)、ASP.NET AJAX、WPF、SilverLight (先前稱為 WPF/E),Office 2007等新技術的開發,甚至于將只在 Visual Studio 2005的Team Suite 版本中才有的 Test 工具整合到 Visual Studio 2008中。
對于堅持學習的技術人員而言,能盡快一睹Visual Studio 2008的風采無疑是很興奮的。筆者下載了Visual Studio 2008 Beta1,并進行了初步的試用。給人的感覺是,Visual Studio 2008的整體風格與框架與以前很相似,感覺很熟悉。當然,微軟在.NET Framework及Visual Studio所下的功夫不可謂不大啊,可以感覺到其更新力度之大。
作為軟件開發人員,一定會對下一代Visual Studio 2008的外殼感興趣。一個好的開發環境可以讓開發工作事半功倍。可以發現新版VS的開發界面分為兩個版本:整合模式和孤立模式,分別對基于語言的開發和基于特別工具的開發作了優化。并將Iron Python引入了Visual Studio,下圖的界面將在Visual Studio 2008的Beta2版本中出現。
Visual Studio 2008界面
Visual Studio 2008將包含對LINQ(Language-Integrated Query)的支持,通過把查詢的概念變成一流的編程概念,LINQ將使得.NET中的數據訪問面貌一新。Visual Studio 2008包含一個對象/關系的映射器,允許開發人員為關系數據創建數據模型,然后開發人員可以在VB和C#中編寫豐富的LINQ查詢來獲取數據,綁定這些數據,以及更新這些數據。現在VS對所有的LINQ查詢以及結果值提供完整的Intellisense支持。
筆者認為,除了那些框架和工具類的精彩新特性外,開發人員(包括所有的.NET應用類型的開發人員)會非常喜愛Visual Studio 2008的一件事情是,VB和C#將包含一些新語言特性和改進。這些語言改動將以既微妙又深刻的方式改進我們的開發體驗,勢將改進效率,減小我們需要鍵入的代碼量。
二、 Visual Studio 2008
(1) 微軟的擦邊球——多定向技術
對Visual Studio以前的版本而言,其中一個最大的明顯不足之處在于每一個VS版本都要綁定一個特定版本的CLR。比如,使用Visual Studio 2005時,開發人員就不可能創建除了.NET 2.0應用以外的其他應用程序。在Visual Studio 2008里,這一問題會隨著一個微軟稱之為多定向(Multi-targeting)的技術出現而得到部分解決。
Visual Studio 2008將是第一個允許開發人員針對多個.NET Framework版本開發的Visual Studio版本。這意味著開發人員可以打開或創建一個項目,明確地指定.NET Framework 2.0或者3.0或者3.5版本,Visual Studio會自動地過濾Intellisense、工具箱控件、添加引用的對話框項諸如此類的東西,只顯示指定框架版本里支持的那些特性。然后開發人員可以針對這些不同框架版本進行編譯,還能得到每個版本的完全的調試支持。
多定向(Multi-Targeting)的很大的好處在于,開發人員可以馬上在 Visual Studio Orcas中使用絕大多數的新特性(譬如,所見即所得設計器和JavaScript 編輯器等),即使開發人員還在開發或更新老一點版本的項目。
從.NET 1.0到3.5,只能有一個版本的CLR可以被裝載到一個進程里。因為Visual Studio本身部分上就是用.NET框架構建的,所以它也只能裝載自帶的CLR版本。這就使得它幾乎不可能和基于其他版本的應用一起工作。 Visual Studio 2008其實也沒有真正地解決這個問題。可以稱其為打了一個擦邊球,因為.NET 3.0和3.5實際上只是構建于2.0運行時上的類庫。因為這個問題沒有得到徹底的解決,所以如果開發人員要構建.NET 1.0或者.NET 1.1應用,還是需要選擇各自的開發工具,VS2002或者VS2003。不過利好的一面是,至少項目文件不會改變,VS 2005的用戶也可以和VS 2008的用戶協同工作。
(2) 所見即所得——HTML/CSS編輯器
這個版本終于實現了Dreamwaver幾年前就實現的功能:分割視圖(Split View)-就是同時將HTML源碼和所見即所得設計模式打開的視圖。同時,用戶選擇一個頁面上的對象,在代碼中也可高亮顯示所選對象的代碼,就是這里可能還有Bug,因為高亮的部分總是有點錯位。此外,AJAX以及javascript的支持也被內置(支持javascript的Intellisense)。還有對于CSS的一些新的改進,感覺用起來像是在用Word里面的樣式,也許對于美工來說有用。
Visual Studio 2008的這一新特性將提供:無比豐富的CSS支持,包括CSS屬性窗口,CSS繼承圖示器,CSS預覽,以及CSS管理器);極大改進的視圖轉換性能,可以從源碼模式轉換成HTML設計模式將會瞬時完成;對源碼視圖內控件設計器的支持 ,包括屬性構造器,事件接通(wire-up)以及向導將會在源碼視圖內正常工作;更豐富的標尺(ruler)和布局支持 ,可喜的是,它們的值將被自動儲存在外部的CSS文件中;對內嵌模板頁(nested master pages)的設計器支持。
CSS編輯器
Visual Studio 2008的在CSS方面也在較大的改進。新的“管理樣式”屬性窗口允許開發人員在樣式表內輕易地創建、管理和重構CSS規則。 譬如,開發人員可以在樣式表里拖放規則來重新安排它們的次序,在多個文件里對它們進行重構,以及在所見即所得設計器里選擇一個HTML元素來應用CSS規則。
當開發人員在所見即所得設計器里選擇一個HTML元素時,現在也可以使用CSS屬性窗口來查看該元素上所有的CSS規則以及它們對應的設置。這個特性所帶來的好處是,它可以顯示從多個CSS規則繼承而來的層疊式設置(cascading settings)。
三、 ASP.NET 3.5
(1) AJAX和JavaScript支持
在ASP.NET 3.5中將包括所有的ASP.NET AJAX 1.0內置功能。包含在內的將是Visual Studio中顯著改進的AJAX和JavaScript工具支持,包括JavaScript Intellisense 和更加豐富的調試支持。
內建Ajax功能
VS中的JavaScript intellisense引擎對所有標準的ASP.NET AJAX 庫概念(類,屬性,枚舉等等)都有豐富的支持。除了對任何正常的JavaScript代碼提供 Intellisense 支持外,VS現在還允許開發人員添加可選的注釋概要信息來為Intellisense提供額外的提示。

支持JavaScript編輯
在調試AJAX 和JavaScript時,開發人員現在可以在開發人員的服務器端代碼中設置客戶端JavaScript斷點,VS 現在可以自動地在客戶端把它們接連起來(這些斷點也可以在開發人員關閉項目/解決方案時保存起來)。在調試時,開發人員現在也有完整的監視窗口(watch window),intermediate 窗口和其他更多的支持。 VS中的解決方案管理器現在也自動地列出正在運行的JavaScript文檔文件,允許開發人員在任何腳本資源里輕松地設置斷點。
(2) ADO.net的改進
ASP.NET3.5有一些很酷的特性,主要體現在LINQ上面,同時對C#及VB.NET等語言的改進上。這可以極大的提高開發效率。
除了允許編寫使用LINQ的代碼外,很明顯地,在ASP.NET中提供完全的數據綁定支持,允許輕松地把任何 ASP.NET UI 控件連接到LINQ實體上去,可以不用編寫任何代碼即可支持分頁、排序、編輯、刪除、添加新數據。
雖然筆者還沒有在項目中使用這個東西,但是已經可以體會他的用意。這個”一個對象/關系的映射器”,實際上為用戶創建了一個結構化數據集,使得使用起這個數據集類型的時候可以直接操作里面的數據。可惜結構化數據集這個東西效率上差了一些,所以不牽扯到死鎖問題的時候,恐怕用的人也不會特別多。
但事實上,ASP.NET3.5中提供的新特性并不是特別的多。如果對比查看一下System.Web.Ui命名空間,則可以發現,僅增加了幾個新控件:ListView及DataPager等。
ListView是一個基于CSS的嶄新ASP.NET 數據控件,間于Repeater及GridView之間,幫助開發人員更容易地建造數據驅動。它提供了像Repeater那樣豐富的模版,同時又具在grid的高級特性,如翻頁、排序及可編輯功能。但遺憾的是,它并沒有支持鍵盤的上下移動功能。
還有很多LINQDataSource,它可以很容易的創建及展示LINQ數據。
(3) Silverlight和XAML
Silverlight是個跨平臺、跨瀏覽器的.NET插件,允許設計師和開發人員在瀏覽器中建造豐富的媒體體驗和RIA應用。ASP.NET 3.5在見面上支持Silverlight及XAML等插件。Silverlight在最近可以風光無限,并且有可能嵌入到下一代的運行時環境中。ASP.NET 3.5 也將支持對Rails等動態語言的支持,將提供動態框架來支持對數據庫的管理與操作。
筆者認為,到目前為止,ASP.NET可能出于品牌穩定性方面的考慮吧,所以比較核心的變化并沒有。但筆者依然認為.NET 3.5將是了不起的更新版本。在ASP.NET 2.0的劇變曾經引發巨大的軟件開發模式。那么,我們可以期待,ASP.NET 3.5將給我們帶來更大的軟件開發效率的提高。
四、 關于Orcas的思考
筆者的疑問還是有的,這個版本的C++是否還能開發本地代碼?開發本地代碼還是要強迫開發人員安裝.Net framework嗎?這個版本的.Net framework對開發硬件控制是否有新功能,總不能讓我們開發應用而不與如打印機、POS機、PDA、攝像頭、優盤、像機、語音等設備打交道吧? 這個版本對開發報表是否功能加強,應用程序的中國報表一直是很頭痛的事。
在微軟的開發工具還沒有正式推出之前,前面所有一切提到的技術都有可能改變。但是從這個未來的開發工具本質上來講,它想帶給程式開發工程師的便利性,這是毋庸置疑的。面對新的一代語言 (VB9.0、C# 3.0) 和嶄新的程式設計方式,我們要怎樣透過更加便利的開發工具來增加產能。面對技術不斷的更新,如何應用新技術來解決目前的困難,如此種種都將是未來的一大挑戰。
微軟提供了如此功能完備的軟件,筆者禁不住在想,微軟到底想要干什么?不用編寫代碼就能完成應用程序的開發,這等于就是說,Visual Studio 2008將完全就是一個可以讓任何人都可以定制軟件的工具。技術門檻越來越低,越來越多的項目不需要專業的軟件開發人員。.對于企業來說成本降低,因為他們以后可以自己造軟件,造軟件不是什么難事情了,也許不久的將來不需要什么軟件公司。難道微軟是想把全世界的軟件都自己做了?筆者認為,其實微軟就想著賣自己的產品,希望每個Windows用戶都會買一個做軟件的工具,然后自己去做自己想要的東西.這無疑是打破大部分人的飯碗。當然這只是筆者個人的觀點。
五、 小論
筆者在前面介紹總結了Visual Studio 2008的新特性。當然,這并不是說Visual Studio 2008并無缺點可挑。例如,Visual Studio 2008偶爾也會突然的死機,呵呵,這雖然不像在Visual Studio 2005中那么頻繁。當然,就在使用Visual Studio Beat1的過程中,筆者還是非常滿意的。感覺它確實可以提高軟件開發的效率。
據微軟稱Visual Studio 2008、NET 3.5及Windows Server 2008將于2008年2月27日發布。因此,大家都可以比較快的在今年年底看到最終的版本。如果讀者還沒有試過Visual Studio 2008,那么有必要下載一個Beta1試驗一下。當然,讀者也可稍等,等到Beta2發布,同時,據稱,Beta2將包括一個Go-live的許可文件,從而可以真正來體驗.NET3.5了。