1.NET Core 概述
.net core 概述
.net core是一个免费的、开源的、跨平台的、广泛使用的web框架;它是由微软维护的。社区广泛参与支持的一个框架。.net core可以运行在:windows、macos以及linux操作系统上。
.net core可以用来开发各种不同的应用程序,例如:移动端、桌面端、web、cloud、iot、机器学习、微服务、游戏开发等等。
.net core是从头到尾重新开发的一个模块化、轻量级、快速的、跨平台框架。它包含了运行一个.net core基本程序所必须的核心特性。其他特性,例如:nuget包,你可以根据需要添加到应用程序中,所以.net core启动快,内存占用少,并且易于维护。
为什么使用.net core
.net framework有一些限制。例如,它只能运行在windows平台上,此外还有,你需要针对不同的平台应用程序,例如:windows桌面应用程序、windows应用商店、windows phone以及web应用程序,使用不同的.net apis;除此之外,.net framework自身的依赖项太多,应用程序任何一点小的改动,都会要修改很多地方。
时代发展到今天,跨平台的应用程序开发变得非常重要,通过跨平台开发,我们可以写一处代码,就可以各个平台都可以运行。使用.net core就可以轻松做到这一点。
.net core 优点
1.开源的框架:.net core是一个开源的框架,由微软维护,在github上的地址是: ,此外.net core是一个.net 基金会项目 。
你可以查看、下载、以及贡献源代码,通过下方的github仓库:
- 语言编译平台roslyn:
- .net core运行时:
- .net core sdk仓库:
- asp.net core仓库:
2.跨平台:.net core可以运行在windows、macos以及linux操作系统上,对于每个操作系统有不同的.net core运行时,执行代码,生成相同的输出;
3.一致的架构:在不同的指令集架构中,以相同的行为执行代码,包括:x64、x86以及arm。
4.支持广泛领域的应用:各种不同类型的应用程序,都能被开发并且运行在.net core平台上,例如:移动端应用程序、桌面端应用程序、web网页应用程序、cloud云应用、iot物联网应用、机器学习、微服务、游戏开发领域等等。
5.支持多个语言:你可以使用c#、f#、以及visual basic编程语言来开发.net core应用程序。你可以使用你自己喜欢的开发工具【ide】,包含:visual studio2017/2019、visual studio code、sublime text、vim等等。
6.模块化的结构:.net core通过使用nuget包管理,支持模块化开发。有各种不同的nuget包,可以根据需要添加到你的项目中,甚至.net core 类库也是以包管理的形式提供的。.net core应用程序默认的包就是:microsoft.netcore.app ,模块化的结构,减少了内存占用,提升了性能,并且更易于维护。
7.cli工具:.net core包含cli工具(command-line interface)用于开发和持续集成。
8.更灵活的部署:.net core应用程序可以部署在用户范围内、或者系统范围内、或者docker容器中;
9.兼容性:.net core通过使用.net standard标准,可以兼容.net framework以及mono的api ;
.net core历史版本
.net core 3.1和2.1将会长期支持;
.net core 3.x 应用程序只能运行在.net core 框架上;
.net core 2.x 应用程序可以运行在.net core和.net framework上;
.net core的组成
.net core框架由下面几个部门组成:
cli 工具:一系列用于开发和发布的工具;
roslyn: c#、visual basic语言编译器;
corefx: 一系列的框架类库;
coreclr:基于clr的即时编译器(command language runtime)
有用的资源链接
1.在这里可以找到.net core 类型以及成员声明、文件、以及程序集:.net core source browser ;
2.获取.net core 类型帮助:.net core api reference docs ;
3.详细学习.net core,可以看这个: https://docs.microsoft.com/en-us/dotnet/core ;
4.下载.net core运行时以及sdk: https://dotnet.microsoft.com/download/dotnet-core ;