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 著
文段内容大多为笔者自身的学习理解,可能存在误解或说明不当的地方,欢迎大家指正。
在初学.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 月正式发布。
总的来说,三个版本框架的特点如下:
有关更详细的版本信息,可以阅读微软官方的API文档,查阅官方API应该是.NET开发者的意识性技能。
了解一些基本的术语是我们学习开发的必要基础。
.NET SDK 是一组库和工具,开发人员可用其创建 .NET 应用程序和库。 它包含用于构建和运行应用程序的.NET CLI和.NET Runtimes组件。安装Visual Studio时会自动安装SDK。
.NET Runtimes是一种软件框架,用于在Windows操作系统上运行.NET应用程序。其包含全部核心库和dotnet驱动程序。在目标系统上,不需要安装SDK,只需要安装.NET Runtimes。除此之外,还可以将运行库与应用程序打包在一起,称为自包含部署,以便可以在任何环境中轻松部署和运行。
CLI和CLR共称为公共语言运行库。
在编译时,CLI先将程序编译为IL(Intermediate Language)代码(类似于汇编语言,是一种公共中间语言),CLR再把LR代码编译为原生代码,接着由.NET程序集中的JIT(Just-In-Time)即时编译器编译为不同平台特定代码。
Roslyn是一种.NET编译器平台,用于在运行时分析、构建和修改C#代码。它包括一组API和工具,可以帮助开发人员创建和修改代码,以及执行各种代码分析和重构操作。Roslyn还提供了一种即时编译的功能,可以在运行时编译和执行代码,这使得开发人员可以更快地迭代和测试他们的代码。Roslyn是.NET开发人员的一个强大工具,可以帮助他们更轻松地创建和维护高质量的C#代码。
库(Library)是指一组可重用的代码和资源,它们通常被打包成一个单独的单元,以便在多个项目中共享和重用。库可以包含各种类型的代码,例如类、函数、接口、枚举、结构体等,以及资源文件、配置文件等。库可以由开发人员自己编写,也可以从第三方获取,例如NuGet存储库。
NuGet是一个包管理器,它可以用于在.NET项目中安装、升级和卸载第三方库和工具。NuGet包是一种可重用的软件组件,它们可以包含编译的代码、资源文件、配置文件等。
命名空间是一种组织代码的方式,它可以将相关的类、接口、结构体、枚举等类型组织在一起,以便更好地管理和使用它们。.NET官方提供的类也组织在命名空间中,大多以System
或Microsoft
开头。
API是指应用程序编程接口(Application Programming Interface)的缩写。API是一组定义了软件组件之间交互的规范和接口,它们可以让不同的软件组件之间进行通信和交互,以实现特定的功能。API可以提供各种类型的功能和服务,例如数据访问、网络通信、身份验证、文件操作等。通过使用API,开发人员可以更轻松地编写应用程序,因为他们可以利用现有的API来实现一些常见的功能,而不必从头开始编写代码。
人性化地理解总结一下:
当然,在.NET开发中还会涉及到很多的专有名词,在这里就先不为大家列举和介绍了,在今后的开发中遇到新的概念时,再为大家做详细解释。
另外,我们一般在调用某个命名空间中的类和接口时,往往先需要使用using
关键字调用其命名空间,那么namespace和API有什么关系呢?他们是相似的吗?其实namespace和API是两个不同的概念,它们之间没有直接的关系。namespace提供了一种组织代码的方式,而API提供了一种访问和使用这些代码的方式。它们可以一起使用来实现特定的功能。
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具有许多功能和优点,例如:
C#控制台应用程序是一种基于命令行界面的应用程序,它可以在Windows操作系统上运行。它通常用于执行一些简单的任务,例如读取和写入文件、处理数据、调用API等。控制台应用程序可以使用Visual Studio等开发工具来创建,使用Console类来与用户进行交互,使用命令行参数来接收用户输入的参数。
Windows应用程序包含通用Windows平台应用(UWP)和Windows桌面应用。UWP应用程序可以让开发人员编写一次代码,然后在多个Windows设备上运行,例如PC、手机、平板电脑、Xbox等,其需要根据使用的API向用户请求权限。Windows桌面应用包括WinForm、WPF和WinUI,其相关程序设计教程在其它教程和书籍中详细介绍。
众所周知,.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应用程序的用户界面。其优点如下:
Blazor是一种新技术,可以被看作是Razor的一种扩展,用于消除JavaScript代码。Blazor是一种基于WebAssembly的Web应用程序框架,它可以使用C#、Razor等语言进行开发。Blazor提供了一种全新的方式来创建Web应用程序,它可以在浏览器中运行C#代码,而不需要使用JavaScript。Blazor可以使用Razor组件来创建Web应用程序的用户界面和业务逻辑,开发人员可以使用Blazor WebAssembly和Blazor Server等技术来创建Web应用程序。Blazor还提供了许多功能和服务,例如组件模型、依赖注入、路由等,可以帮助开发人员更轻松地创建和部署Web应用程序。
下面提及一些比较有用且常用易理解的新特性。
Stack Overflow Developer Survey 2023https://survey.stackoverflow.co/2023
Stack Overflow是全球最大的程序员社区之一,它提供了一个平台,让程序员们可以互相交流、分享知识和解决问题。每年,Stack Overflow都会发布一份Developer Survey,这份调查报告涵盖了全球程序员的各种信息,例如编程语言、工具、技术、薪资、工作满意度等。大家可以访问上面的连接查看2023年的调查报告,了解一下C#/.NET技术的前景趋势。下面介绍一些我个人比较关注的统计信息。
2023年,JavaScript连续第11年成为最常用的编程语言。Python已经超过SQL成为第三大最常用语言。C#排名于第8位。
.NET(5+)今年再次成为其他框架和库的榜首。可见新的.NET技术还是很有发展前景的。
宇宙最强IDE还是名副其实的。
笔者留言
我觉得能成为C#/.NET的开发人员是一种荣幸,.NET的开发环境和社区氛围总体上来说都非常好,Visual Studio开发工具时分便捷,界面设计我很喜欢。.NET的发展更新不断适应新的要求,不断创造更便利的特性,是一个流行且很有前景的平台。
另外,这里附上Wolai链接,获得更好的阅读体验。
第1章 重览.NET,术语和新特性(2023)https://www.wolai.com/uN3hfPxiSKHqGxHJc55Jr