.NET技术栈,大腿终于又变粗了

.NET曾是在Windows平台上创建应用程序的杰出技术,但是在移动互联网时代营养不良,变得消瘦。但现在,.NET不仅仅是在Windows平台、也是在Linux和Mac平台上创建应用程序的杰出技术;.NET的大腿又逐渐变粗,壮汉慢慢归来。

 

.NET技术体系

.NET技术栈主要包含哪些内容?下图给出了.NET体系的一个整体结构。

使用.NET Framework,可以创建Windows Form、WPF和在Windows上运行的旧ASP.NET应用程序;

使用.NET Core,可以创建运行在不同平台上运行的ASP.NET Core和控制台应用程序。.NET Core也可以创建通用Windows应用(UWP)程序,但UWP只能在Windows平台上运行;因为UWP仍使用了Windows运行库,因此它只能在Windows上使用。

Xamarin平台,基于Mono框架,可以使用C#为iPhone和Android开发应用程序。Xamarin提供了Xamarion.IoS和Xamarin.Android库,使用Xamrian.Forms就可以在两个移动平台之间共享用户界面。

.NET技术栈,大腿终于又变粗了_第1张图片

如上图,.NET Framework,.NET Core和Mono基于.NET Standard(一个标准)构建,他们可以使用相同的库,共享相同的编译器平台、编程语言和运行库组件。

 

.NET Framework

 .NET Framework目前的最新版本是4.8,是在过去十几年(快20年了)不断增强的结果。过去很长一段时间使用它来构建基于Windows的Window Form、WPF和ASP.NET应用程序,而且将来也会继续持续一段时间;但它是封闭的。

 

Version Date .NET Framework CLR Visual Studio
C# 1.0 2002.01 .NET Framework 1.0 1.0 VS 2002
C# 1.1
C# 1.2
2003.10 .NET Framework 1.1 1.1 VS 2003
C# 2.0 2005.11 .NET Framework 2.0 2.0 VS 2005
C# 3.0 2007.11 .NET Framework 2.0
.NET Framework 3.0
.NET Framework 3.5
2.0 VS 2008
VS 2010
C# 4.0 2010.04 .NET Framework 4 4.0 VS 2010
C# 5.0 2012.08 .NET Framework 4.5
.NET Framework 4.5.1
4.0 VS 2012
VS 2013
C# 6.0 2015.07 .NET Framework 4.6 4.0 VS 2015
C# 7.0 2017.03 .NET Framework 4.6.2 4.0 VS 2017
C# 7.1 2017.08 .NET Framework 4.7 4.0 VS 2017 v15.3
C# 7.2 2017.11 .NET Framework 4.7.1 4.0 VS 2017 v15.5
C# 7.3 2018.05 .NET Framework 4.7.2 4.0 VS 2017 v15.7
C# 8.0 2019.10 .NET Framework 4.8 4.0 VS 2019 v16.3

.NET Core

.NET Core是全新的.NET,是用现代技术和目标对.NET Framework的重写和加强扩展,它的设计起点就很高,很多.NET开发者也是看到这个MS重大更新才继续留在.NET阵营的。

官方的简介:”.NET Core 是一个通用的开放源代码开发平台。 可以使用多种编程语言针对 x64、x86、ARM32 和 ARM64 处理器创建适用于 Windows、macOS 和 Linux 的 .NET Core 应用。 为云、IoT、客户端 UI 和机器学习提供了框架和 API。“;是不是看起来就很高大尚,而且激动人心。

.NET Core 具有以下特性:

  • 跨平台 :可在 Windows、macOS 和 Linux 操作系统上运行。
  • 开放源代码: .NET Core 框架是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
  • 现代: 它实现了异步编程、使用结构的无复制模式和容器的资源调控等现代范例。
  • 性能: 通过各种功能(如硬件内部函数、分层编译和跨度)来提供高性能。
  • 跨环境一致: 在多个操作系统和体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
  • 命令行工具: 包括可用于本地开发和持续集成的易于使用的命令行工具。
  • 部署灵活: 可以在应用中包含 .NET Core 或并行安装它(用户或系统范围安装)。 可搭配 Docker 容器使用。

 

.NET Standard

.NET Standard不是某一个具体的实现,而是一个协议/标准,这个标准定义了需要实现哪些API。.NET Framework、.NET Core和Xamarin都实现了这个标准,这也是为什么他们可以共用一些库。

  

公共语言运行库(CLR - Common Language Runtime)

使用.NET Framework的应用程序,和使用.NET Core的应用程序都需要CLR,分别是CLR和CoreCLR。CLR作用是什么呢?在.NET中,编译分为两个阶段:

1. 将源代码编译为中间语言MSIL (Microsoft Intemediate Lanuage);

2. CLR把MSIL编译为平台专用的本地代码。IL代码在.NET程序集中可用。在运行时,JIT编译器(新的JIT编译器是RyuJIT)编译IL代码,创建特定平台的本地代码。

CLR除了JIT功能外,还包含:

  • CLR包含一个带有类型加载器的类型系统,负责从程序集中加载类型;
  • CLR包含垃圾回收器,从托管堆中清楚不再引用的内存;
  • CLR还负责线程的管理,基于.NET开发语言创建的线程不一定来自底层操作系统;线程的虚拟化和管理是又CLR负责。

 

Windows运行库 - Windows Runtime

从windows 8 开始,Windows操作系统提供了另一种框架:Windows运行库(Windows Runtime),这个运行库由WUP (Windows Uniersal Platform,Windows通用平台)使用。

 

C#语言

.NET平台上的开发语言有很多(如:C#、Visual Basic 和 F# ),但使用最多的还是C#。

很久很久之前,因为版权的原因,微软并不能随意修改Java源代码,于是他们找来了Anders Hejlsberg,负责设计C#。在去微软工作前,Hejlsberg在Borland公司负责设计Delphi,一种基于Pascal的程序语言。起初他在微软负责J++(微软版Java)。由于Hejlsberg的个人经历,C#的设计思想主要借鉴了C++,Java以及Pascal。

因为C#是在Java和C++之后设计的,微软分析了它们一些典型的编程bug,并试图通过语法规范使得使用C#的程序员避免同样的错误。

 

NuGet

和其他技术栈一样,.NET技术栈也有自己的包管理工具;NuGet是.NET平台的包管理器工具,NuGet包本质是一个zip文件,里面包含了一个或多个程序集、配置信息和PowerShell脚本。

 

开发工具IDE

  • Visual Studio:不要争,这是宇宙第一IDE!

  • Visual Studio Code:短短几年就后来者居上,值得使用。

 

.NET技术选择

推荐的主流选择:

  • FrameWork: .NET Core > .NET Framework
  • Windows桌面应用:UWP > WPF > Windows Forms
  • Web应用:ASP.NET Core > ASP.NET > ASP.NET Web Forms / WCF

天下合久必分,分久必合,.NET在今年年底将会统一各平台,统一命名为.NET 5。

现在的.NET Core和未来的.NET技术栈的设计目标:

.NET技术栈,大腿终于又变粗了_第2张图片

 

.NET技术的未来

查查过去几年微软的动作,你便知道.NET技术的未来会是怎么样。

  • 重写.NET平台.NET Core,并开源
  • Visual Code IDE - 后来者居上
  • 微软云平台Azure的发展
  • 收购GitHub,发力开源社区
  • 微软股票的市值

你可能感兴趣的:(.NET技术栈,大腿终于又变粗了)