NET Core 简介

 

1. 前言

.NET发行至今已通过了十四个年头。随着版本的不断迭代更新,.NET在Windows平台上的表现也是愈来愈好,能够说Windows平台上全部的应用类型.NET几乎都能完成。html

只是成也Windows,败也Windows,这十四年来,除了部分“民间”版本,.NET一直没能在官方支持下摆脱Windows平台的局限,“开源”和“跨平台”这两个词语也是全部.NET开发者心中的痛楚。最终,.NET Core出现了,它让开发者们在官方和社区的支持走出了Windows,能够在macOS,Linux主流distributions上编写调试并部署.NET程序。git

 

2. .NET Core 简介

 

 

2.1 .NET Core是什么

 

.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,而且能够在硬件设备,云服务,和嵌入式/物联网方案中进行使用。.NET Core的源码放在GitHub上,由微软官方和社区共同支持。github

它和传统的.NET Framework,属于“子集—超集”的关系,或者你也能够简单地认为它就是.NET Framework的跨平台版本(基于BCL的层面上看)。这是由于在当前版本中(1.0),.NET Core中的大部分核心代码都是从.NET Framework中继承重写的,包括Runtime和Libraries(如GC, JIT, 部分类型)。编程

吐槽:只能感谢微软《CLR via C#》不用白看呀,我以前看了得有小半年才看完json

如今的.NET Core 1.0版本是一个很小的核心,APIs和工具也并不完整,可是随着.Net Core的不断完善,补充的Apis和创新也会一块儿整合到.NET Framework中。也就是说,.NET Core微软会同时更新.NET Framework和.NET Core,他们就像俩兄弟,共同努力致富(致谁的富?固然是.NET开发者们),实现所谓的天下大同,也就是.NET 标准2.0bash

这里不得不提到一个叫作.NET Standard Library概念。做为.NET平台APIs开发官方支持标准,它要求全部的.NET框架APIs都遵循向下兼容。好比说.NET Framwork 4.6支持.NET Standard Library 1.3,.NET Framwork 4.6.2框架支持.NET Standard Library 1.5,而.NET Core 1.0框架支持1.6标准。服务器

最终展望以下:app

2.2 .NET Core的组成

 

  • .NET Runtime
    CoreCLR。如以前所说,CoreCLR与.NET Framework的CLR并无什么区别,进程管理,GC,JIT(RyuJIT 编译器)这些部分也都是同样的,只是针对服务器系统作了相应优化。如今CLR和CoreCLR也在进行同步更新,只是能够确定的是,CoreCLR才是.NET的将来,CLR将做为兼容手段而存在框架

  • Framework Libraries,
    CoreFX。包括集合类,文件系统处理类,XML处理类,异步Task类等异步

  • SDK Tools 和 Language Compilers (SDK工具和编译器)
    CLI工具和Roslyn编译器。能够经过.NET Core SDK(.NET Core开发工具包)获取。

  • dotnet’app host
    用来选取并执行对应运行时,提供组件载入原则和启动.NET Core应用程序。SDK也是经过相同程序启动。

    Tips:是否是想起了MSCorEE.dll这个垫片,它一样承载着Windows平台上为.NET应用程序选择CLR版本的工做

 

2.3 .NET Core的特性

 

  • 跨平台
    能够在Windows,macOS,Linux上运行

  • 灵活的部署机制

1.Portable applications(便携式应用)
这种部署机制和传统的.NET Framework类似,只要目标平台上存在.NET Core Runtime便可。

2.Self-contained application(自宿主应用)
顾名思义,这种部署机制将应用和运行时共同打包,即使目标平台上没有安装.NET Core Runtime也能正常使用

第二种方式和.NET Native也是不同的,仍然使用CoreCLR,而.NET Native使用CoreRT做为运行时,详细信息请见dotnet/corert

  • 命令行工具
    .NET程序全部的运行脚本均可以用命令行工具执行(cmd,bash)这里有几个常见的donnet命令
指令 帮助
dotnet new 产生新的基本 .NET 项目内容 (包含 project.json、Program.cs 以及 NuGet.config
dotnet restore 还原所参考的 NuGet 包
dotnet build 建造 .NET 项目
dotnet publish 产生可发行的 .NET 项目 (包含所属的 Runtime)
dotnet run 编译与当即运行 .NET 项目 (较适用于 exe 型项目)
dotnet repl 引导交互式的对话
dotnet pack 将项目的产出封装成 NuGet 包
  • 兼容性
    经过.NET Standard Library与.NET Framework,Xamarin,Mono兼容

  • 开源
    .NET Core从属于.NET基金会,由微软进行官方支持。使用MIT和Apache 2开源协议,文档协议遵循CC-BY

 

2.4 开发语言

 

.NET Core 1.0版本中支持的编程语言仅有C#(F#和VB暂未实现),这里还要提到一个开源的语言编译器Roslyn,它负责将代码编译成咱们熟悉的IL语言,而后再借由AOT或JIT编译器编译成机器熟悉的机器语言。

相关文章
相关标签/搜索