簡而言之,.NET 3.5最重要的新技術,毋庸置疑一定是LINQ(Language Integrated Query),舊版程式可以相容於.NET 3.5。而且使用Visual Studio 2008可以任選.NET Framework 2.0、3.0、3.5,所以電腦不用安裝多套Visual Studio版本。那麼,還有哪些改善呢?我們特別整理了10大新功能圖解,幫助你快速了解Visual Studio 2008的過人之處。

存取技術的大改版,可用性再提升
此次.NET技術較大的變革是LINQ,相當值得關注,但目前只支援SQL Server,所以尚未進入成熟階段。而Visual Studio 2008的功能相對增多,效能卻優於2005版,因此被喻為「成熟的Visual Studio 2005」。

看看專家怎麼說

新勢訊科技總經理章立民:
「整體而言,Visual Studio 2008與.NET Framework 3.5都有不少具體的新功能,然而重點在於,大部分都是在既有基礎上的強化與延續,而不是徹底地改頭換面。」



微軟全球技術支援中心合作夥伴技術顧問邱英瑞:
「在VSTS 中靠TFS串起開發流程,TFS 2008安裝的過程更簡單,且方便多臺伺服器的部署,因此更容易整合到企業現有環境內。」



微軟TechEd 2007講師董大偉:
「配合著3.5 Extensions 當中的Silverlight整合機制,ASP.NET開發人員將可以突破HTML上限制,在網頁上呈現出更炫麗的前端效果。」


VS 2008新功能1:LINQ
統一各種資料類型的存取方式
現在透過 LINQ的技術,可以簡化存取資料的難度,另一個好處是LINQ從語言層級實作資料存取的功能,所以在撰寫程式碼的同時,Visual Studio的IntelliSense功能具有提示作用,可避免開發者犯錯。

VS 2008新功能2:Visual Studio Team System 2008
內建輔助改善軟體品質的10種方法
Visual Studio Team System 2008強化測試與效能剖析機制,並針對多人合作、據點分散的開發模式,提供Web化的專案管理機制,主要的更新包括具備更多元的壓力測試方法及效能評估機制。

VS 2008新功能3:ASP.NET 3.5
支援LINQ,強化網頁開發機制
ASP.NET 3.5比較特別的控制項,是因應LINQ推出的LinqDataSource,可提供圖形化的步驟,幫助開發者快速繫結資料來源,設定篩選條件及網頁是否提供新增、刪除、修改及排序等機制。

VS 2008新功能4:Report控制項
透過精靈化的步驟快速開發報表應用
透過Visual Studio 2008提供的Report控制項,無論是Windows或者Web應用程式,都可以精靈化的步驟快速開發報表應用,而且控制項上直接內建上/下頁、另存PDF及列印的機制。

VS 2008新功能5:Client Application Services
Web與Windows程式可共享身分處理機制
透過Web Services提供一組使Web與桌面應用程式可以共用的身分驗證服務,開發者不用再為Web與桌面應用程式分別撰寫驗證與授權的程式。

VS 2008新功能6:Synchronize Services for ADO.NET
搭配本機資料庫,簡化資料同步作業
Synchronize Services for ADO.NET技術,提供了漸進式與衝突處理指令,可以簡單處理本機與伺服器之間資料同步的作業,不但大幅降低程式開發的複雜度,也減少應用程式對網路的依賴程度。

VS 2008新功能7:VSTO進入第3代
強化文件結合應用程式的應用
可直接在開發環境開啟Word、Excel、Outlook、Project或者SharePoint等文件範本,並可拖拉按鈕、文字框或下接式選單等各種控制項至文件,然後撰寫程式碼,或設定讀寫權限。

VS 2008新功能8:開發WPF更方便
視覺化的WPF設計與除錯工具
新版的WPF設計工具可以滑鼠拖拉點選的方式設計畫面,針對XAML原始碼也提供Intellisense機制。此外,開發者可使用分割視窗,比對控制項與XAML的內容。

VS 2008新功能9:Multi-Targeting
可選擇.NET專案的平臺版本
Visual Studio 2008推出多定向功能(Multi-Targeting)功能,開發者可在開啟或新增專案時,選擇.NET Framework的版本(限2.0、3.0及3.5版),不再強制升級專案到最新版的技術。

VS 2008新功能10:ClickOnce
強化遠端部署與更新的機制
新版ClickOnce功能,可根據使用者帳號,執行安裝步驟,而且對於改變應用程式部署的位置有較佳的支援。存取技術的大改版,可用性再提升

微軟於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專家的部落格,就可以找出微軟技術發展的脈絡。LINQ統一各種資料類型的存取方式

微軟的ORM(Object-Relational Mapping,物件-關聯映射)解決方案,即是LINQ(Language Integrated Query)。能夠讓物件導向程式語言存取關聯式資料庫時,自動將資料表轉換成物件類別庫,以維持物件導向觀念與設計的一致性。不過LINQ已超越ORM僅針對資料庫應用的範疇,它可以用一致性的方法,存取XML、陣列、DataSet及資料庫等多種不同類型的資料,對開發人員而言,可以大幅降低學習的成本。

過去針對資料庫、XML、陣列、DataSet或者檔案系統等各種不同的資料型別,開發者必須撰寫不同的查詢陳述式,不僅複雜而且開發階段無法確認程式的正確性。例如查詢資料庫,SQL陳述式是以字串累加的方式組合,而且必須自行設定參數的型別。尤其XML的查詢門檻更高,因為階層式的結構太複雜,要找到特定節點,必須層層搜尋,要寫冗長的程式碼,或者再額外學習XPath技術。

現在透過 LINQ的技術,可以簡化存取資料的難度,另一個好處是LINQ從語言層級實作資料存取的功能,所以在撰寫程式碼的同時,Visual Studio的IntelliSense功能具有提示作用,可避免開發者犯錯。



LINQ使用一致性的方法查詢不同類型的資料

過去存取陣列、檔案及資料庫的方法完全不同,開發者必須根據資料型別撰寫查詢陳述式。現在.NET Framework 3.5透過LINQ讓開發者可以使用一致性的方法,查詢各種類型的資料,不再需要學習多種存取型態的方法。如圖,LINQ使用相同的From、Select、Where、Order By等相同的語法結構,存取4種不同類型的資料。




VB.NET讀取關聯式資料庫,使用LINQ前後程式碼對照




VB.NET讀取XML,使用LINQ前後程式碼對照

Visual Studio Team System 2008 內建輔助改善軟體品質的10種方法

針對軟體生命周期管理這個領域,Visual Studio Team System 2008強化測試與效能剖析機制,並針對多人合作、據點分散的開發模式,提供Web化的專案管理機制。主要的更新包括具備更多元的壓力測試方法及效能評估機制,並新增Web Access機制,不用安裝Visual Studio可透過瀏覽器檢視與編修專案文件,或者調閱程式碼內容。

此外,為避免軟體瑕疵引發的資安問題,新版的Code Analysis總共包含181條檢查項目,雖然數量與前一版差不多,但內容有所差異。2005版的檢查項目較細,有一些容易誤判,造成開發人員的負擔;而2008版刪除部分較為枝微末節的內容,調整檢查項目為企業層級才會在意的規則。

而新增的程式複雜度度量(Code Metrics)機制,是用以評估程式的可維護性。根據研究,複雜度高的程式,除錯風險與維護成本也相對提高。

微軟參考定義CMMI的卡內基美隆大學(Carnegie Mellon University)提出的維護度量測公式,並且將它簡化成為更易於理解可維護性的評估機制。卡內基美隆的原始公式如下:

171 - 5.2 * ln(aveV) - 0.23 * aveV(g') - 16.2 * ln (aveLOC) + 50 * sin (sqrt(2.4 * perCM))

根據這個複雜公式計算出來的數字,數值越大,可維護度越高。初步分析卡內基的公式,影響數字的重要變因,不外乎程式碼行數過多,以及過多的判斷式或迴圈數,開發者應盡量以上情況,此外程式註解有加分效果。


壓力測試

壓力測試執行結束後,除了提供測試相關資訊與摘要,也列出執行速度最慢的5個網頁及測試腳本,作為開發團隊效能調校的參考。資料來源:微軟,iThome整理,2008年1月
 
使用者可自訂多個效能分析圖表並列檢視,而且在任一圖表中選定時間區段之後,所有的圖表將同步更新,顯示此段期間的效能表現。資料來源:微軟,iThome整理,2008年1月




單元測試

Visual Studio 2008針對單元測試的機制,做了介面上的改進。在2005版若要執行一個TestMethod,必須切換到「測試檢視」或「測試管理員」,而到了2008版,直接在TestMethod上按滑鼠右鍵,即可看到「Run Tests」的選項。資料來源:微軟,iThome整理,2008年1月




效能差異比較

Visual Studio Team System 2008 新增了效能比較功能,你可以用前一個版本的程式為基準,比較不同版本的效能差異,同時比對程式修改前後效能的差別。資料來源:微軟,iThome整理,2008年1月




效能剖析
Visual Studio Team System 2008強化程式碼的顯示方式,在影響效能最嚴重的部分以「著火」圖例標示,幫助開發者找到問題所在。資料來源:微軟,iThome整理,2008年1月
錄製Ajax測試腳本
可在IE加裝工具列,記錄使用者操作的過程,進而轉換成測試腳本。資料來源:微軟,iThome整理,2008年1月




程式碼涵蓋度分析
測試執行過後,針對每一個Class的每一個Method,分析出沒有被執行到的程式碼比例,進而協助開發團隊找出無用程式碼。資料來源:微軟,iThome整理,2008年1月




程式複雜度分析
Metrics功能很多,可用來計算程式碼維護度、程式碼獨立的執行路徑數量、類別繼承深度、類別之間的耦合度及程式碼行數,作為管理者分析程式複雜度的參考。資料來源:微軟,iThome整理,2008年1月

1. Maintainability Index(維護度分析):維護度數字為0~9顯示紅燈;10~19顯示黃燈;20~100顯示綠燈。

2. Cyclomatic Complexity(程式碼獨立的執行路徑數量):計算If、Switch Case、Do While、For Loop的數量。基本上,數字越低越好。

3. Depth of Inheritance(類別繼承深度):過多的繼承階層表示有可能過度工程化,會提高程式的複雜度。所以較低的數字比較好。

4. Class Coupling(類別之間的耦合度):耦合度低,表示比較可能加以再利用。所以較低的數字比較好。

5. Lines of Code:不包含註解及宣告等,僅計算可執行的程式碼行數。較低的數字比較好。




181條開發規範預防軟體瑕疵
Code Analysis機制中定義181條安全性、效能及命名規則檢查的規範。專案經理可強制設定全團隊在簽入程式碼時,先執行Code Analysis。資料來源:微軟,iThome整理,2008年1月




Web化的專案管理介面
這項功能主要是微軟透過買下Teamplain的產品所取得,在Visual Studio 2008 Team Server稱為「Web Access」,利用瀏覽器可以遠端編修與檢視專案相關文件與報表,也可檢視程式碼,但無法撰寫程式。資料來源:微軟,iThome整理,2008年1月




Team Foundation與Office System的整合
這項功能的目的是為提供非開發人員的專案角色成員一套適合的存取介面,專案管理者的電腦只要加裝外掛程式,即可在沒有Visual Studio的情況下,於Office選取專案名稱,連結Foundation Server編修工作項目。資料來源:微軟,iThome整理,2008年1月

ASP.NET 3.5 支援LINQ,強化網頁開發機制

新的ASP.NET版本為「3.5」,但實際上的更新,只是把2007年推出的ASP.NET AJAX 1.0,納入ASP.NET 2.0,並新增支援.NET平臺的新功能LINQ(Language Integrated Query)及些許控制項。

企業如果現階段仍未考慮採用LINQ技術,那麼使用.NET Framework 2.0,再額外下載ASP.NET AJAX 1.0,與ASP.NET 3.5的功能意義雷同,未必需要急著升級。

ASP.NET 3.5比較特別的控制項,是因應LINQ推出的LinqDataSource。如同ASP.NET 2.0推出的ObjectDataSource及SQLDataSource等,LinqDataSource也提供圖形化的步驟,幫助開發者快速繫結資料來源,設定篩選條件及網頁是否提供新增、刪除、修改及排序等機制。
>>>5步驟使用LinqDataSource控制項完成網頁資料表

相較於桌面應用程式連線資料庫後,所有工作可以在單一連結下完成,Web應用程式的情況較為複雜,ASP.NET網頁在需求送出之後,HTTP連線即中斷,因此資料繫結的過程比桌面應用程式複雜。例如網頁的分頁查詢,第5頁內容可能是第30到40筆的資料,這樣的操作不可能只以SQL陳述句實作,可能要運用StoredProcedure或本機端的類別,無法單純以資料庫完成,可能必須搭配多種資料來源。

這些DataSource控制項即是希望重新定義資料繫結,企圖抽象化資料的來源,無論是資料庫、XML或者DataSet,資料截取完後,就回收資源給其他的應用。

若就開發工具面上的強化,Visual Studio 2008增加了一些關鍵的Web開發機制,包括CSS的設計與管理工具,以及CSS/HTML的Intellisense機制,還有JavaScript的開發與除錯功能,這項機制最受社群關注。

JavaScript是開發Web應用常見的技術,只是在Ajax興起之前,開發者往往認為JavaScript是開發網頁互動機制的「小程式」,因此沒有受到重視。

事實上當JavaScript的程式碼增加,除錯與管理的困難度便浮現。尤其JavaScript的語言有大小寫的區分,而且許多函式是層層堆疊,然而市面上卻沒有成熟的編輯器,足以支援企業開發的需求。

利用記事本或UltraEdit寫程式,會有開發與除錯不易的問題,Visual Studio 2008支援JavaScript,提供Intellisense機制,當使用者輸入【物件.】,系統就會自動彈出屬性方法的選單,所以開發上不用擔心打錯字或者記憶屬性和函數的問題。在除錯功能方面,開發者可以設定中斷點、單步偵錯或者追蹤變數,甚至與IE結合,同步檢視執行的結果。也就是說,VB與C#的開發經驗,可以完全複製到JavaScript,對於網頁開發的生產力是一大助益。

此外,Visual Studio 2008能同時處理不同.NET版本所開發的程式碼,也是相當實用的功能。過去以新版Visual Studio開啟專案,即自動將程式升級到最新的.NET版本,而Visual Studio 2008具備Multi-Targeting機制,可以支援.NET 2.0、3.0及3.5等專案版本,所以如果企業尚未決定是否升級到ASP.NET 3.5,開啟專案時可選擇2.0或3.0的.NET Framework版本,Visual Studio即自動連結該版本可以使用的專案範本、工具箱、參考的內容及IntelliSense。如此一來,開發者既可停留在原來的.NET版本,同時又可使用Visual Studio 2008新增的Web開發機制,是可以兩全的作法。


提供JavaScript除錯機制
JavaScript語言有大小寫的區別,因此程式容易因為大小寫或拼字的錯誤,而無法正確執行,Visual Studio 2008提供的除錯機制,對JavaScript的開發與維護有很大助益。資料來源:微軟,iThome整理,2008年1月




提供JavaScript Intellisense機制
JavaScript函式層層堆疊,語法不易記憶,Visual Studio 2008提供Intellisense功能,希望加速開發JavaScript的生產力。資料來源:微軟,iThome整理,2008年1月




提供CSS Intellisense機制
無論是ASP.NET或者HTML網頁,Visual Studio 2008都提供CSS的Intellisense機制。資料來源:微軟,iThome整理,2008年1月
5步驟使用LinqDataSource控制項完成網頁資料表
點選ASP.NET伺服器控制項,選擇「New Data Source」。
選擇LINQ作為連結資料庫或物件的型式。
選擇需要存取的資料表與欄位,可進一步點選「Where…」及「Order By…」按鈕設定資料篩選的條件式。
點選控制項,設定是否具備新增、修改與刪除機制。
執行結果。

Report控制項透過精靈化的步驟快速開發報表應用

以前在網頁上開發報表應用是非常辛苦的工作,現在透過Visual Studio 2008提供的Report控制項,無論是Windows或者Web應用程式,都可以精靈化的步驟快速開發報表應用。

開發者點選Visual Studio 2008提供的Report控制項會觸發報表精靈,只需逐步點選設定,即可快速完成一張報表。由於Report控制項會自動繫結一個ReportViewer控制項,當ReportViewer被設定為本機處理時,不需要再建置報表伺服器,就可以列印報表,這是與Crystal Reports最大的差別。

ReportViewer還包括上一頁、下一頁及另存PDF格式等功能,這些在微軟過去推出的Reporting Services,都是必須自行開發的部分,現在則可以減少許多開發的負擔。


提供CSS Intellisense機制
步驟 1:選擇新增「報表應用程式」,或者在Web/Windows程式中新增Report控制項,Visual Studio即自動建立報表範本。
步驟 2:選擇資料來源。
步驟 3:設定報表類型,可選擇表格式或矩陣,然後拖拉顯示的欄位,及用以篩選資料的條件變數。
步驟 4:選擇報表希望採用的配置方式與樣式。
步驟 5:完成的報表即包含現成的ReportView控制項,內建上一頁、下一頁、另存檔案以及列印功能,開發者無需再自行撰寫相關程式。資料來源:章立民,iThome整理,2008年1月

Client Application Services讓Web與Windows程式可共享身分處理機制

應用程式免不了都需要一組登入、驗證與授權的機制,過去使用者必須自行撰寫程式,以驗證使用者身份的合法性,再根據角色授予適當的存取權限。

針對這樣相似又重複的開發負擔,ASP.NET 2.0推出一組驗證使用者身份的控制項,相對簡化了Web應用程式的開發工作。Visual Studio 2008進一步延伸到桌面應用程式,推出用戶端應用程式服務(Client Application Services),透過Web Services提供一組使Web與桌面應用程式可以共用的身分驗證服務,開發者不用再為Web與桌面應用程式分別撰寫驗證與授權的程式。


Web應用程式的設定方式
必須先勾選「使用Visual Studio 程式開發伺服器」透過Web Services存取使用者設定,然後修改Web.Config與Web.Config-System.Web,加入驗證所需的設定,及畫面的初始值。資料來源:章立民,iThome整理,2008年1月




Windows應用程式的設定方式
Visual Studio預設不啟用用戶端應用程式服務,開發者需勾選「啟用用戶端應用程式服務」,即可與ASP.NET應用程式共用驗證、授權與個人化設定等服務。
點選「載入Web設定」,即可動態從Web伺服器截取使用者個人化的偏好設定及相關資訊。若選擇「同步處理」,應用程式的設定則以Web伺服器的設定為初始值,強制統一使用者介面。資料來源:章立民,iThome整理,2008年1月

Synchronize Services for ADO.NET 搭配本機資料庫,簡化資料同步作業

隨著微軟推出檔案大小不到1MB的精簡型資料庫──SQL Server 2005 Compact Edition,.NET 3.5也內建Synchronize Services for ADO.NET技術,處理本機與遠端伺服器之間的資料同步工作。未來應用程式的資料可以儲存在本機電腦,並使用存取資料庫的方式,簡單處理本機資料。

Visual Studio 2008預設採用SQL Server 2005 Compact Edition,做為本機/用戶端資料庫。

過去本機電腦在沒有微型資料庫的情況下,開發者常以DataSet作為離線資料表,或者利用純文字檔儲存資料。然而無論查詢DataSet或者純文字檔,程式碼都相當冗長。在新的開發環境中,做法將更為單純。像是Synchronize Services for ADO.NET技術,提供了漸進式(Incremental)與衝突處理(Conflict)指令,可以簡單處理本機與伺服器之間資料同步的作業,不但大幅降低程式開發的複雜度,也減少應用程式對網路的依賴程度。


設定本機與伺服器資料同步的方法
在專案中加入「本機資料庫快取」元件,並定義需要存放於用戶端的資料內容。
相較於過去冗長的程式碼,利用Synchronize Services for ADO.NET撰寫同步作業,只需3段程式碼即可完成。資料來源:章立民,iThome整理,2008年1月

1. 建立SyncAgent類別,負責同步的工作(NorthwindSyncAgent是Visual Studio 2008根據前一步驟的設定,自動產生的類別)

2. 設定為雙向同步(系統預設值為Download Only,即由伺服器端複寫用戶端資料)

3. 執行同步作業

VSTO進入第3代,強化文件結合應用程式的應用
微軟自Visual Studio .NET 2003推出VSTO(Visual Studio Tools for Office)以來,主要的目的是希望取代過去的VBA(Visual Basic for Applications),提供更強大的功能,讓Office系統及文件也具備可程式化的機制。

Visual Studio 2008在這方面的一大突破,是可直接在開發環境開啟Word、Excel、Outlook、Project或者SharePoint等文件範本,並可拖拉按鈕、文字框或下接式選單等各種控制項至文件,然後撰寫程式碼,或設定讀寫權限。讓一份Office文件,也可以是一個可執行的應用程式。


Visual Studio 2008可直接在開發環境開啟Office的文件範本,加入各種控制項,開發專屬的應用。資料來源:李智樺,iThome整理,2008年1月



開發WPF更方便,已具備視覺化的WPF設計與除錯工具
微軟推出.NET 3.0時,並未針對WPF推出成熟的工具,Visual Studio 2005時,設計工具停留在Beta的版本,直至Visual Studio 2008終於推出正式版的設計與除錯工具。

新版的WPF設計工具可以滑鼠拖拉點選的方式設計畫面,針對XAML原始碼也提供Intellisense機制。此外,開發者可使用分割視窗(SplitView),比對控制項與XAML的內容,點選特定控制項時,XAML對應的控制項即自動反白。


當使用者以分割視窗點選控制項,下方的XAML原始碼將自動反白呈現對應的標籤內容,利於修改及除錯。


WPF的偵錯機制,會在載入或編輯XAML時,於錯誤清單顯示錯誤訊息,並提供必要的描述資訊。


Visual Studio 2008提供WPF偵錯機制,並顯示錯誤清單及相關描述。資料來源:章立民,iThome整理,2008年1月

Multi-Targeting 可選擇.NET專案的平臺版本
微軟曾試圖在Visual Studio 2005做出多版本支援的功能,但顯然是沒有成功。因此企業若需要維護舊版本的ASP.NET,又想學習2.0版的技術,當時的作法是同時安裝Visual Studio .NET 2003與Visual Studio 2005。

到了Visual Studio 2008,微軟完成了多定向功能(Multi-Targeting),不再強迫程式碼自動升級。事實上,不同版本的.NET Framework,在檔案總管中分屬不同的資料夾,開發者選擇.NET Framework版本後,Visual Studio 2008會自動顯示該版本可使用的專案範本、工具箱、可參考的內容及IntelliSense等。所以,企業可以更彈性地規劃程式的升級或移轉的策略。


Visual Studio 2008推出多定向功能(Multi-Targeting)功能,開發者可在開啟或新增專案時,選擇.NET Framework的版本(限2.0、3.0及3.5版),不再強制升級專案到最新版的技術。資料來源:微軟,iThome整理,2008年1月



ClickOnce 強化遠端部署與更新的機制
為簡化部署桌面應用程式的麻煩,微軟於.NET推出ClickOnce機制,使用者只要透過網頁點選特定網址,即可啟動應用程式部署與更新作業,不再需要寄送光碟,或者指派專人協助安裝,方便而且時效性更高。

Visual Studio 2008進一步強化部署機制,可在專案中設定依使用者帳號執行不同的安裝程序。而且對於改變應用程式的部署位置,與驗證過期(Expire)的處理有較好的支援。

此外,有一些應用程式必須在用戶端搭配其他特定的元件或執行環境,例如.NET Framework或者Flash,新版ClickOnce可以設定在部署前先偵測用戶端環境,檢查是否具備必要元件,如果沒有則順帶加裝。針對WPF開發的Web應用程式,新版ClickOnce的部署機制也已經提供支援。


新版ClickOnce功能,可根據使用者帳號,執行安裝步驟,而且對於改變應用程式部署的位置有較佳的支援。資料來源:章立民,iThome整理,2008年1月

1. 設定發布的檔案內容
2. 確認用戶端是否具備必要元件,例如.NET Framework
3. 設定更新頻率與更新位置
4. 發行公司的說明

專家怎麼說

Visual Studio 2008

章立民,現任新勢訊科技總經理,五度當選微軟最有價值專家MVP,自1992年開始為微軟主講研討會,擁有70本電腦著作。

第一個感受,就是那種平順升級的感覺真好。其實Visual Studio 2008的某些新功能(包括:Web應用程式專案、ASP.NET合併工具、AJAX函式庫…等),在2005版時就陸續以增益集或函式庫額外下載的方式推出,這種形式顯然會成為未來的常態。

整體而言,Visual Studio 2008與.NET Framework 3.5都有不少具體的新功能,然而重點在於,大部分都是在既有基礎上的強化與延續,而不是徹底地改頭換面,對肩負著壓力的開發人員來說,心理衝擊不大,也不會有排斥感,升級意願大增。

我認為Visual Studio 2008有一些值得為人稱頌的巧思。首先,Windows Form與ASP.NET應用程式可以共用一套登入與驗證機制,真是讓人拍手叫好。再者,你可以在Visual Studio 2008使用報表精靈快速製作報表格式檔,而且不論是Windows Form或ASP.NET應用程式,都可以使用ReportViewer控制項預覽與列印報表,甚至匯出成PDF檔。

全新的LINQ則讓我們以一致的方法,存取所有類型的資料來源。另外一項我非常欣賞的新功能,就是能夠利用非常簡單的方法,就將離線資料與線上資料庫同步化的Microsoft Synchronization Services for ADO.NET,它相當符合現在工作模式的需求,我也可以建議好好研究。

LINQ
大部分的商用程式,都少不了資料庫的存取作業。這麼多年下來,許多人也都非常習慣使用Transact-SQL陳述式存取關聯式資料庫資料。這幾年,XML開始流行,如果要存取XML的資料,又得學習另一套寫法。問題是,前端應用程式介面用的又是另外一套程式語言(VB、VC#...等等),這在過去是理所當然,我們也就跟著逆來順受了。

雖然有很多人認為微軟財大氣粗,不過看到Visual Studio 2008所推出的LINQ,我們不得不為此技術的創意鼓掌叫好。LINQ到底好在哪裡呢?首先,LINQ是Visual Basic與Visual C# 的原生語法,再者,你可以使用這套一致的語法查詢所有類型的資料來源,不論資料來源是SQL Server資料庫、記憶體中的集合物件,或是XML檔案。

LINQ難學嗎?一點也不!如果你學過SQL語法,相信不需要多久的時間,就能夠學會並使用基本的LINQ。例如對於熟悉Visual Basic語言的人來說,LINQ與一般的SQL陳述式差不多,而對於熟悉Visual C# 語言的人來說,使用LINQ就像叫用一般的執行個體方法。那麼,還有什麼理由讓你不想去注意它呢?

VSTS

邱英瑞,微軟全球技術支援中心合作夥伴技術顧問。

在VSTS 中靠Team Foundation Server(TFS)串起開發流程,TFS 2008安裝的過程更簡單,且方便多臺伺服器的部署,因此更容易整合到企業現有環境內。而新版內建的Web Access功能,讓我們可直接透過 Web 的方式來管理專案,相當方便。

接著我建議一定要了解TFS 2008的原始程式碼控制功能。使用註解(Annotation)功能,可以清楚看到某一行程式碼在何時被誰異動過及修改的記錄。資料夾比對(Folder Diff)功能,能用來協助比較兩個分支(Branch)間或是本機及伺服器的檔案有何不同。

最後測試工具的部分也很豐富,新版Web測試內建支援Ajax,在資料繫結上,可由精靈設定直接繫結XML及CSV檔案,過程中還可預覽資料。並可以從一個Web測試呼叫另一個Web測試。此外,在負載測試提供更彈性的設定方式及詳細的報表,幫助企業對測試的結果一目了然。

ASP.NET

董大偉,微軟TechEd 2007講師,台灣微軟MSDN講座專屬講師,微軟最有價值專家,.NET書籍暢銷作者,並擔任多家企業技術顧問及教育訓練講師。

如果你持續關心Web的開發技術,會發現過去一年ASP.NET AJAX、Silverlight挾著浩大聲勢而來,占盡媒體版面,而今年ASP.NET 3.5相較之下顯得靜悄悄。

這不令人意外,因為ASP.NET 3.僅在AJAX上增加了一點補強,配合著Visual Studio 2008新增的HTML、CSS編輯器和JavaScript的Intellisense與除錯機制,其實已經形成了一個比較符合時代的Web開發工具整體解決方案。

然而眾人關心的Silverlight整合、MVC支援、Dynamic Control、Dynamic Language Support以及ADO.NET Data Services呢?全都到ASP.NET 3.5 Extensions裡面了(目前僅發布CTP版本)。

因此,當你將關注的焦點移到ASP.NET 3.5 Extensions,會發現我們對ASP.NET的期待,以及下一世代Web開發架構與完整的平臺,在當中都可以窺見一二。

配合著3.5 Extensions 當中的Silverlight整合機制,ASP.NET開發人員將可以突破HTML上限制,在網頁上呈現出更炫麗的前端效果。而ASP.NET 3.5 Extensions中諸如MVC、ADO.NET Data Services等技術,可以開發出更具有架構與延展性的Web應用程式。在各種Web解決方案大行其道的今天,它將是ASP.NET開發人員邁入下一代網站開發技術的重要里程碑。

熱門新聞

Advertisement