首页 > 代码库 > ASP.NET vNext 微笔记

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 核心组件加载的过程,Rick Strahl 的文章和小朱大大的文章〈ASP.NET 5 的核心:K〉有更详细的介绍有更详细的介绍,建议看看。

毕竟这一次 ASP.NET 大改版,K 也是主角啊。

技术分享

Merry X‘mas & Happy New Year!

參考資料

  • ASP.NET vNext: The Next Generation by Rick Strahl

ASP.NET vNext 微笔记