至2002微软公司推出.NET平台已近15年,在互联网快速迭代的浪潮中,许多语言已被淘汰,同时也有更多新的语言涌现,但 .Net 依然坚挺的站在系统开发平台的一线阵营中,而且随着.NET Core 即将到来(2016年6月27日)的正式版,势必迎来新一轮春天。html
要理解.NET Core就有必要了解以前的.NET平台的众多Framework们。2002年微软公司发布的第一个.NET框架————.NET Framework,不久后又发布了.NET Compact Framework 用于在较小的移动设备(Windows mobile),而.NET Compact Framework 也含有一套 相似.NET Framework 体系(Runtime, Framework,Application Model),它是一个复制精简版的 .NET Framework。在数年间微软乐此不疲的推出了数个相似 .NET Framework的框架,以用于在不一样的设备和平台上运行。每一个Framework都有相似的体系但又不彻底相同的,这样Framework愈来愈多,对开发者来讲不同的设备即使功能相同也须要维护多套代码,增长了开发的复杂度。linux
微软对这些问题的从新思考和改进让.NET Core横空出世。
.NET Core是一个开源的模块化的Framework,无论是开发web或移动设备都在同一个Framework(.NET Core)下运行,并且 .NET Core也可在不一样的操做系统上运行,包括Windows、linux、MacOS,实现了跨平台跨设备。
更棒的是.NET Core 在发布程序时不用事先安装Framework而是经过Nuget下载,这样在初次部署时就不用安装一个复杂而庞大Framework,而是按需下载。这种基于Nuget的按需加载铸就了.NET Core 跨平台。git
.NET Core 构成体系以下:github
在.NET Core 中有实现两种RunTime,NativeRuntime 和 CoreCLR。NativeRuntime 将C# 或 VB.net 代码直接转换为原生机器码。而CoreCLR是一个开源的JIT运行时,会将代码编译成中间语言(IL)在最终运行时再转换机器码。web
Base Classlibrary即基础类,例如 FileSystem、Console、XML操做等。windows
提供开发Windows系统的各类触屏设备和ASP.NET程序的一组基础库。app
.NET Core & .NET Framework 都是 NET Standard Library 的实现,一种是跨平台,而另外一种是Windows下特有的,除实现NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的实现。.NET Standard Library 是跨操做系统的关键所在,它定义了一组接口,而每一个操做系统有各自的实现,.NET Core经过nuget能够动态下载当前操做系统的实现,从而实现跨操做系统(暨跨操做系统共享代码)。框架
.NET Core 更依赖于Nuget,容许本地application在部署时动态下载须要的class library。而.NET Framework须要在系统中预装。这样.NET Core的部署比.NET Framework 更简单快速一样也更轻便。asp.net
从上图能够看到 ASP.NET Core 有两种形态的存在:模块化
ASP.NET Core Web Application(.NET Core)
依赖于.NET Core的ASP.NET 只能够调用.NET Core的API,能够在多个操做系统上运行。(可见下图下半部分的Reference Manager,在assemblies中没有.NET Framework 中的库)
ASP.NET Core Web Application(.NET Framework)
依赖于.NET Core & .NET Framework 的ASP.NET 能够调用.NET Core&.NET Framework的API ,只能够在Windows下运行。(可见下图上半部分的Reference Manager,在assemblies中含有全部.NET Framework 中的库)
Mono是.NET Framework的开源版本的实现,在某些特性上和.NET Core 很相似好比开源,跨操做系统。目前.NET CORE 会从Mono上吸收经验,发展壮大最终能够更好的在除Windows外的其余操做系统上运行。另外Mone支持的App Models要比.NET Core多(例如Windows Forms)。
微软CEO萨提亚·纳德拉睿智的决定抛弃以PC为中心,拥抱各类设备和平台,成为一家软件服务型企业。为了达成这种愿景必须构建新的微软生态链,囊括Windows,Linux,OS X及其余操做系统,覆盖X86/ARM等处理器以及不一样的设备(包括PC,Phone,全息眼镜及其余)。这些足见微软的“野心”。随着.NET Core 正式发布大战略迈出坚实的一步,6月27日让咱们拭目以待吧。
参考内容
【1】 https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introducing-net-core/
【2】 https://www.linkedin.com/pulse/too-many-net-jargons-net-what-balaje-sankar
【3】 https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/