至2002微软公司推出.net平台已近15年,在互联网快速迭代的浪潮中,许多语言已被淘汰,同时也有更多新的语言涌现,但 .net 依然坚挺的站在系统开发平台的一线阵营中,并且随着.net core 即将到来(2016年6月27日)的正式版,势必迎来新一轮春天。
一 .net 的 framework 们要理解.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越来越多,对开发者来说不一样的设备即便功能相同也需要维护多套代码,增加了开发的复杂度。
二 .net core的到来微软对这些问题的重新思考和改进让.net core横空出世。
.net core是一个开源的模块化的framework,不管是开发web或移动设备都在同一个framework(.net core)下运行,而且 .net core也可在不同的操作系统上运行,包括windows、linux、macos,实现了跨平台跨设备。
更棒的是.net core 在发布程序时不用事先安装framework而是通过nuget下载,这样在初次部署时就不用安装一个复杂而庞大framework,而是按需下载。这种基于nuget的按需加载铸就了.net core 跨平台。
.net core 构成体系如下:
1. runtime在.net core 中有实现两种runtime,nativeruntime 和 coreclr。nativeruntime 将c# 或 vb.net 代码直接转换为原生机器码。而coreclr是一个开源的jit运行时,会将代码编译成中间语言(il)在最终运行时再转换机器码。
2. unified bclbase classlibrary即基础类,例如 filesystem、console、xml操作等。
3. windows store appmodel & asp.net core 1.0提供开发windows系统的各种触屏设备和asp.net程序的一组基础库。
三 .net core 与 .net 其他framework的关系
1 .net core & .net framework.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 更简单快速同样也更轻便。
2 .net core & 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 中的库)
3 .net core & monomono是.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日让我们拭目以待吧。
以上就是简析.net core 以及与 .net framework的关系总结的详细内容。