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