預覽Visual Studio 2008新功能

摘要:預覽Visual Studio 2008新功能

原文:http://www.ithome.com.tw/itadm/article.php?c=47295&s=2

存取技術的大改版,可用性再提升
微軟於2007年11月19日發布.NET Framework 3.5與Visual Studio 2008(以下簡稱VS 2008)的RTM(Ready To Manufacture)版本,中文版則預計2008年在2月進入RTM階段,並在4月推出Visual Studio 2008中文版。

新版變化主要是LINQ、Visual Studio Team System及Web等3個主軸。其他的變動不大。如果暫且不使用LINQ的話,升級.NET的必要性不是很高。

不過,VS 2008效能優於2005,並強化Web開發的機制,又提供Multi-Targeting功能,可支援多種.NET版本。所以企業現行的專案,可在不升級.NET版本的情況下,嘗試使用新版Visual Studio,如果考量成本,可下載免費的Express版本,體驗2008的新功能。

效能提升顯著
雖然.NET Framework與Visual Studio所占用的硬碟空間越來越大,是可以預期的發展,但這不代表Visual Studio的效能會越來越差。2008版的執行檔devenv.exe僅有1MB,整個VS 2008開起來載入記憶體則約占20MB左右,小於檔案總管的23MB。

VS 2008的效能優於VS 2005,主要的原因在於模組化的改進。2008版分離框架與工具,在需要的時候才把工具載入,而且編譯器(Compiler)與開發環境由不同程序管理,只有執行時載入,完成後即回收,因此效能有所提升。

VB.NET持續改進,J#則消失了
再就程式語言觀察,.NET從一開始的C#、VB.NET、C++及短命的JScript等4種語言,JScript很快退出之後,.NET 1.1又推出希望侵蝕Java版圖的J#。

但我們可以發現多數技術的推陳出新,都專注在C#和VB.NET。例如.NET 3.5推出的LINQ,就只支援C#和VB.NET,C++並沒有實作。而另一個發現是J#已經從.NET中消失,事實上VS 2008在Beta版時,微軟即在文件中聲明:「Visual J# has been removed from Visual Studio Code Name "Orcas".」。

至於技術地位略低於C#,但使用族群卻很龐大的VB.NET,後續發展則未必會遜於C#。.NET 3.5針對C#和VB.NET兩種語言都有所改進, VB.NET甚至推出稱為「Literals」的技術,可以在宣告階段辨識XML,此部分是C#沒有實作的技術。

基於前一版功能加以強化
若從.NET Framework綜觀技術上的變化,3.5版是基於3.0的架構微幅增加LINQ(Language Integrated Query)與Ajax技術。LINQ企圖統一資料存取的方式,後續影響不容小覷。而ASP.NET雖升級到「3.5」版,實際上只是將2007年4月推出的ASP.NET AJAX 1.0,納入ASP.NET 2.0,因此稱為小改款一點也不為過。

至於工具面,2008版主要是彙集整理之前推出的大大小小套件,成為基本的內裝,然後再補強不足的開發機制。例如.NET Framework 3.0推出後,WPF和WCF的設計工具始終停留在Beta的版本,VS 2008終於推出成熟的工具。

而Web開發方面,最獲好評的強化,是提供JavaScript Intellisense(智慧型感知功能),及單步偵錯與變數追蹤等機制。此外,微軟曾嘗試在Visual Studio 2005支援多種.NET版本,卻沒有成功,2008版終於推出「Multi-Targeting」功能,支援.NET 2.0以上的版本。

在落實軟體生命周期機制上,著重強化軟體品質
新版的另一個焦點,是結合Foundation Server提供的Team System功能。Visual Studio Team System 2008因應軟體瑕疵,提供181項檢查機制,此外,針對軟體品質的控管,Team System新增效能前後版本的比對、程式碼的可維護度分析,以及Ajax的測試功能。

新版加入的Web Access功能,可以透過Web介面,編修、查看專案相關的文件與報表,甚至檢視原始碼,適合開發據點分散的專案,可幫助管理者隨處編修與管理專案進度。

LINQ以簡化資料存取工作為號召
早在VS 2008上市之前,關於LINQ的報導早已沸沸揚揚,現在Amazon的網站,標題包含「LINQ」的書已經超過10本,Apress、Minning、Wrox和Wily等知名出版社都有相關著作。

LINQ從語言層級提供資料查詢的能力,並統一資料庫、XML、檔案、DataSet甚至陣列等資料類型的存取方法。探究微軟技術院士Anders Hejlsberg設計LINQ的目的,似乎像是要完成當初在Borland希望把資料存取方式融入Delphi的心願。

LINQ目前只支援SQL Server
.NET Framework 3.5畢竟是LINQ的第一個版本,目前資料庫方面僅支援微軟自家的SQL Server。目前已有一個稱為「DB_Linq」的開放源碼專案,嘗試開發Oracle與MySQL的LINQ Provider(資料提供者),不過仍在0.13版。至於官方的版本,根據以往的經驗,Oracle通常會支援.NET平臺的技術,而IBM的DB2則較不樂觀。

隨著LINQ的持續發展,未來若有足夠的Provider,可以支援多家資料庫的話,LINQ有機會解決SQL之間差異化的問題。現行的SQL指令並非完全統一,微軟使用T-SQL,而Oracle則是PL/SQL,兩者之間有些微差異,基本上無法輕易地轉換。

而LINQ是透過程式語言整合的技術,編譯器在程式送出查詢時,才即時轉換成對應的資料庫SQL指令,因此LINQ若發展成熟,有機會讓資料查詢的工作更為單一化。

開發者的工作變得簡單,但Provider的設計變複雜
採用LINQ直接明顯的好處,是開發者的工作變簡單。SQL陳述句由Provider動態組合,過去撰寫SQL陳述句,相同目的有多種寫法,而各種寫法的處理效率可能有天壤之別,而使用LINQ的話,最佳化就變成Provider的工作。

這意謂著Provider的品質,將左右存取資料的效能,而且設計複雜度,比過去高。因為早期的資料庫Provider只負責連結的功能,查詢及型態轉換由程式處理。而LINQ則全部由Provider處理,再加上LINQ有一些機制,例如在取得查詢資料後,LINQ定義比較抽象化的方式,截取其中的內容,這是SQL沒有的功能,需要Provider實作。

ASP.NET工具面的新功能較受矚目
當ASP.NET從2.0的版本升格為「3.5」,吸引了開發者的目光。不過,從以下公式可以清楚了解技術層面的更新不多:

ASP.NET 3.5=ASP.NET 2.0+AJAX+ LINQ的支援+新控制項

如果沒有採用LINQ,那麼ASP.NET 3.5與ASP.NET 2.0加裝ASP.NET AJAX 1.0擴充套件,兩者使用起來沒什麼不同。唯一會改變的是Web.config檔,將指向2.0的路徑轉向成3.5。

支援JavaScript開發與除錯是一大賣點
若從工具的層面分析,VS 2008針對Web的開發,新增不少好用的功能,一般評價最高的是對CSS與JavaScript的支援,其次還包括細膩小功能,例如新增「Split」頁籤,可以同時檢視原始檔與設計畫面,當使用者點選特定元件,相對的標籤(Label)將自動反白。

LinqDataSource簡化網頁的LINQ開發
ASP.NET 3.5增加的控制項,主要是LinqDataSource、DataPager和ListView等3個控制項,其中因應LINQ推出的控制項LinqDataSource最值得注意。

微軟自ASP.NET 2.0推出的一系列DataSource控制項,以精靈化的圖形化設定步驟,大幅簡化了資料庫連結與查詢的工作,LINQ當然也少不了相對的DataSource控制項,以降低網頁存取資料的複雜度。

掌握最新.NET發展趨勢,Scott的部落格全都「露」
隨著Web 2.0的蓬勃發展,傳遞資訊的管道變得更加多元,相較於兩年前.NET 2.0及Visual Studio 2005版所能取得的資訊,Visual Studio 2008雖未上市,相關訊息已經相當透明。

特別是微軟身兼.NET Framework、ASP.NET、IIS、WPF及Silverlight等開發團隊的負責人Scott Guthrie,頻繁地應用部落格,分享最新的技術應用,以及未來發展的規畫,全球有許多.NET開發者緊盯他的訊息。建議有興趣的開發者,可多利用國內外.NET專家的部落格,就可以找出微軟技術發展的脈絡。