Net 基础知识

总结. Net 的基础认识

什么是.Net?

  • .NET 可以为多个平台创建应用,包括 Windows、MacOS、Linux、Android、IOS、tvOS
  • .NET 支持多处理器体系结构,包括 X64、x86、ARM32、ARM64
  • .NET 支持三种编程语言:C#、F#、Visual Basic
  • .NET 主要由两部分组成:1. 公共语言运行时 (CLR),2.Net 的框架类库 (FCL)

.Net 的主要组件?

  • 公共语言运行时 (CLR) 是.NET Framework 的基本和虚拟机组件。正是 .NET Framework 中的运行时环境运行代码,并通过提供各种服务(如远程处理、线程管理、类型安全、内存管理、健壮性等)来帮助简化开发过程
  • 框架类库(FCL):它是可重用的、面向对象的类库和方法等的集合,可以与 CLR 集成。也称为程序集。它就像 C / C++ 中的头文件和 java 中的包一样。安装.NET 框架基本上是将 CLR 和 FCL 安装到系统中

.Net 的 SDK、运行时 (runtimes)?

  • 在准备开发.Net 应用的机器上安装 SDK
  • 在准备运行.Net 应用的机器上安装运行时 (runtimes)

.Net 的 SDK 包括哪些组件?

  • .NET CLI:可用于本地开发和持续集成脚本的命令行工具。
  • dotnet 驱动程序: 用于运行依赖于框架的应用的 CLI 命令。
  • Roslyn 和 F# 编程语言编译器。
  • MSBuild 生成引擎。
  • .NET 运行时:提供类型系统、程序集加载、垃圾回收器、本机互操作和其他基本服务。
  • 运行时库:提供基元数据类型和基本实用程序。
  • ASP.NET Core 运行时:为连接 Internet 的应用(如 Web 应用、IoT 应用和移动后端)提供基本服务。
  • 桌面运行时: 为 Windows 桌面应用(包括 Windows 窗体和 WPF)提供基本服务

.Net 的运行时 (runtimes) 包括哪些组件?

  • (可选)桌面或 ASP.NET Core 运行时。
  • .NET 运行时: 提供类型系统、程序集加载、垃圾回收器、本机互操作和其他基本服务。
  • 运行时库:提供基元数据类型和基本实用程序。
  • dotnet 驱动程序: 用于运行依赖于框架的应用的 CLI 命令

.Net 的框架类库 (FCL)?

  • 包括可加快和优化开发过程并提供对系统功能的访问的类、接口和值类型。 为了便于语言之间进行交互操作,大多数 .NET Framework 类型都符合 CLS(Common Language Specification,通用语言规范)
  • 和公共语言运行时 (CLR)) 组成.Net,并被 C#、F#、Visual Basic 等语言使用

什么是 MSBuild?

  • .NET 应用是使用 MSBuild 从源代码中生成的。 项目文件(.csproj、.fsproj 或 .vbproj)指定目标和负责编译、打包和发布代码的关联任务

什么是 NuGet?

  • NuGet 是为 .NET 设计的开源包管理器。 NuGet 包是具有 .nupkg 扩展的 .zip 文件,此扩展包含编译代码 (DLL)、与该代码相关的其他文件以及描述性清单(包含包版本号等信息)
  • 使用代码的开发人员共享创建包,并将其发布到 nuget.org 或专用主机。 希望使用共享代码的开发人员将包添加到其项目中,然后可以在项目代码中调用包公开的 API

如何部署.Net 的应用?

  • 将应用作为独立应用,生成的可执行文件将包含 .NET 运行时和库,以及该应用程序及其依赖项。 应用程序的用户可以在未安装 .NET 运行时的计算机上运行该应用程序。 独立应用是特定于平台的,可以使用 AOT 编译形式进行选择性发布
  • 将应用作为依赖于框架的应用发布会生成一个可执行文件和多个二进制文件(.dll 文件),其中仅包括应用程序本身及其依赖项 。 应用程序的用户必须单独安装 .NET 运行时。 可执行文件是特定于平台的,但依赖于框架的应用程序的 .dll 文件是跨平台的

.Net 应用是依赖于平台还是独立于平台?

  • 操作系统体系结构和 CPU 体系结构 的组合称为平台。依赖于平台意味着编程语言代码将仅在特定的操作系统上运行
  • .NET 应用程序依赖于平台 ,因为.NET 框架只能在基于 Windows 的操作系统上运行。.Net 应用程序也是独立于平台的,因为 Mono 框架 。使用 Mono 框架,.Net 应用程序可以在任何操作系统上运行,包括 Windows

.Net 与 Visual Studio 的关系?

  • Visual Studio 是用于设计和开发 .NET 应用程序的开发工具
  • 要使用 Visual Studio,用户必须首先在系统上安装.NET 框架

如何认识.Net 的 AOT 编译器?

  • 大多数 .NET 工作负载的默认体验是 JIT 编译器,但 .NET 提供两种形式的预先 (AOT) 编译
  • 某些场景需要 100% AOT 编译。 例如 IOS
  • 在其他情况下,应用的大多数代码都是 AOT 编译的,但有些代码是 JIT 编译的。 某些代码模式不适用于 AOT(如泛型)。 这种形式的 AOT 编译的示例为准备运行发布选项。 这种形式的 AOT 具有 AOT 的优点并且没有 AOT 的缺点

如何认识.Net 的自动内存管理?

  • 垃圾回收器 (GC) 管理应用程序的内存分配和释放。 每当代码新建对象时,CLR 都会从托管堆为对象分配内存
  • 只要托管堆中有地址空间,运行时就会继续为新对象分配空间。 没有足够的可用地址空间时,GC 将检查托管堆中应用程序不再使用的对象。 然后回收该内存
  • GC 是一种有助于确保内存安全的 CLR 服务。 如果某个程序仅访问分配的内存,则该程序就是内存安全的。 例如,运行时可确保应用不会访问超过数组边界的未分配内存