https://github.com/dotnet/core
https://github.com/aspnet/homehtml
今天看到 .NET Core 的更名計劃,感受跨平臺的時代快要來了,從以前的 ASP.NET NEXT,ASP.NET 5,ASP.NET Core 1.0 等概念一路演變過來,花了點時間總結一下幾個相關的概念。git
ASP.NET Core 1.0 的由來,要追溯到 Katana 這個項目, Katana 是 OWIN 定義規範的一個實現組件集合。github
Open Web Interface for .NET (OWIN)web
OWIN 是 Open Web Server Interface for .NET 首字母縮寫,OWIN 定義了 Web 服務器和應用程序組件之間的交互的規範(specifications); OWIN 在 .NET Web 服務器和 .NET Web 應用之間定義了一套標準的接口,其目的是爲了實現服務器與應用之間的解耦。因爲這一規範的目的是發展一個廣闊且充滿活力的、基於 Microsoft .NET Framework 的 Web 服務器和應用程序組件生態系統,所以它能夠將服務器與應用程序之間的交互減小到一小部分類型和單個函數簽名,這個函數簽名被稱爲應用程序委託(即 AppFunc) api
Owin定義規範服務器
服務器 (Server)mvc
HTTP 服務器直接與客戶端交互, 並用 OWIN 語義處理請求, 服務器須要一個適配層將客戶請求轉換成 OWIN 語義。 支持 OWIN 的服務器有 Katana 和 Nowin 。cors
Web 框架 (Web Framework)框架
構建在 OWIN 之上的自包含的獨立組件, 向 Web 應用提供可用的對象模型或者接口。 Web 框架可能須要一個適配層來轉換 OWIN 語義。 支持 OWIN 的 Web 框架有:asp.net
- Nancy
- SignalR
- WebApi
- FubuMVC
- Simple.Web
- DuoVia.Http
Web 應用 (Web Application)
一個特定的 Web 應用, 一般構建在 Web 框架之上, 使用 OWIN 兼容的服務器運行。
中間件 (Middleware)
特定的目的的服務器和應用之間的可插拔組件, 能夠監視、 路由、 修改請求與響應。
宿主 (Host)
應用與服務器所在的進程, 主要負責應用的啓動, 有些服務器自身也是宿主, 好比 Nowin 。
Katana
Katana 是 OWIN 規範定義實現的一個組件和框架集合,能夠按其中每一個層都可以輕鬆替代的方式來解耦;OWIN 與 Katana 是 ASP.NET 5 以前東西,關於 host, server,middleware 相關實現的源碼能夠在github上找到(https://github.com/aspnet/AspNetKatana),以前實現的 OAuth 2.0 認證受權 也都是基於 Microsoft.Owin.Security.OAuth 來實現的,不過如今 MS 已經不更新新的功能了(常規 fix bug); ASP.NET Core 是支持 OWIN 定義的實現的,也就是 ASP.NET Core 從新設計的 HttpAbstractions 子集,定義在 Microsoft.AspNetCore.Owin 包中。
Katana 與 ASP.NET Core 對應關係
Many of the components, features, and models of Katana are now part of the ASP.NET Core project on GitHub. See https://github.com/aspnet/home for details. We still plan to release updates to Katana itself to address common problems and keeping it up-to-date.
Here is a list of Katana components and where you can find their ASP.NET Core counterparts:
- Microsoft.Owin - https://github.com/aspnet/HttpAbstractions
- Microsoft.Owin.Diagnostics - https://github.com/aspnet/Diagnostics
- Microsoft.Owin.FileSystems - https://github.com/aspnet/filesystem
- Microsoft.Owin.StaticFiles - https://github.com/aspnet/staticfiles
- Microsoft.Owin.Hosting, Microsoft.Owin.Testing, OwinHost - https://github.com/aspnet/hosting
- Microsoft.Owin.Security.* - https://github.com/aspnet/Security
- Microsoft.Owin.Host.HttpListener - https://github.com/aspnet/HttpSysServer
- Microsoft.Owin.Host.SystemWeb - https://github.com/aspnet/iisintegration
- Microsoft.Owin.Cors - https://github.com/aspnet/cors
若是還不曉得ASP.NET Next 與.NET Core是什麼,能夠先補充下知識
今天看到了 ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0 ,雖然只是更名字,可是以爲微軟此次對.NET與 ASP.NET設計的很是好,以前命名的名詞與版本號確實太多老是感受怪怪的[ASP.NET vNext => ASP.NET 5 => ASP.NET Core 1.0],晚上查了查相關文章,大體瞭解一下。以前偶爾https://docs.asp.net/en/latest/上面的文檔,以及http://www.asp.net/ 時常還有 ASP.NET vNext的影子,如今已經沒有了,按照線路圖的發展,估計在2016年3月份會RTM[時間暫定了]。
從新引入
如何選擇?
很是明確的是,ASP.NET 4.6 是個更成熟的平臺,通過了很好的測試。 ASP.NET Core 1.0 是 1.0 版本,包括 Web API 和 MVC,可是不包括 SignalR 或者 Web Pages。ASP.NET Core 1.0 不支持 VB 或者 F#。
ASP.NET Core 1.0 並非結束,僅僅是個全新的開始(開源、組件化、跨平臺), ASP.NET 4.6 還會繼續更新,繼續提供完整的支持。關於具體的說明看官方的吧:
https://docs.microsoft.com/zh-cn/dotnet/standard/choosing-core-framework-server
https://docs.microsoft.com/zh-cn/aspnet/core/choose-aspnet-framework
.NET CLI
DNX(a .NET Execution Environment) 是ASP.NET程序的運行環境,可使用DNVM(.NET Version Manager)管理各類版本的DNX,不過已經被廢棄,取代的是.NET CLI 新的命令行工具,這一特性打算在RC2版本改變(不過官方的文檔仍是基於DNX的,因此能夠先等更新到RC2版本)。
根據文檔中描述到 https://github.com/dotnet/cli/blob/master/Documentation/intro-to-cli.md
.NET Core includes three new components: a set of standalone command-line (CLI) tools, a shared framework and a set of runtime services. These components will replace DNX and are essentially DNX split in three parts. ASP.NET 5 will transition to the new tools for RC2. This is already in progress. There will be a smooth transition from DNX to these new .NET Core components.
DNX (a .NET Execution Environment)在github上也給了說明:
The DNX is being retired in favor of the new dotent CLI command line tools. See:
As a result, we're not accepting anymore changes to this project. Please file any new issues on http://github.com/dotnet/cli.
CLI在MAC下安裝也很簡單,下載包NEXT便可,現尚未CentOS的包。
https://docs.microsoft.com/zh-cn/aspnet/core/api/#namespaces-in-the-aspnet-core-class-library
REFER:
owin
http://owin.org/
Katana
https://github.com/aspnet/AspNetKatana
ASP.NET Core Schedule and Roadmap
https://github.com/aspnet/home/wiki/roadmap/
ASP.NET Core doc
https://docs.microsoft.com/zh-cn/aspnet/core/
Katana 項目入門
https://msdn.microsoft.com/zh-cn/magazine/dn451439.aspx
Exploring the new .NET "dotnet" Command Line Interface (CLI)
http://www.hanselman.com/blog/ExploringTheNewNETDotnetCommandLineInterfaceCLI.aspx
Announcing ASP.NET 5 Release Candidate 1
http://blogs.msdn.com/b/webdev/archive/2015/11/18/announcing-asp-net-5-release-candidate-1.aspx
ASP.NET 5 and .NET Core RC1 in context (Plus all the Connect 2015 News)
http://www.hanselman.com/blog/ASPNET5AndNETCoreRC1InContextPlusAllTheConnect2015News.aspx
ASP.NET 5 已終結,迎來 ASP.NET Core 1.0 和 .NET Core 1.0
http://www.oschina.net/news/70049/aspnet5-is-dead-introducing-aspnet-core-1-0-and-netcore-1-0