ASP.NET Core 阶段性总结

自从年前用 ASP.NET 5 磕磕绊绊重写了一个项目后 (2015.12),就没怎么关注 ASP.NET 5 相关内容了,为啥?因为实际应用问题太多,而且不是正式版本,变化实在太快,可能你今天了解的东西,明天就被否定了,但现在回过头看,不关注的话就会漏失一些有价值的东西,虽然看看新闻了解到了,但还应该去深入的思考下,并且经历微软开源一步一步走向成熟的过程,这对于我们来说,也是一个机遇。

这段时间,我觉得主要发生了两件事:

  • ASP.NET 5 已终结,迎来 ASP.NET Core 1.0 和 .NET Core 1.0
  • 微软宣布将推迟 ASP.NET Core 的发布日期

对我们影响最大的是 ASP.NET 5 重命名为 ASP.NET Core 1.0,我简单列举几个:

  • 搜索资源不匹配,我应该是搜 ASP.NET vNext?还是 ASP.NET 5?还是 ASP.NET Core 1.0 呢?并且以前写的有关文章资料,都搜索不到了。
  • 程序包名称变化,这个对已经用 ASP.NET 5 开发的项目影响最大,比如Microsoft.AspNet.Mvc变成了Microsoft.AspNetCore.Mvc.Core,相关程序集名称都需要更改。
  • 运行命令变更(包含运行时),主要是增加新的东西 CLI,比如dnu restore变成了dotnet restore等等。
  • ...

上面是对于我们开发者所造成的影响,其实对于微软来说,重命名所带来的额外工作也非常大,这也就造成了 ASP.NET Core 发布日期的推迟,就像新闻中所提到的:这是个很好的改变,但为什么来得这么迟呢?如果像 ASP.NET vNext 改名为 ASP.NET 5 那么迅速就好了。

除了 ASP.NET Core 1.0 重命名外,我觉得还有一个最大的变化,就是 dnx 到 cli 的改变,这部分内容需要深入探讨下,在探讨之前,大家可以先看下这篇博文:K & DN 的前世今生(微软开源命名变革)

  • k -> dotnet -> dn(最终版)
  • kpm -> dotnet -> nuget -> dotnpm -> dotnetpm -> dnpm(最终版)
  • kvm -> dotnetsdk -> dotnvm -> dotnetvm -> dnvm(最终版)
  • k and kvm -> dotnet -> 合并(否决)
  • kre/xre -> dnx(未经讨论确定)

上面是很久之前 GitHub 上一个命名讨论的 Issue,现在回过头看,是不是很有意思呢,因为大家一开始探讨的命名就是现在微软的命名,微软实在做了太多无用功,cli 是从 dnx 变迁过来的,我们先了解下 dnx 是什么?

The DNX (a .NET Execution Environment) contains the code required to bootstrap and run an application, including the compilation system, SDK tools, and the native CLR hosts.

说白了,我觉得 dnx 就是 ASP.NET 5 应用程序的运行时(某段时间内),为什么这样说?我们先了解下 dnx 的历程,dnx 最初被命名为 xre,然后又被命名为 kre,需要注意的是,那时候还没有 CoreCLR,详见《魅力 .NET:从 Mono、.NET Core 说起》的文章最后,xre 中的代码并不是很完善,有很多的代码都是从 mono 借鉴过来的,包括运行时都是 mono,所以,看上面 dnx 的介绍,它其实就是一个运行时,并且因为 dnx 不是很完善,围绕它的命令也就改来改去。

后来微软开发了 CoreCLR,它是一个微软自己的运行时,GitHub 地址不再放在 aspnet 下,而是放在了 dotnet 下,但其实是 CoreCLR 并不是很完善,从开源地址贴出来后,就一直在开发的状态,并不能真正的拿来使用 (跨平台),所以 dnx 一直被 ASP.NET 5 使用着,但后来随着 CoreCLR 的逐步完善,微软就开始考虑抛弃 dnx 了,cli 也就诞生了。

需要注意的是,cli 并不是由 dnx 重命名来的,而是演化过来的,它们俩是两个完全不同的概念,另外,cli 也不是公共语言基础(Common Language Infrastructure)的简写,而是 .NET Core Command Line Interface,翻译过来就是 .NET Core 命令行接口。

CLI, This repo contains the .NET Core command-line (CLI) tools, used for building .NET Core apps and libraries through your development flow (compiling, NuGet package management, running, testing, ...). This repo contains the source code for cross-platform .NET Core command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.

上面和 dnx 的定义对比下,就会发现它们是完全不同的,那 cli 到底包含哪些内容,在上面已经有了详细的解释,.NET Core 命令行接口及其实现,它的作用就是在应用程序和运行时之间搭起一座沟通桥梁,命名形式以dotnet *开始,我觉得 cli 是微软以后所有命令实现的一种规范,应该不会再出现杂七杂八的命令了。

最后,看一段 About .NET Core 的内容:

.NET Core is a cross-platform implementation of .NET that is primarily being driven by ASP.NET 5 workloads, but also by the need and desire to have a modern runtime that is modular and whose features and libraries can be cherry picked based on the application’s needs. .NET Core consists of the CoreCLR runtime and the CoreFX framework libraries. A set of cross-platform tooling can be found in the .NET CLI. The Roslyn compiler and LLILC compiler are sibling projects that support .NET Core. These projects are active on GitHub. You can participate by creating issues or collaborate on development. The main goal of the project is to create a modular, performant and cross-platform execution environment for modern applications.

.NET Core 一开始是 ASP.NET 5 跨平台的一种实现,后来被逐步变化为 .NET 跨平台的核心运行时,.NET Core 包含 CoreCLR 和 CoreFX,一个 .NET CLI,Roslyn 和 LLILC 编译器,主要目标:modular(模块化)performant(高性能)cross-platform execution environment(跨平台执行环境)

关于高性能,可以看看最近的这篇新闻:《ASP.NET Core 每秒能处理 115 万个请求,是 ASP.NET 4.6 的 23 倍(5 万个请求)》,另外,ASP.NET Core 1.0 的应用示例:《ASP.NET Core 1.0 Hello World

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2016-02-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

.NET Core 3将支持Windows桌面应用

10830
来自专栏张善友的专栏

.NET Core 2.0 正式发布信息汇总

万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Sta...

21790
来自专栏张善友的专栏

微软开源Erik Meijer团队开发的异步编程库Rx(Reactive Extensions)

2012年11月6日,微软开源异步编程Rx(Reactive Extensions)库。Rx是一个模型,允许开发者把所有的异步数据粘和在一起。它的源代码现在基于...

23480
来自专栏张善友的专栏

.NET Core 2.0 正式发布信息汇总

万众瞩目的.NET Core 2.0终于发布了,原定于9.19的 dotnetconf 大会的发布时间大大提前了1个月,.NET Core 2.0/.NET S...

20600
来自专栏逍遥剑客的游戏开发

WPF工具开发: 第三库选择

30560
来自专栏张善友的专栏

企业应用中使用Silverlight 3

Q&A: Microsoft's Scott Guthrie Breaks Down Silverlight 3 for Enterprise Develope...

22460
来自专栏逸鹏说道

01.NetCore概述

.NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区共同维护。 它是跨平台的,支持 Windows、macOS...

34050
来自专栏张善友的专栏

Microsoft Silverlight Analytics Framework

针对Silverlight 应用程序的Web Analytics Framework 扩展,Mix 2010会议上有一个视频介绍: a video of the...

207100
来自专栏张善友的专栏

MSDN杂志上的Windows Phone相关文章

Windows Phone 7 开发工具和资源 http://msdn.microsoft.com/zh-cn/magazine/gg598932.aspx 在...

22150
来自专栏施炯的IoT开发专栏

转帖--Windows Phone 7开发环境搭建

下文转自WPmind:Windows Phone 7开发环境搭建     在6月22日我们WPMind组织的Windows Phone 7开发技术线上活动结束后...

206100

扫码关注云+社区

领取腾讯云代金券