ASP.NET vNext 微筆記

今天看到一篇 Rick Strahl 的 ASP.NET vNext 文章,裡面有些東西,稍微記一下....

關心 ASP.NET vNext 的人可能已經讀過小朱大大寫的相關文章,例如:ASP.NET vNext @ 2014。那麼,你可能已經知道,ASP.NET vNext 擺脫了 System.Web.DLL,把 Web API 合併至 MVC 框架,而且更全面地採用 task-based 非同步程式模型。因此,我們應該可以期待,採用 vNext 應用程式將會更模組化、有更好的效能、更容易撰寫非同步程式(搭配 C# 的 async/await 語法),而且更容易延展(scale)。

此外,同樣重要的是知道 ASP.NET vNext 已經沒有的東西。除了剛剛講的 System.Web 之外,底下這些技術也不存在於 ASP.NET vNext:
  • Web Forms
  • ASMX Web Services
  • ASP.NET AJAX
  • WCF REST
  • Http Module 和 Http Handler
上列技術仍可以在傳統的 ASP.NET 架構下繼續使用,但不能在 vNext 應用程式中使用。在 IIS 上面運行的應用程式不能同時混用傳統 ASP.NET 和新一代 ASP.NET vNext 框架。

兩種 CLR 口味

ASP.NET vNext 應用程式有兩種執行環境可以選擇:Core CLR 和 Full CLR。顧名思義,前者精簡輕盈,後者包山包海。

選擇使用 Full CLR 的 vNext 應用程式將可以使用 .NET Framework 4.5 的全部功能,而且是使用 GAC 裡面的 .NET DLL 組件。

選擇使用 Core CLR 的 vNext 應用程式則是透過 NuGet 來載入一些核心的 CLR 組件。主要的優點是支援 xcopy 方式部署,以及能夠與其他 CLR runtime 版本 side-by-side 執行。缺點則是少了許多組件可用,例如 WinForms、WPF、WCF、WorkFlow 等等。

雖然 vNext 應用程式可以同時支援 Core CLR 和 Full CLR,而且我們可以在程式裡面使用條件編譯敘述  #if ASPNET50CORE,但目前看來,實務上恐怕還是開發 Full CLR 的應用程式比較不會碰到編譯失敗的問題(例如因為找不到某類別名稱而編譯失敗)。

K

剛才提到的 Core CLR 核心組件載入的過程,小朱大大的文章〈ASP.NET 5 的核心:K〉有更詳細的介紹,建議看看。畢竟這一次 ASP.NET 大改版,K 也是主角啊。



Merry X'mas & Happy New Year!

參考資料

Post Comments

技術提供:Blogger.