.NET Core 概述

498 阅读4分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。

.NET Core 概述

1..NET经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台、开源”

却是其痛点,从16年开始.NETCore的出现将迎来.NET的真正意义上的跨平台和开

源序幕。

2..NETCore是一个开源通用的开发框架,支持跨平台,即支持在Window,

macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式

/物联网方案中进行使用。

3..NETCore的源码放在GitHub上,由微软官方和社区共同支持。

image.png

1.  .NETFramework包含,WindowsForm,WPF,ASP.NET  NETCore包含,UWP,ASP.NETCore

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

3..NETCore基于跨平台能力,并没有将与GUI高度相关的API移植到.NETCore内,因此像是WindowsForms或是WindowsPresentationFoundation(WPF)并未移植到.NETCore。

4.兼容性:.NETCore和.NETFramework基于.NETStandardLibrary。因此与.NETFramework,Xamarin,Mono等兼容。

5.语言选择:.NETCore1.0版本中支持的编程语言仅有C#(F#和VB暂未实现),.NETFramework可选用C#,VB.NET,F#等众多语言开发

如图,NETCore构成体系:

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

(2)UnifiedBCL    BaseClasslibrary即基础类,例如FileSystem、Console、XML操作等。

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

为什么要迁移?

1.免费和最宽松的开源协议

.NETCore从属于.NET基金会,由微软进行官方支持。使用最宽松的MIT和Apache2开源协议,文档协议遵循CC-BY。这将允许任何人任何组织和企业任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的  限制是,软件中必须包含上述版权和许可提示,后者协议将会除了为用户提供版权许可之外,还有专利许可,并且  授权是免费,无排他性的(任何个人和企业都能获得授权)并且永久不可撤销,用户使用.NETCore完全不用担心收费问 题,你可以很自由的部署在任何地方.

2.轻量级、跨平台

3.组件化、模块化、IOC+Nuget、中间件

4.高性能

5.统一了MVC和WebAPI编程模型

a)比如:ASP.NETCore中MVC和WebAPI直接或间接继承同一个基类ControllerBase,提供可使用的API也一致化

b)比如:旧ASP.NET时代,写全局filter需要针对MVC和WebAPI分别编写代码,但在ASP.NETCore,直接使用一套中间

件代码即可

6.可测试性

7.微服务、容器化支持

8.标准化.NETAPI规范-.NETSTANDARD

.NETFramework本身是个"跨Windows"的平台,而在这个基础上,又支持C#和VB等语言进行"跨语言",这些语言都遵守CLS,编译成CIL执行.从我们多层架构设计的角度来看,只换最底层,还是很可行的.

.NETCore重做了一个CoreCLR的运行时,以及一个叫做CoreFX的BCL.这里要说一下,ASP.NETCore完全作为NuGet包的一部分提供。

这样一来,可以将应用优化为只包含必需NuGet包,使应用更加灵活、模块化的同时提高性能..NETCore通过实现.NETStandard与.NETFramework做兼容.

至于跨平台,因为90%的CoreFX代码都是与平台无关的

目前netcore可以部署在不同的操作系统上,如windows,linux等支持docker部署,大大增加了可移植性

05总结

软件开发行业正在不断发展。从语言到框架,工具到方法论,一切都受到挑战和改进。.NET  框架已经到了不得不做出改变的时候,以跟上竞争对手,比如java等。.NETCore是.NET演进过程中必不可少的一步。它将最好的.NETFramework与现代软件开发中使用的实践相结合。诸  如可移植性,简单部署,高性能,开放源代码和强大支持等特性使其值得一试。