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

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