初识.NET

image-20240508202618706.png

1. .Net平台简介

.net 平台主要分为三个部分(.net 5 中据说会大一统,这我抛开.net 5了):.net Framework .netCore xamarin

.net Framework : 2002年发布,现在很多公司都在使用,可以开发:
window桌面程序:winform、UWP、wpf等
web应用程序:Asp.Net webform、Asp.Net MVC

.net Core : 2016年6月27号发布,是微软最新推出开源的、跨平台的平台,可以用来创建运行在mac、Linux上的应用程序

xamarin : 主要用来构建手机APP,主要使用的语言是C#语言(但是因为使用人数不多,所以可参考的案例较少)

2. .Net Core 与 .Net Framework的差异

  1. .NET Core是跨平台的。Net Framework仅支持在Windows系统上。
  2. .Net Core和 .Net Framework都 是Net Standard Library 的实现, .NET Standard Library 是跨操作系统的关键所在,它定义了一组接口,而每个操作系统有各自的实现, .NET Core通过Nuget可以动态下载当前操作系统的实现,从而实现跨操作系统(暨跨操作系统共享代码)。
  3. .NET Core 更依赖于Nuget,允许本地application在部署时动态下载需要的class library。 而.NET Framework需要在系统中预装。这样.NET Core的部署比.NET Framework 更简单快速同样也更轻便。

3. .NET发展史

.NET / C# 年表(2002-2023)及各版本更新汇总 | 编码之旅

截至到现在,C# 和 .NET 平台已经分别有了21 和 19 年的历史。我们简单回顾一下 .NET 平台的发展历史,它对于我们更好地了解 .NET 平台有着重要的意义。

2002 年:.NET 1.0

在 .NET 出现之前,编写 Windows 上可以运行的程序就要直接和 COM(微软的一套软件的接口标准)打交道。.NET 框架试图通过 CLR 代替 COM,并提供更多功能,令用户可以更轻松的使用 Windows 的资源进行软件开发。

相应地 Visual Studio 也升级到 7,称为 Visual Studio 2002(上一个版本叫做 Visual Studio 6)。

该框架包括 C# 和 VB.NET( Visual Basic 的继任者)。

同时,第一个版本的 ASP.NET 也在 .NET Framework 1.0 亮相,它作为网站的解决方案,一直是 .NET 框架最重要的产品线之一。

2005 年:.NET 2.0

2005 年 11 月,.NET Framework 2.0 发布。该框架包括 C# 2,相比第一代添加了新的语法特性,其中最重要的就是泛型。

与此同时,CLR 的版本也相应更新为 2.0,Visual Studio 也升级到 Visual Studio 2005。

.NET Framework 2.0 中,Web 应用解决方案仍然是 ASP.NET WebForm, 但新增了多种多样Web Service ,包括 .NET Remoting(TCP/HTTP/Pipeline communication)以及基础的 Winsock 等。

Windows Form 则作为 Windows下的应用程序解决方案。

ADO.NET则作为数据库连接方案(支持 SQL Server 和 Oracle)

2007 年:.NET 3.0,WCF+WPF+WF
.NET 3.0 是 .NET 框架最重大的一个更新,包括三大产品线:
WCF:统一了过去 Web 服务混乱的形式,形成了一个统一的格式。
WPF:作为前端用户界面的解决方案,包括 Silverlight。
WF:提供工作流的管理。

.NET 3.0 标志着 Windows 平台开始全面转向 .NET 时代(以后所有版本的 Windows 都预装 .NET)。而在这之前,只有服务器版本的 Windows 会预装 .NET。

当时的 .NET 只能在 Windows 上运行,通过 CLR 调用 Windows 的 API,从而控制电脑硬件。.NET 3.0 的 CLR 和 .NET 2.0 相同。

2008 年:.NET 3.5,C# 3(LINQ)与 Entity Framework
.NET 3.5 集成了 C# 3,包括 C# 3 最重要的一个功能,即 LINQ。相应地,为了支持 LINQ,此版本也加入了扩展方法、Lambda 表达式等新功能。

从 C# 3开始,C# 不再是 Java 的一个跟班小弟,某种意义上实现了对 Java 的超越(Java 直到 2014 年才在 Java 8 加入了 Lambda 表达式)。

另外,.NET 3.5 SP1 新增了 ADO.NET Entity Framework 取代 ADO.NET,作为 ORM 的解决方案。在 ADO.NET Entity Framework 发表之前,NHibemate 是在 .NET Framework 上经常使用的 ORM 实现,顾名思义,它是 Hibernate 在 .NET Framework 上的实现。

相应地, Visual Studio 也升级到了 Visual Studio 2008。

2010 年:.NET 4.0 和 C# 4
.NET 4.0 集成了 C#4,主要增加了动态语言运行时(DLR)和任务并行库(TPL),它包括 PLINQ、任务等,优化了多线程的编程方式。

CLR 由 2 直接升级到4。

相应地,Visual Studio 也升级到了 Visual Studio 2010。

2012 年:.NET 4.5 和 C# 5
.NET 4.5 和 C#5 —起发布,.NET 4.5 框架的生态系统如下图所示。.NET 4.5框架的生态系统

ba34ea7e2c271d2c134c23a0f69d90b4.png

C# 5 基本上全部都是围绕 async/await 关键字的。

ASP.NET MVC 作为 ASP.NET 的一组类库,于 2009 年初次发布,最新的版本是 ASP.NET MVC 5.2。

Web Service 也在不断进化,从基于 XML 的 WCF 发展到 RESTful 的 WebAPI。

从图中可以看到,最上面的应用层,ASP.NET 茁壮成长,继续和 PHP/JSP 等技术分庭抗礼,用户有 WebForm 和 MVC 可供选择。
在 JS 方面,选择了 jQuery 作为官方 JS。值得注意的是,MVC 中的 M 由 ADO.NET Entity Framework 负责。

Windows 下的解决方案仍然是WPF。中间的服务和数据层中,Web 服务拥抱 RESTful,数据库方面也是由 ADO.NET Entity Framework 唱主角。

最下面当然就是基础类库(BCL)。在 C# 5 中,增加了对异步编程的简化。

相应地,Visual Studio 也升级到了 Visual Studio 2012。在这之后,.NET 还有更高的版本 4.6 和 4.7,对应 Visual Studio 2015 和 Visual Studio 2017。

2016 年:.NET Core 的问世
.NET Core 是 .NET Framework 的新一代版本,也是另外一种实现方式,是微软开发的第一个跨平台的(Windows、Mac OSX、Linux)、开源的、模块化的应用程序开发框架。

.NET Core 并不算是 .NET Framework 的继任者,而更像是它的兄弟,所以,现在它们两个各有自己的版本编号。

未来 .NET Framework 和 .NET Core 也将会是各自发展,但它们也会同时使用彼此的功能。

.NET Core 和 .NET Framework 共用一部分底层功能(例如一些 BCL),参见下图。

.NET Core 和 .NET Framework之间的关系

4fbe727bbd0a4faa0d7931e3f2dc6a06.png

与 .NET Framework 不同的是,.NET Core 采用组件化的管理方式,应用程序只需要通过 nuget 获取需要的组件即可,与 .NET Framework 一上来就全部安装的做法不同。

.NET Core 的应用层包括 UWP,用于开发 Windows 商店应用(部署到任何支持 Win10 的设备上,例如 XBox,智能手机甚至眼镜),和 ASP.NET Core,用于开发网站应用(通常展现为微服务的形式)。

中间则是 CoreFX,它是 .NET Core 的基础类库,础类库 BCL。

底层则实现两种运行时,Core RT 和 Core CLR。 Core RT 将 C# 或 VB.NET 代码直接转换为机器码运行在宿主机器上,在不同的平台上,会使用不同的技术(Windows 上使用的是 .NET Native,Mac OS 与 Linux 上使用的是LLILC)。

而 Core CLR 就是 .NET Framework CLR 的移植,它包括一个全新的 JIT 编译器——RyuJIT,依据微软的测试报告,该 JIT 的性能比旧版本提升了约25%。

由于 .NET Core 更佳的跨平台表现,越来越多的网络应用使用 ASP.NET Core 来编写。