认识.NET Core

转载原文:http://www.cnblogs.com/yubinfeng/p/5200433.html

 

 .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台、开源”却是其痛点,从16年开始.NET Core的出现将迎来.NET的真正意义上的跨平台和开源序幕

 

 

 a.NET Framework 包含,Windows Form,WPF,ASP.NET

 b.NET Core 包含,UWP,ASP.NET Core

 c.Xamarin,新的.NET还包括第三个部分,即XAMARIN用于构建移动APP,包含iOS、 OS X 、Android等。

    即所谓的.NET三架马车,下面是最新的.NET生态体系图:

 

 

 
    从上图可以看出,.NET Framework和.NET Core及XAMARIN将是现在及未来.NET的三大部分,而它们三个都是独立于各自的,但都基于.NET标准库。
 

NET Framework和.NET Core特点 

    .NET Core较之前的.NET Framework 从性能和开发效率上都有很大的提升。关键是首次实现了.NET的完全跨平台能力的基础技术栈。 

    .NET Core 基于跨平台能力,并没有将与 GUI 高度相关的 API 移植到 .NET Core 内,因此像是 Windows Forms 或是 Windows Presentation Foundation (WPF) 并未移植到 .NET Core。

    .NET Core 支持控制台应用程序 (Console Application) 以及类库 (Class Library) 类型的项目。 

    不过微软在其 Universal Windows Platform (UWP) 开发平台使用了 .NET Core,并且利用 .NET Native 技术将其性能提升至十分接近原生码的速度。

    ASP.NET Core 则以控制台应用程序驱动其托管环境 Kestrel Server 以支持 ASP.NET Core 程序的运行。 

 

 

 

 

 
 
.net core 部署的方式:
第一种.Portable applications(便携式应用)这种部署机制和传统的.NET Framework相似,只要目标平台上存在.NET Core Runtime即可。
 
 第二种.Self-contained application(自宿主应用)顾名思义,这种部署机制将应用和运行时共同打包,即便目标平台上没有安装.NET Core Runtime也能正常使用第二种方式和.NET Native也是不一样的,仍然使用                     CoreCLR,而.NET Native使用CoreRT作为运行时,详细信息请见dotnet/corert。
 
 
第三种.命令行工具:.NET程序所有的运行脚本都可以用命令行工具执行(cmd,bash)。
 
 
 

 

 

 
 

如上图,NET Core 构成体系:

    (1) Runtime    在.NET Core 中有实现两种RunTime,NativeRuntime 和 CoreCLR。NativeRuntime 将C# 或 VB.net 代码直接转换为原生机器码。而CoreCLR是一个开源的JIT运行时,会将代码编译成中间语言(IL)在最终运行时再转换机器码。

    (2) Unified BCL    Base Classlibrary即基础类,例如 FileSystem、Console、XML操作等。

    (3) Windows Store AppModel & ASP.NET Core 1.0    提供开发Windows系统的各种触屏设备和ASP.NET程序的一组基础库。 

 

 

 

 

 

NET Core各个功能模块

 

 

 

 

如上图:

    应用层: .NET Core的系统构成,最上层是应用层,是开发基于UI应用的框架集,包括了ASP.NET Core(用于创建web app),和 UWP(用于创建Windows10 app)。

    中间层:中间层是公共库(CoreFX):实现了.NET Standard Library ,囊括了常用系统级操作例如(文件、网络等)。

    在CoreFx下是运行时环境,.NET Core 包含了两种运行时(CoreCLR、CoreRT),CoreCLR是一种基于即时编译程序(Just in time compiler,JIT)的运行时,它使用了跨平台开源的编译器RyuJIT,

    而CoreRT是使用提前编译器(Ahead of time compiler,AOT)的运行时,它既可以使用RyuJIT来实现AOT编译也可以使用其他的AOT编译器。由于AOT提前编译IL成了机器码,在移动设备上也具有更好的启动速度和节能性。

 
 
 
 
 
posted @   NangFah  阅读(518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示