什么是 .NET?

已完成

当有人使用术语“.NET”时,其含义在很大程度上取决于上下文。 在此单元中,你将通过将 .NET 视为生态系统来了解它。 换句话说,.NET 是共同创建用于生成应用程序的强大环境的许多部件和人员的集合。

.NET 是用于应用程序开发的生态系统

术语“生态系统”描述了应用程序开发环境及其周围社区的多方面领域。 这些方面共同构成了一个令人信服的理由,解释了为何要在学习 .NET 和生成 .NET 应用程序方面投入精力。

使用 .NET 语言和编译器在 .NET 运行时中运行应用程序

软件开发人员使用 C# 和 F# 等 .NET 语言编写源代码。 他们所编写的每行代码都表示一条指令或命令,计算机应在程序运行时执行该指令或命令。

在软件开发人员运行其代码之前,必须先对其进行编译。 .NET 编译器是一个将源代码(可用任何支持的编程语言)转换为可移植语言(称为中间语言 (IL))的程序。 .NET 编译器将 IL 代码保存到名为“.NET 程序集”的文件中。 通过将代码编译为中间格式,无论在哪里运行代码(Windows 或 Linux,32 位或 64 位计算机硬件),都可以使用相同的代码库。

.NET 运行时是编译后的 .NET 程序集的执行环境。 换句话说,当应用程序在主机操作系统上运行时,.NET 运行时执行和管理该应用程序。 稍后我们将详细讨论 .NET 运行时的功能。

幸运的是,作为一名刚开始使用 .NET 的软件开发人员,你无需详细了解这些机制的工作原理。 随着经验的积累,你将更加全面地理解和领会 .NET 语言、编译器和运行时的潜在功能。

提示

有时,人们认为 C# 编程语言就是 .NET。 但是,C# 和 .NET 是截然不同的。 C# 是一种编程语言语法。 作为语法的一部分,你可以引用和调用 .NET 代码库或程序集中定义的方法。 接下来,你将使用随 .NET SDK 一起安装的 C# 编译器通过 C# 代码创建 .NET 程序集。 然后,.NET 运行时会运行该 .NET 程序集。 在你深入了解 .NET 和 C# 的过程中,这些区别是非常重要的概念。

使用 .NET 应用程序框架和库来利用预生成功能

所有软件都是分层生成的,这意味着软件在计算机的不同抽象层次上运行:

  • 在最低层,软件直接与计算机硬件通信。 它控制着主板、处理器、内存和硬盘驱动器上的数据流。
  • 在下一层,软件支持最终用户通过操作系统提供指令。
  • 在下一层,.NET 等软件提供开发和运行应用程序的方法。
  • 在下一层,可以借助应用程序框架和功能库,使用比以前更简单的开发方法,快速生成丰富的应用程序。

代码库将特定用途的功能封装到单个程序集中。 对于 .NET,可以使用数千个库。 这些库可以是第一方的,也可以是第三方的,可以是商业的,也可以是开源的。 这些库提供了一系列可在应用程序中使用的功能。 只需引用这些程序集并调用所需的方法。 作为开发人员,你可以使用这种方法在其他软件开发人员的工作之上生成应用程序。 由于无需自己生成和维护每个功能,因此可以节省你的时间和精力。

应用程序框架结合了几个相关的库、初学者项目、文件模板、代码生成器以及其他工具。 你可以使用这些资源为特定目的生成整个应用程序。 这些应用程序框架称为“应用模型”。 例如,.NET 应用程序框架可用于 Web 开发、桌面和移动开发以及游戏开发等常用应用模型。

可以直接安装 .NET SDK,也可以安装 Visual Studio 2022。 .NET SDK 预安装了一组全面的库和应用程序框架,称为“基类库”。 你可以在程序中使用此代码库,无需考虑你要生成的平台或应用模型。

对于其他第三方库,开发人员使用 NuGet 等包管理器从包存储库(如 NuGet 库)中查找并集成代码库。

主要应用模型有哪些?

你可能想知道框架所支持的应用模型。 使用下表将应用模型映射到 .NET 框架。

应用模型 框架 说明
Web ASP.NET Core 用于生成服务器端逻辑的框架。
Web ASP.NET Core MVC 用于为网页或 Web API 生成服务器端逻辑的框架。
Web ASP.NET Core Razor Pages 用于生成服务器生成的 HTML 的框架。
Web 客户端 Blazor Blazor 是 ASP.NET Core 的一部分。 它的两种模式允许通过套接字进行文档对象模型 (DOM) 操作,作为运行服务器端代码的通信工具,或者作为在浏览器上运行已编译 C# 的 WebAssembly 实现。
桌面 .NET for Mac 允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 Mac 设备的应用。
桌面 WinForms 用于生成“战舰灰色”Windows 风格应用程序的框架。
桌面 Windows Presentation Foundation (WPF) 一个框架,用于生成符合不同外形规格的动态桌面应用程序。 WPF 允许外形元素在丰富的动画库的帮助下执行移动、淡出、滑动和其他效果。
移动 .NET for Android 允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 Android 设备的应用。
移动 .NET for iOS 允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 iOS 和 iPadOS 的应用。
多平台应用 UI .NET MAUI 使用本机 UI 从单个共享代码库生成适用于 iOS、Android、Mac 和 Windows 的应用以及访问本机 API 的首要方法。

.NET 还支持常用的第三方及开源游戏开发环境和 Unity 等引擎。

使用 .NET 工具生成 .NET 应用

软件开发人员依赖工具来编写代码、添加对代码库的引用、编译代码和调试代码。 本部分介绍了几种用于生成 .NET 应用程序的 .NET 工具。

Visual Studio 2022 是 Microsoft 旗舰开发环境。 数百万开发人员使用它来生成 .NET 应用程序。 包含菜单、窗口、可视化设计器、对话框和向导的图形用户界面可引导开发人员完成应用程序开发过程。 Visual Studio 2022 提供三个版本:社区版、专业版和企业版。 每个版本都包含不同的工具,并且授权用于不同的目的。

Visual Studio Code 是 Microsoft 旗舰代码编辑器,它支持多种编程语言,并且在 Windows、Mac 和 Linux 上受支持。 C# 开发工具包扩展为 Visual Studio Code 带来了改进的编辑器优先 C# 开发体验,并通过对解决方案资源管理器、项目系统、测试增强功能和资源管理器、AI 辅助开发的支持增强了 .NET 项目的处理体验,可为代码导航、重构、语义感知等一流 C# 语言功能提供强大的语言服务。

更喜欢命令行工作流的开发人员可以将 Visual Studio Code(世界上最常用的代码编辑器)与 .NET 命令行接口(也称为 .NET CLI)结合使用。

此外,你可以选择许多第一方和第三方的工具,并将其用于诸多高级 .NET 用例。 可以选择代码探查器、单元测试运行程序,以及代码覆盖率分析器。

你可以在其他应用场景中找到其他 .NET 工具。 例如,你稍后将在本模块中使用 Try .NET。 使用此基于浏览器的界面来编写简单的应用程序,以帮助你了解 C# 编程语言。

在文档和教程中查找解决方案和答案

Microsoft 主动提供一套内容丰富的文档、教程和培训。 你可以找到最常用的学习材料,为你学习过程中的每一步提供帮助。

下表列出了一些非常实用的资源,你可能会想将这些资源添加到书签,方便以后查看。

资源 目的
Microsoft Learn 提供快速入门教程和权威参考文档。
模式与最佳做法 帮助开发人员和软件架构师查找常见应用程序开发需求的解决方案。 除提供编写代码的底层详细信息外,这些资源还深入研究如何选择能够实现无限可伸缩架构的产品和服务。
.NET 视频 提供来自 .NET 团队的视频教程。 这些视频为开发人员介绍常见的使用场景。
C# 入门 提供动手实验室,通过结合说明、练习、媒体、知识检查和跟踪进度的方法,帮助你训练技能。

与 .NET 社区交互以了解和共享解决方案

.NET 生态系统不仅仅局限于语言、库和工具,还扩展到人员方面。 你既可以借助社区学习,也可以为社区做出贡献。

  • 学习:.NET 社区成员主持实时在线活动和见面会。 他们生成开源软件、参与问答论坛和录制视频教程。 他们撰写书籍和博客文章,帮助你学习知识,在你不知道下一步怎么做时,还能帮助你解开困惑。
  • 参与:.NET 在 GitHub 上是开源的。 该存储库中的项目由 .NET Foundation 管理。 这个独立的组织致力于围绕 .NET 开发平台打造一个可信的、商业友好的、开源的生态系统。 在该存储库中,你可以分享你独特的观点和见解,帮助他人学习。

.NET 生态系统与其他生态系统相比如何?

如果你熟悉软件开发领域,则可能会想知道 .NET 生态系统与其他系统相比如何。 坦率地说,其他生态系统可以对本单元迄今为止的部分陈述或很多陈述提出类似的主张。

然而,.NET 最显著的特点之一是它的持续开发和支持不仅来自于主要的技术领导者,还来自社区。 .NET 的重要部分是通过开源方式开发的。 欢迎和鼓励社区的意见和贡献。 事实上,87% 的参与者都不属于 Microsoft。 根据社区的意见,Microsoft 通过功能增强、bug 修复和性能改进来积极推动平台向前发展。 已接受社区中超过 100,000 个拉取请求。

此外,.NET 生态系统势头强劲:

  • 有超过 500 万的 .NET 开发人员!
  • Stack Overflow 投票结果一直表明,.NET Core 和 .NET 是最受欢迎的框架。
  • 学生群体喜欢使用 .NET,在刚接触 .NET 开发的人员中,有 40% 都是学生。
  • 适用于 .NET 和 ASP.NET 的 GitHub 存储库位列成长速度最快的前 30 名开源软件 (OSS) 项目之中。
  • GitHub 将 C# 列为五大热门编程语言之一,根据 2020 年的 TIOBE 编程社区指数,该语言越来越受欢迎。
  • 根据 TechEmpower 基准(一组独立的开源 Web 性能基准测试集,可以测量几十种语言和应用程序框架),.NET 拥有世界上最快的 Web 框架。

.NET 简史

最初的 .NET Framework 于 2002 年初首次发布。 从那以后,许多更新和更多功能随之推出。 经过多年的改进和新功能积聚,最初的 .NET Framework(特别是关键代码库)有了显著增长。

2002 年之后,Microsoft 致力于开发具有跨平台兼容性的 .NET 版本。 其目标是允许开发人员编写一个基本代码,并可跨 macOS、Linux 和 Windows 操作系统使用它。

通过不懈的努力,.NET Core 于 2014 年左右推出。 Microsoft 维护着最初的 .NET Framework,但新功能和改进是为 .NET Core 保留的。 “Core”稍后从名称中删除。 之后推出的主要版本是 .NET 5、.NET 6、.NET 7、.NET 8 等。 这些版本通常在每年 11 月发布。

我们为什么要在这里介绍 .NET 的历史? 因为你可能会找到针对最初的 .NET Framework 的博客文章、视频和源代码。 在某些情况下,说明或代码仍然有效,但在其他情况下,你可能需要进行调整,以适应新的 .NET。