重览.NET,术语和新特性(2023) VI-1

C#/.NET的发展速度是十分之快的,现今,C#10、.NET 6、Blazor和WinUI 3以及众多新功能和特性不断浮现在我们眼前,这意味着我们不得不进一步地去学习,再度回顾旧知识,了解新特性以从细节上完善我们的开发项目,深度提升开发能力。这是进行C#开发的一个美好时代。本章我们将再一次大体的介绍.NET,根据Stack Overflow的2023 Developer Survey了解C#/.NET的开发环境和市场情况,并简单介绍一些新特性。

 目录(CONTENTS)

 1.1 .NET框架的发展历史

 1.2 .NET术语

.NET SDK

.NET Runtimes

CLI & CLR

Ronslyn

Library

NuGet

namespace

API

 1.3 平台框架与应用程序类型

EF Core

C#控制台应用程序

Windows应用程序

Web应用程序

 1.4 新特性概览

C#

ASP.NET Core

Windows

 1.5 开发者调查报告

Most popular technologies

Other frameworks and libraries

Integrated development environment


学习教材原书《C#高级编程(第12版)》[奥]Christian Nagel 著
文段内容大多为笔者自身的学习理解,可能存在误解或说明不当的地方,欢迎大家指正。

 1.1 .NET框架的发展历史

 在初学.NET使用Visual Studio开发时,开发框架的选择让我一直心存疑惑,对.NET Framework .NET Core.NET的版本区分并不是特别清楚。.NET第一个版本发布于2002年,.NET Framework属于其第一个时代的产物,最开始的1.0版本到2019年的最后一个版本4.8。2014年,微软最终向市场妥协,开始热情拥抱开源和跨平台。2016年,微软推正式出 .NET Core 1.0。2020年,为了避免产品线的混乱,微软开始统一产品线,关闭了 .NET Framework 这条产品线,并将 .NET Core 产品线更名为 .NET。为了避免与 .NET Framework 4.x 版本号冲突,.NET 产品线直接从版本号 5 开始,即 .NET 5.0,并于这一年 11 月正式发布。

重览.NET,术语和新特性(2023) VI-1_第1张图片

总的来说,三个版本框架的特点如下:

  • .NET Framework 只能用于Microsoft Windows
  • .NET Core 代码开源,实现跨平台
  • .NET 统一的新版本

有关更详细的版本信息,可以阅读微软官方的API文档,查阅官方API应该是.NET开发者的意识性技能。

1.2 .NET术语

了解一些基本的术语是我们学习开发的必要基础。

.NET SDK

.NET SDK 是一组库和工具,开发人员可用其创建 .NET 应用程序和库。 它包含用于构建和运行应用程序的.NET CLI和.NET Runtimes组件。安装Visual Studio时会自动安装SDK。

.NET Runtimes

.NET Runtimes是一种软件框架用于在Windows操作系统上运行.NET应用程序。其包含全部核心库和dotnet驱动程序。在目标系统上,不需要安装SDK,只需要安装.NET Runtimes。除此之外,还可以将运行库与应用程序打包在一起,称为自包含部署,以便可以在任何环境中轻松部署和运行。

CLI & CLR

CLI和CLR共称为公共语言运行库。

  • CLI: Common Language Infrastructure 公共语言基础框架,处理代码编译过程
  • CLR: Common Language Infrastructure 公共语言行时,程序运行环境与服务
  • .NET CLI: 安装SDK时包含的开发工具,开发.NET应用程序的命令行接口。

在编译时,CLI先将程序编译为IL(Intermediate Language)代码(类似于汇编语言,是一种公共中间语言),CLR再把LR代码编译为原生代码,接着由.NET程序集中的JIT(Just-In-Time)即时编译器编译为不同平台特定代码。

Ronslyn

Roslyn是一种.NET编译器平台用于在运行时分析、构建和修改C#代码。它包括一组API和工具,可以帮助开发人员创建和修改代码,以及执行各种代码分析和重构操作。Roslyn还提供了一种即时编译的功能,可以在运行时编译和执行代码,这使得开发人员可以更快地迭代和测试他们的代码。Roslyn是.NET开发人员的一个强大工具,可以帮助他们更轻松地创建和维护高质量的C#代码。

Library

库(Library)是指一组可重用的代码和资源,它们通常被打包成一个单独的单元,以便在多个项目中共享和重用。库可以包含各种类型的代码,例如类、函数、接口、枚举、结构体等,以及资源文件、配置文件等。库可以由开发人员自己编写,也可以从第三方获取,例如NuGet存储库。

NuGet

NuGet是一个包管理器,它可以用于在.NET项目中安装、升级和卸载第三方库和工具。NuGet包是一种可重用的软件组件,它们可以包含编译的代码、资源文件、配置文件等。

namespace

命名空间是一种组织代码的方式,它可以将相关的类、接口、结构体、枚举等类型组织在一起,以便更好地管理和使用它们。.NET官方提供的类也组织在命名空间中,大多以SystemMicrosoft开头。

API

API是指应用程序编程接口(Application Programming Interface)的缩写。API是一组定义了软件组件之间交互的规范和接口,它们可以让不同的软件组件之间进行通信和交互,以实现特定的功能。API可以提供各种类型的功能和服务,例如数据访问、网络通信、身份验证、文件操作等。通过使用API,开发人员可以更轻松地编写应用程序,因为他们可以利用现有的API来实现一些常见的功能,而不必从头开始编写代码。

人性化地理解总结一下:

  • .NET SDK 是一组用于构建和运行应用程序的库和工具
  • .NET Runtimes 是一种用于在Windows操作系统上运行.NET应用程序的软件框架
  • CLI 是公共语言基础框架,处理代码编译过程
  • IL 是一种公共中间语言,由CLI编译而来
  • CLR 是程序运行的环境与服务
  • JIT 是即时编译器,是CLR将IL编译为不同平台的原生代码的工具
  • Ronslyn 是.NET的编译器平台
  • Library 称作库,是一组可重用的代码资源的打包
  • NuGet 是包管理器,可以通过它将第三方的包安装进自己的项目中
  • namespace 是组织代码的工具
  • API 是应用程序编程接口,它是一种调用别人已经写好的功能和服务的通道

当然,在.NET开发中还会涉及到很多的专有名词,在这里就先不为大家列举和介绍了,在今后的开发中遇到新的概念时,再为大家做详细解释。

另外,我们一般在调用某个命名空间中的类和接口时,往往先需要使用using关键字调用其命名空间,那么namespace和API有什么关系呢?他们是相似的吗?其实namespace和API是两个不同的概念,它们之间没有直接的关系。namespace提供了一种组织代码的方式,而API提供了一种访问和使用这些代码的方式。它们可以一起使用来实现特定的功能。

1.3 平台框架与应用程序类型

EF Core

EF Core是一种用于访问和操纵数据库的框架,是轻量级、可扩展的ORM(对象关系映射)框架,它是Entity Framework的一个分支。ORM框架是一种将关系数据库中的数据映射到对象模型中的技术,它可以帮助开发人员更轻松地访问和操作数据库。 EF Core是跨平台的,可以在.NET Core、.NET Framework和Xamarin等平台上运行。它支持多种数据库,包括SQL Server、MySQL、PostgreSQL、SQLite等。EF Core提供了一种面向对象的方式来访问和操作数据库,开发人员可以使用C#或VB.NET等语言来编写代码,而不必直接使用SQL语句。

EF Core具有许多功能和优点,例如:

  • 支持LINQ查询,使得查询数据变得更加简单和直观
  • 支持迁移,可以帮助开发人员更轻松地管理数据库模式的变化
  • 支持事务,可以确保数据的一致性和完整性
  • 支持缓存,可以提高应用程序的性能和响应速度
  • 支持异步操作,可以提高应用程序的并发性和吞吐量

C#控制台应用程序

C#控制台应用程序是一种基于命令行界面的应用程序,它可以在Windows操作系统上运行。它通常用于执行一些简单的任务,例如读取和写入文件、处理数据、调用API等。控制台应用程序可以使用Visual Studio等开发工具来创建,使用Console类来与用户进行交互,使用命令行参数来接收用户输入的参数。

Windows应用程序

Windows应用程序包含通用Windows平台应用(UWP)和Windows桌面应用。UWP应用程序可以让开发人员编写一次代码,然后在多个Windows设备上运行,例如PC、手机、平板电脑、Xbox等,其需要根据使用的API向用户请求权限。Windows桌面应用包括WinForm、WPF和WinUI,其相关程序设计教程在其它教程和书籍中详细介绍。

Web应用程序

众所周知,.NET的Web端开发平台为ASP.NET,开发区别在与框架和工具技术不同,这里为大家介绍ASP.NET 和ASP.NET Core、Razor和Blazor。

ASP.NET是一种基于.NET Framework的Web应用程序框架,它可以使用C#、VB.NET等语言进行开发。ASP.NET提供了一种面向对象的方式来创建Web应用程序,开发人员可以使用ASP.NET Web Forms、ASP.NET MVC等技术来创建Web应用程序的用户界面和业务逻辑。

ASP.NET Core是一种跨平台的Web应用程序框架,它可以在Windows、Linux、macOS等平台上运行。ASP.NET Core是基于.NET Core的,它可以使用C#、F#等语言进行开发。ASP.NET Core提供了一种轻量级、模块化的方式来创建Web应用程序,开发人员可以使用ASP.NET Core MVC、ASP.NET Core Web API等技术来创建Web应用程序的用户界面和业务逻辑。

Razor也是一种Web框架,提供了一种更加简洁和直观的语法来创建Web应用程序的用户界面。其优点如下:

  • Razor使用类似HTML的标记语言,同时还支持C#代码和表达式,可以让开发人员更加方便地创建动态和交互式的用户界面。
  • Razor提供了一种更加灵活和可扩展的模板引擎。Razor的模板引擎可以让开发人员更加方便地自定义和扩展模板的行为和功能,例如自定义标记、布局、部分视图等。
  • Razor提供了一种更加高效和可维护的方式来创建Web应用程序。Razor的模板引擎可以让开发人员更加方便地重用和组合模板,同时还可以提高模板的性能和可维护性。
  • Razor提供了一种更加直观和易于学习的方式来创建Web应用程序。相比于ASP.NET的Web Forms和MVC等技术,Razor的语法更加简单和直观,可以让开发人员更加容易地学习和使用。

Blazor是一种新技术,可以被看作是Razor的一种扩展,用于消除JavaScript代码。Blazor是一种基于WebAssembly的Web应用程序框架,它可以使用C#、Razor等语言进行开发。Blazor提供了一种全新的方式来创建Web应用程序,它可以在浏览器中运行C#代码,而不需要使用JavaScript。Blazor可以使用Razor组件来创建Web应用程序的用户界面和业务逻辑,开发人员可以使用Blazor WebAssembly和Blazor Server等技术来创建Web应用程序。Blazor还提供了许多功能和服务,例如组件模型、依赖注入、路由等,可以帮助开发人员更轻松地创建和部署Web应用程序。

1.4 新特性概览

下面提及一些比较有用且常用易理解的新特性。

C#

  • 使用可用引用类型来减少NullableReferenceException类型的异常
  • 用于提升生产效率的索引和范围
  • 经典简练的switch表达式
  • 匹配模式的增强
  • 使用顶级语句减少小型应用的源代码行数

ASP.NET Core

  • Blazor
  • gRPC

Windows

  • WinUI3

1.5 开发者调查报告

Stack Overflow Developer Survey 2023https://survey.stackoverflow.co/2023

Stack Overflow是全球最大的程序员社区之一,它提供了一个平台,让程序员们可以互相交流、分享知识和解决问题。每年,Stack Overflow都会发布一份Developer Survey,这份调查报告涵盖了全球程序员的各种信息,例如编程语言、工具、技术、薪资、工作满意度等。大家可以访问上面的连接查看2023年的调查报告,了解一下C#/.NET技术的前景趋势。下面介绍一些我个人比较关注的统计信息。

Most popular technologies

重览.NET,术语和新特性(2023) VI-1_第2张图片

2023年,JavaScript连续第11年成为最常用的编程语言。Python已经超过SQL成为第三大最常用语言。C#排名于第8位。

Other frameworks and libraries

重览.NET,术语和新特性(2023) VI-1_第3张图片

.NET(5+)今年再次成为其他框架和库的榜首。可见新的.NET技术还是很有发展前景的。

Integrated development environment

重览.NET,术语和新特性(2023) VI-1_第4张图片

宇宙最强IDE还是名副其实的。

笔者留言
我觉得能成为C#/.NET的开发人员是一种荣幸,.NET的开发环境和社区氛围总体上来说都非常好,Visual Studio开发工具时分便捷,界面设计我很喜欢。.NET的发展更新不断适应新的要求,不断创造更便利的特性,是一个流行且很有前景的平台。

另外,这里附上Wolai链接,获得更好的阅读体验。

第1章 重览.NET,术语和新特性(2023)icon-default.png?t=N5F7https://www.wolai.com/uN3hfPxiSKHqGxHJc55Jr

你可能感兴趣的:(C#/.NET程序设计进阶,c#,开发语言,.net,microsoft)