ASP.NET Core 与 .NET Core 演变与基础概述
https://github.com/dotnet/core
https://github.com/aspnet/home
今天看到 .NET Core 的改名计划,感觉跨平台的时代快要来了,从之前的 ASP.NET NEXT,ASP.NET 5,ASP.NET Core 1.0 等概念一路演变过来,花了点时间总结一下几个相关的概念。
OWIN 与 Katana 的关系
ASP.NET Core 1.0 的由来,要追溯到 Katana 这个项目, Katana 是 OWIN 定义规范的一个实现组件集合。
Open Web Interface for .NET (OWIN)
OWIN 是 Open Web Server Interface for .NET 首字母缩写,OWIN 定义了 Web 服务器和应用程序组件之间的交互的规范(specifications); OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一套标准的接口,其目的是为了实现服务器与应用之间的解耦。由于这一规范的目的是发展一个广阔且充满活力的、基于 Microsoft .NET Framework 的 Web 服务器和应用程序组件生态系统,因此它可以将服务器与应用程序之间的交互减少到一小部分类型和单个函数签名,这个函数签名被称为应用程序委托(即 AppFunc)
Owin定义规范
服务器 (Server)
HTTP 服务器直接与客户端交互, 并用 OWIN 语义处理请求, 服务器需要一个适配层将客户请求转换成 OWIN 语义。 支持 OWIN 的服务器有 Katana 和 Nowin 。
Web 框架 (Web Framework)
构建在 OWIN 之上的自包含的独立组件, 向 Web 应用提供可用的对象模型或者接口。 Web 框架可能需要一个适配层来转换 OWIN 语义。 支持 OWIN 的 Web 框架有:
- 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 5 与 ASP.NET Core 1.0
如果还不晓得ASP.NET Next 与.NET Core是什么,可以先补充下知识
魅力 .NET:从 Mono、.NET Core 说起
vNext之旅(1):从概念和基础开始

今天看到了 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 5 现在是 ASP.NET Core 1.0.
 - .NET Core 5 现在是 .NET Core 1.0.
 - Entity Framework 7 现在是 Entity Framework Core 1.0 或者 EF Core 1.0

如何选择?
非常明确的是,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:
- http://dotnet.github.io/getting-started/
 - http://github.com/dotnet/cli
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的包。
ASP.NET Core 下有哪些包
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
ASP.NET Core 与 .NET Core 演变与基础概述的更多相关文章
- asp.net core + mysql + ef core + linux
		
asp.net core + mysql + ef core + linux 以前开发网站是针对windows平台,在iis上部署.由于这次需求的目标服务器是linux系统,就尝试用跨平台的.NET ...
 - 003.ASP.NET Core tutorials--【Asp.net core 教程】
		
ASP.NET Core tutorials Asp.net core 教程 2016-10-14 1 分钟阅读时长 本文内容 1.Building web applications 构建web应用 ...
 - Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
		
目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...
 - ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)
		
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...
 - ABP CORE 框架入门视频教程《电话薄》基于 Asp.NET Core2.0 EF Core
		
ABP框架简介 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...
 - ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
		
ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 首先通过nuget 引用UEditor.Core,作者github:https://github.com/bai ...
 - ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
		
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
 - 【ASP.NET Core】EF Core - “影子属性”    深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1
		
[ASP.NET Core]EF Core - “影子属性” 有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...
 - ASP.NET Core and .NET Core Library Support
		
ASP.NET Core and .NET Core Library Support 详情参见:https://github.com/linezero/NETCoreLibrary/blob/mast ...
 
随机推荐
- Spring实现AOP的多种方式
			
转载自:https://www.cnblogs.com/best/p/5736422.html:加了一些自己的注释: AOP(Aspect Oriented Programming)面向切面编程,通过 ...
 - VB连接MYSQL数据的方法
			
原文链接:http://hanbaohong.iteye.com/blog/704800 第一步:上网http://dev.mysql.com/downloads/connector/odbc/下载m ...
 - C#-VS发布网站-准备待发布网站-摘
			
通过使用“发布网站”工具部署网站项目 准备网站源文件 在vs生成发布文件 配置IIS .NET Framework 4 其他版本 Visual Studio 2008 Visual Studio ...
 - Task Parallelism
			
The Task Parallel Library (TPL) is based on the concept of a task, which represents an asynchronous ...
 - _编程语言_C++_setw()
			
C++ 中使用setw(int n) 来控制输出间隔. 例如: cout<<)<<'a'<<endl;//s与a之间有7个空格,setw()只对后面紧跟的输出产生作 ...
 - 7、使用autotools自动产生makefile
			
通过之前的学习可以知道,makefile拥有复杂的语法结构,编写与维护都不是很方便于是设计出了专门用来生成Makefile的autotools工具,以减轻制作makefile文件的负担. 自主软件主要 ...
 - hdu 5084 前缀和预处理
			
http://acm.hdu.edu.cn/showproblem.php?pid=5084 给出矩阵M,求M*M矩阵的r行c列的数,每个查询跟前一个查询的结果有关. 观察该矩阵得知,令ans = M ...
 - POJ1644状态转移的思想——排列组合
			
m个物品放n个盒子,盒子物品都相同,问你放的方法总数是多少 看着像个排列组合,算着算着就发现我排列组合都忘得差不多啦,哎,什么时候能打败遗忘呢 然后想用dp做,但是转移的方面没有想好 看了看题解感觉这 ...
 - JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表
			
JBoss 7中端口使用列表 JBoss 7中所有配置都在一个文件中(standaone*.xml, domain.xml),和之前的JBoss相比JBoss 7用到的端口变少,我们将以表格的形式列出 ...
 - Java学习---- 数组的引用传递
			
1. public class ArrayRefDemo01{ public static void main(String args[]){ int temp[] = {1,3,5} ; // 利用 ...
 
			
		