01 .NET初识及.NET Core的一些背景知识

本文是《C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development》(4th Edition by Mark J. Price)的第1章「Hello, C#! Welcome, .NET!」部分的学习笔记。

本章主要是学习了以下内容:

  • 认识并理解.NET,这里包括.NET Framework, .NET Core, Xamarin, .NET标准等等
  • 设置开发环境并

1 理解.NET

这部分主要是了解.NET Framework, .NET Core, Xamarin, .NET标准等等

1.1 理解.NET Framework

.NET Framework是一个开发平台,它包括一个通用语言运行时(Common Language Runtime, CLR)和一个基类库(Base Class Library, BCL),前者管理代码的执行,后者提供了丰富的类库来构建应用程序。

.NET Framework一开始也是为跨平台设计的,但是微软却将重心放在让其工作在Windows上。从.NET Framework 4.5.2开始,它就成为了Windwos操作系统的一部分,被安装在数十亿台电脑上,因此其不能做太大的改动。

1.2 Xamarin

Mono是第三方开发的跨平台的.NET Framework实现,但是它要落后于官方的.NET Framework实现。现在Xamarin移动开发平台和跨平台的Unity游戏开发平台是基于Mono的。

1.3 .NET Core

现今,移动和云平台越来越流行,这使得作为操作系统的Windows的重要性大大降低。于是微软便想着把.NET逐渐从Windows平台依赖中脱离出来,重写.NET Framework来实现跨平台,于是便有了.NET Core。.NET Core包括跨平台实现的CoreCLR和精简的类库CoreFX。

.NET Core由于可以于应用程序一起部署,因此可以频繁的进行迭代更新,而不会影响其他.NET Core应用。当然,.NET Core的更新是不会应用到.NET Framework中的。

在微软2019年的Build开发者大会中,微软官方宣布从.NET Core 3.0之后,.NET Core将会被命名为.NET,并且大版本号会直接跳到5,这是为了与避免与当前的NET Framework 4.x产生混淆。.NET 5.0计划是在2020年的11月份发布,并且以后每年11月份做一次大版本的更新。
dotnetversion

上面表格中有LTS (Long-Term Support)和Current两种类型的版本,这在部署应用时需要注意。

  • LTS版本是比较稳定且会做较少更新的长期支持(3年)版本。
  • Current版本则是当前快速迭代的版本,会包含很多的新特性,这种类型的版本在下一个子版本发布后,只有3个月的维护期。比如说,.NET Core 3.1在2019年11月份发布了,那么.NET Core 3.0在2020年2月份后就不再维护了。

1.4 .NET Core与.NET Framework的区别

.NET Core要比.NET Framework小很多,这是因为在.NET Core SDK中去掉了一些与Windows平台紧密关联的一些部件,比如Windows Forms和Windows Presentation Fundation(WPF)。如果你仍想用这些技术,可以在Windows版本的.NET Core中安装Windows Desktop Pack。

最新的用来构建Windows应用的技术是Universal Windows Platform(UWP) ,由于其不是跨平台的,所以也不包含在.NET Core中,需要额外做一些定制化的配置。

ASP.NET Web Forms和Windows Communication Foundation (WCF)是非常老的web技术,目前用的非常少(ArcGIS Earth的Automation API当前使用的是WCF技术),所以从.NET Core中删除掉了。 目前较为常用的ASP.NET MVC和ASP.NET Web API,在.NET Core中,被重构并合成了一个产品——ASP.NET Core。

Entity Framework (EF) 6是一种对象-关系型映射技术,旨在与存储在Oracle和Microsoft SQL Server等关系型数据库中的数据一起工作。在跨平台的.NET Core中,该API已经将对非关系型数据库如Microsoft Azure Cosmos DB等给予支持,并命名为Entity Framework Core。

1.5 .NET 标准

.NET包含.NET Framework, .NET Core, Xamarin,每一种技术都有不同的使用场景,对开发者来说需要去熟悉三套不同的平台将会是非常麻烦的事情。于是微软定义了.NET标准,它一套所有.NET平台都能实现的API规范,以表明其兼容性的程度。

  • .NET标准2.0由.NET Framework、.NET Core和Xamarin的最新版本实现。
  • 而最新的.NET标准2.1只由.NET Core 3.0、Mono和Xamarin实现。

1.6 中间语言(Intermediate Language)

dotnet CLI工具使用的C#编译器(名为Roslyn)会将 C#源代码转换为中间语言(Intermediate Language, IL)代码,并将IL存储在一个汇编(DLL或EXE文件)中。IL代码语句就像汇编语言指令,由.NET Core的虚拟机(称为CoreCLR)执行。

在运行时(Runtime),1) CoreCLR从汇编中加载IL代码,2) JIT(just-in-time)编译器将其编译成原生的CPU指令,3)然后由机器上的CPU执行。这个三步编译过程的好处是,微软能够为Linux和macOS以及Windows创建CLR。同样的IL代码在任何地方都能运行,这是因为第二步编译(JIT编译)过程会生成原生操作系统和CPU指令集的代码。
无论源代码是用哪种语言编写的,例如C#F#,所有的.NET应用程序都使用IL代码来存储在汇编中的指令。

1.7 .NET Native

另一个.NET的概念叫做.NET Native。这是将C#代码提前编译成原生CPU指令(AoT),而不是使用CLR将IL代码JIT编译成原生代码。.NET Native提高了应用程序的执行速度,减少了应用程序的内存占用,因为原生代码是在构建时生成的然后再部署。

现在.NET仍然是包含.NET Framework, .NET Core, Xamarin三个平台,微软计划到2020年年底,将有一个单一的.NET平台——.NET 5.0。.NET 5.0将有一个单一的BCL和两个运行时:一个是基于.NET Core运行时,主要是针对服务器或桌面场景(如网站和Windows桌面应用)进行优化,另一个是基于Xamarin运行时,针对移动应用进行优化。

2 dotnet Hello World

2.1 设置开发环境

要做C#开发,我们一般都是会想到微软的Visual Studio,使用轻量且跨平台的Visual Studio Code 来进行跨平台的开发应该是比较好的选择了。
我目前是使用macOS上的Visual Studio Code来进行.NET Core的开发学习,其安装和配置比较简单,下面只列出一些简单的步骤,具体可以参考官方的文档。

  1. 下载安装Visual Studio Code
  2. 下载安装.NET Core SDK
  3. 在Visual Studio Code中搜索安装C#拓展(OmniSharp 出品)

2.2 构建控制台应用

  • 运行Visual Studio Code后打开一个空文件夹
  • 调出VS Code的Terminal工具,输入并执行dotnet new console
  • 此时dotnet命令就在当前目录中创建了一个控制台工程,包含proj和cs文件
  • 点击Program.cs文件,VS Code会自动去下载安装一些C#依赖,如OmniSharp,Razor Language Server和.NET Core debugger 。
  • 之后会生成一个.vscode的文件夹,是为debug用的
  • 最后在VS Code的Terminal中,输入并执行dotnet run命令来使用dotnet CLI来编译并运行代码

除了在本地编译运行C#代码外,也可以通过以下工具在线编程:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值