本文已参与「新人创作礼」活动.一起开启掘金创作之路。
.NET Core 概述
1..NET经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台、开源”
却是其痛点,从16年开始.NETCore的出现将迎来.NET的真正意义上的跨平台和开
源序幕。
2..NETCore是一个开源通用的开发框架,支持跨平台,即支持在Window,
macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式
/物联网方案中进行使用。
3..NETCore的源码放在GitHub上,由微软官方和社区共同支持。
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与现代软件开发中使用的实践相结合。诸 如可移植性,简单部署,高性能,开放源代码和强大支持等特性使其值得一试。