2011/11/26

.NET Framework 新風貌

就目前所知, 下一版的 .NET Frameworks (根據目前消息,版號應該是 4.5) 應該沒有什麼驚天動地的變革, 預計上市日期也還沒有確定。不過隨著今年 (2011) 在 BUILD 大會上公布的 VS2011 Developer Preview Version (簡稱 "vNext") 讓大家可以廣泛試用, 我們逐漸了解這個新版本的大致狀況。

關於新版 .NET Framework 的資訊非常零散。我盡量把各類重點以中文摘錄如下, 並加上我的個人註釋及補充。

.NET Framework 4.5

  • 增強非同步處理以及平行作業的效能和加強的功能
  • 經改善的 Server Garbage Collector 機制可以降低 Pause Time。.NET 提供兩種 GC 機制, 一種是 Server GC, 另一種是 Workstatioin GC。Workstation GC 是預設值, 它的反應比較快速而靈活, 但是佔用很多 CPU 資源。Server GC 則在平常僅佔用很小的 CPU 資源, 但缺點則是它可能會瞬間佔用較大量的記憶體和 CPU 時間, 從而導致應用程式呆住的狀況
  • 在進行正規表示式 (Regular Expression) 解析時, 可以限制其執行時間
  • 增強存取資源檔案的效能
  • 增強壓縮資料程式的效能
  • 可以在 Application Domain 中指定 Culture
  • 在 .NET 4.0 中已經引進了 Task 型別以支援同步/非同步處理, 在 .NET 4.5 中則為此類處理引進了 await 和 async 兩個關鍵字以方便開發者控制同步/非同步的流程

Visual Studio 2011

  • 可以在 VS2011 中開發 Metro-Style 應用程式; 預期此種應用程式將大量使用於 WP 系列的手機及平板電腦上
  • 改善 JavaScript 的開發和除錯功能, 以及 intellisense, 甚至提供像 "Go to definition" 之類原本 C#/VB 才有的輔助功能
  • 提供更完整的 Application Lifecycle Management  (ALM) 整合工具
  • 佔用的記憶體更小、速度更快
  • 提供更好的偵錯工具
  • 提供 Code Clone Analysis 工具, 可以幫你分析程式碼是否重複, 以方便你進行程式的重構
  • 提供探索式測試的輔助工具。探索式測試 (Exploratory Testing) 被視為黑箱測試 (Black-box Testing) 的一種, 是所謂指令式測試 (Scripting Testing) 的相反。傳統的測試工具比較偏向指令式測試, 亦即制訂測試計畫後, 建立 Test Scripts 並循序進行測試的方法。相對的, 探索式測試比較偏重在「感覺」、「發現/發明」和「經驗」等等抽象的概念。探索式測試比較適合需求和規格並不十分明確的專案, 通常它可以很快速的看出最重大的問題, 或者比較全面向或整合性的問題。然而, 指令式測試則比較能夠發現細部的、平常難以查覺的問題。這兩種測試方式都各有其優缺點, 不應該獨厚任何一種。
  • Metro-Style 應用程式支援近端、遠端和模擬器的除錯方式
  • 內建更多繪圖工具以輔助遊戲開發

ASP.NET 4.5

  • 加強 HTML5 與 CSS3 的支援、WebSockets 的支援、非同步模組及 handlers、Model Binders 等等
  • 提供一個名為 Page Inspector 的 VS 外掛工具, 可協助 ASP.NET 的動態險錯功能。其操作方式很像在 IE9 裡面按下 F12, 只不過這次是直接在 VS 內操作
  • ASP.NET 的預設網站伺服器是 IIS Express,不過也可以手動改回原來使用的 Cassini
  • 支援 ASP.NET 的 HTML Editor Smart Tasks 與 Event Handler Generation
  • 在 ASP.NET 網頁中以類似「重構」-「擷取方法」的方式把部份控制項及標簽予以擷取並包裝成一個 User Control
  • 在 ASP.NET 4.0 中已經引進了 HttpRequest.GetBufferlessInputStream 方法以提供同步的網路資訊讀取方式, 在 ASP.NET 4.5 中則為它所傳回的 Stream 物件加上了 BeginRead 和 EndRead 方法, 使得它也可以進行非同步處理, 如此便可以更充分運用電腦中多重處理緒所能帶來的好處。此外, 又引進了 HttpRequest.GetBufferedInputStream 方法, 這使得程式可以在讀取資料的同時即開始處理已經讀入的資料或者進行其它動作, 提高效能。

沒有留言:

張貼留言