專刊內文

當前位置:首頁>專刊分享>內文

瀏覽次數 : 10243



             Visual studio 2008概述
 

 

訊光科技資深RD/陶維佳


前言

  2007年底,萬眾矚目的visual studio 2008和.NET 3.5終於發佈了,中文版本也在近期相繼發佈了90天試用版,在此版本中,這個新版變化主要是LINQ、Team System及Web的開發環境等三大主軸,其它的變動應該不大,目前官方都說明了VS 2008效能優於2005,但可能是筆者的開發環境不是最高等級,所以尚沒有很強烈的感受,因此,筆者針對這半年多來使用VS2008的了解與體驗提供給各位分享,就分為以下六個部份來說明。

 

 

      多目標支援

  所謂的「多目標」事實上就是多種版本的意思,可以讓你在VS 2008開發環境當中,選擇要開發.NET 2.0或是3.03.5的版本,編輯器會自動以選擇最適當的環境為你編譯系統,並自動考慮版本相依性為你做最好的處理,包含程式庫與元件庫等等。我們用下圖來說明:

 

         選擇了.NET Framework3.5版本,那麼在下面的Visual Studio installed templates裏就可以使用WPF application 和WCF web service application等等,這些都是.Net 3.0/3.5才會有的templates。



 

另外,如果創建了一個基於.NET Framework 2.0的一個Web Application,那麼VS2008會創建一個編譯設定,程式集引用以及web.config 設定都會符合.NET Framework 2.0的ASP.NET的項目,這時候你會看到ToolBox的列表中只有基於ASP.NET 2.0的元件,而且如果你對項目進行Add->Reference操作的話,你會發現表單中不支援.NET 2.0的程式集引用都是灰色的無法被選擇引用。

 

 

另一個話題是如果當初創建的是ASP.NET 2.0的項目,未來如何將其轉成.NET 3.5呢?只要在該項目中,選擇內容設定,將Target Framework中的.NET Framework 2.0改成.NET Framework 3.5,並保存起來即可。這樣會使得VS自動將此項目的編譯設置和引用改成相對的framework版本。如你想使用一些LINQ的程式集引用或System.Web.Extensions程式集等都會被加入進來,這個程式集包含基於.NET 3.5版本的asp.net所有元件及最近火紅的ASP.NET AJAX元件 (在.NET 3.5中這是內建的元件)。

 



 

Web設計器和CSS支援
 

VS2008另一個比較重要的特性就是加強了HTML的designer,它帶來了對css設計的良好支援。VS2008的WEB設計器實際上是共用了Microsoft公司另外的一個產品Expression的designer,此Designer不僅有較強的開發介面,而且發現新的designerVS2005designer快了很多,但由於它與VS2005的Designer完全不同,使我們EEP2006的Web Wizard完全不能使用,重新開發讓我們吃盡了苦頭,不過這與一般開發者無關,你們是可以用我們新寫的Wizard持續使用我們EEP2008的Wizard。

 

在VS2008的設計器中,除了原來支援source和design兩種設計視圖外,還新加了split的視圖。所謂Split視圖,就是讓你同時查看HTML source和design,並且能夠同步地更新你所操作的視圖對應到的HTML或source,對熟習HTML語法的開發者來說是一大福音。
 

 

另一個重點就是VS2008還支援一個IDE內嵌的工具表單:Manage Styles,在設計器中可透過View-> Manage Styles來打開這個Styles設計表單,它會顯示頁面上所有的css樣式表和它們所對應的規則。當你任意對一個css規則按右鍵的時候,可以選擇新增css樣式(NewStyle)和修改已有的css樣式(ModifyStyle),它們都會彈出一個視覺化的css編輯器。也可以透過Double Click已有的css規則來自動定位到原來的“.css”檔案來進行修改,同時你也可以拖拉各個css規則來改變它們在page中實際的擺放位置,以便更方便地來進行css佈局。

 

 



Asp.Net Ajax
Javascript支援
 

.NET 3.5內置提供ASP.NET AJAX,還增加了支援WebPart的UpdatePanel,還有支援JSON的WCF等等,VS 2008更整合了JavaScript和AJAX進階的應用與提供極棒的Debug的環境。

 

對一個Web開發人員來說,最願意看到的莫過於VS2008所內建的javascript智慧感知(intellisense,智慧型程式碼導引輔助)了,這個新功能會讓javascript的應用和ajax程式得到更多更廣泛的支援。如下圖中的程式片段中,VS2008會透過document.getElementById()方法所取得的一個html element,並且推斷出這個element所賦予物件(myElement)的類型,並找到innerHTML這個屬性,在JavaScript這種動態的開發環境中能有這種intellisense功能,對筆者經常寫JavaScript的人來說,實在令我很興奮。

 

除此之外,這種的智慧感知的功能也能使javascript能感知道web service的程式參數型態,如我們可以透過System.Web.Script.Serveices.ScriptService在web項目中定義一個web service如下圖。
 



 

接下來可以透過asp.net ajax的ScriptManager物件中增加一個Service引用,並定義為MyService.asmx,這樣我們在上面寫的CallWebService(Name)的JavaScript中,就可以取得此Web Service的程式參數型態,如圖。
 

 

更重要的是,我們可以在javascript中來設定debugger的中斷點,這樣就可以去Debug javascript了。但在VS2005中所無法預先設定中斷的,對開發者而言,可大大提升Debug的能力。
 


 

語言的改進
 

任何一個程式開發語言都在不斷的更新和變化,.net的2個主流語言c#和vb也不例外,在.net framework 3.5中它們的語法也得到了很多的改進。下面介紹其中的一部分:

 
1.自動屬性(Automatic Properties)在.net framework 2.0中如果我們要實現一個class的屬性,那麼我們可以這樣寫:


 

但是在基於.net framework 3.5的程式集中,我們可以寫很少的代碼來實現同樣的功能,如下,對時間的節省是很多的。


2.對象初始化(Object Initializers)
  
在上面的一個例子中如果我們要初始化一個新的Employee類的物件,那麼以前一般的寫法是:



而現在我們可以用一種比較流行的寫法來初始化這個物件,



     比較一下,後一種方法在沒有對應帶參數的構造函數基礎上,僅僅用了一行代碼就完成了與前一種做法相同的功能實現。


3.集合初始化(Collection Initializers)
    與物件初始化器相類似的,集合的初始化可以寫成這樣:

       

 

4.匿名類型(Anonymous Types)

    匿名類型是C#和VB的方便語言特性(也可稱之 var 泛型),它允許開發人員在程式內簡單地定義沒有型別的變數,而不用在編譯階段中固定型態的變數,匿名類型在使用LINQ做查詢時,將可以應用在結果資料的動態轉換。

 

5. Lambda運算式
   
Lambda運算式是一種匿名函數式,它可以包含運算式和陳述式 (Statement),而且可以用來建立委派 (Delegate) 或運算式樹狀架構型別。此為匿名方法提供了更簡單的函數式的語法,也是為了配合編寫LINQ查詢運算式時變得更加靈活,因為它提供了一個非常緊湊而且安全的方式來編寫參數的傳遞,如下的程式碼中,p => p.Age == 25,就是一個lambda運算式,這句的作用是從lstEmps列表中獲取Age為25的一個集合(找出年齡為25歲的員工)。

 

6.查詢語法(QuerySyntax)
  
查詢語法是使用標準的LINQ查詢運算符來表達查詢的一種簡化寫法,該語法能在密密麻麻的程式碼中增加開發者的可讀性和簡潔性。VS2008對查詢語法提供了完整的intellisense和編譯時檢查支援,同Lambda運算式中的例子,下面的查詢語法能完成相同的操作,並完成了按姓名降冪排列 (找出年齡為25歲的員工,按員工姓名降冪排列)。




LINQ
的支援
 

.net framework 3.5中,最大的重點就是LINQ,LINQ to SQL是.NET 3.5中內置的OR/M (物件關係映射),它允許你使用.NET 物件導向模式對關聯式資料庫進行物件方式的操作,如建立一個LINQ物件對象,然後你可以使用LINQ對資料庫進行新增/更改/刪除/查詢等功能。LINQ to SQL也完整支援交易處理(Transaction),View和預存程式(Stored Procedure)的處理,它還可提供了一個把業務邏輯和驗證規則結合進你的資料模型中,這種方式與原來的SQL的方式是截然不同的,所有的開發人員都要考慮是否採用這種方式來進行,由於LINQ我們將有專門的文章討論此LINQ的新觀念與優缺點,在此我們僅簡單定義即可。

 

如下可以輕易利用LINQ to SQL的Templates來自動產生一個LINQ的Class,並以VS2008的server explorer中拖曳所要的Table到dbml的designer上,這樣就完成了一個物件關係的映射dbml。



在頁面中的我們可以直接使用這個LINO的語法來查詢資料了。



 

 

針對VSTS增強功能
 

VSTS(Visual Studio Team System) 2008,是整合的應用程式生命週期管理 (ALM) 解決方案,是由工具、程序和指導所組成,以協助開發小組的所有成員改善其技術並有效地共同合作,在VS2008中當然增加了很多功能,簡單說明如下。
 

資料庫開發:Visual Studio Team System 2008 Database Edition 與相關的MSF流程指引已完全地整合到Visual Studio Team System 2008 Team Suite當中。
 

本控制功能:包括了資料夾差異、附註、損毀、簽出時取得最新項目等新功能。
 

控制負載模型化:可以更準確地建立應用程式或網站的真實工作用法模型的負載測試,

您不需要部署您的應用程式到操作,即可針對實際的狀況來測試它。

尋找效能瓶頸:最忙碌路徑、報告雜訊削減、比較基準報告、行等級取樣等,您可以更輕鬆、
更準確地找出您程式碼效能問題的來源,並可以在更多平台上使用分析工具。

由上至下開發:以系統設計工具 (System Designer) 開始設計應用程式系統,由上至下的作
法可讓您採用更高階的作法,並且更佳地瞭解您正在處理的系統。

Web 存取:可讓您管理工作項目、共用文件、報表和來源控制的Tearm Foundation Server的Wev介面,您
幾乎可以從任何平台連線至Visual Studio Team Foundation Server,您不需要安裝所有的開發工具,即可完整地洞悉軟體專案。


結語
 

         時代的改變確實很快,VS2005還沒用熟,VS2008就出來了,還好這次的改變不大,在我們的接受範圍,雖然Microsoft抽換了Web的Designer,造成我們之前使用IDesignerHost所開發的Web Wizard完全無法使用,但總體而言,影響還是有限,我們還是可以輕易的與之前VS2005所開發的架構相容,隨著VS2005停止出貨,相信使用VS2008的開發者會越來越多,但如果你是剛使用VS2005的開發者,就不一定有立即更新的需求,畢竟除了以上新功能外,VS2005與VS2008的使用方式與功能並沒有極大的差異。當然更新到VS2008的另一個好處就是不必像VS2005需安裝一堆AJAX Extension 1.0,VS2006 Service Pack1,Workflow Foundation Extension等等,會讓你在環境的安裝上變得更為單純與容易,另一方面,任何更新都不可能完全無痛與不必改任何東西,況且當你更新到VS2008之後,使用並對Solution或Project存檔後,是無法逆向回來使用VS2005的,所以更新前必須先行備份。(完)