第 2 章 .NET Core 和 ASP.NET Core
2.1 .NET Core 简介
.NET Core 是一个通用的开发平台,最重要的特点是跨平台,同时也是一个开源平台
.NET Core 包含以下几部分内容:
- CoreCLR:它是 .NET Core 的运行时,包含垃圾回收器、JIT 编辑器、原生数据类型、本机交互操作及底层类
- CoreFX:它是 .NET Core 的基础类库,实现了 .NET Standard,包含集合、文件系统、JSON、异步等API
- Roslyn 编辑器:用于将 C# 或 VB.NET 代码编译为程序集
- .NET Core CLI 工具:用于构建 .NET Core 应用程序和类库
.NET Core 采用包化的管理方式,应用程序只需要获取需要的组件即可
2.2 .NET Standard 简介
.NET Standard 是一套 .NET 规范或标准,它定义了所有 .NET 平台都应该实现的接口
.NET 平台包括 .NET Core、.NET Framework、Xamarin
每个平台支持不同的应用模型,而且都基于相应的基础类库,通过 .NET Standard 可以实现类库共享
.NET Standard 2.0 的 API 主要包括以下几个方面:
- IO
- XML
- Serialization
- Threading
- Data
- Networking
- Core
.NET Standard 2.1 新增3000多个 API,主要包括 Span、ValueTask、ValueTask、DbProviderFactories 等
2.3 ASP.NET Core 简介
ASP.NET Core 是免费、开源、高性能而且跨平台的 Web 框架,用来构建 Web 应用程序
ASP.NET Core 具有以下优点:
- 跨平台,能够在 Windows、macOS 和 Linux 系统上开发、编译和运行
- 统一 Web UI 与 Web API 开发
- 集成新式客户端框架和开发工作流
- 基于环境配置以及云就绪配置
- 内置依赖注入
- 轻型的高性能模块化 HTTP 请求管道
- 能够在 IIS、Nginx、Apache 和 Docker 上进行托管或者在当前进程内自托管
- 当目标框架为 .NET Core 时,支持并行应用版本控制
- 简化新式 Web 开发工具
- 开源和以社区为中心
ASP.NET Core 2.1 新增特性
- SignalR
- HTTPS
- Razor 类库
- [ApiController] 特性和 ActionResult 类
- Identity UI 类库
- Microsoft.AspNetCore.App
ASP.NET Core 2.2 新增特性
- IIS 进程内托管
- HTTP/2 支持
- OpenAPI 分析器和约定
- Kestrel 配置
- 运行状况检查
- SignalR Java 客户端
- CORS 改进
2.4 设置开发环境
.NET Core Runtime 与 SDK 的区别:
- .NET Core Runtime 仅包含 .NET Core 应用程序运行所需要的资源
- .NET Core SDK 不仅包含了 .NET Core Runtime,也包含了开发程序时所依赖的库文件以及 SDK 工具等
.NET Core CLI 就是 .NET Core 命令行界面,它是一个开发 .NET Core 应用程序的跨平台工具链,安装完 SDK 之后就可以使用
.NET Core CLI 命令:
- dotnet sln
- dotnet add
- dotnet remove
- dotnet build
- dotnet run
- dotnet publish
- dotnet ef
- dotnet dev-certs https
- dotnet test
2.5 创建第一个 API 项目
ASP.NET Core Web 应用程序包含以下若干文件:
- launchSetting.json:应用程序运行配置文件,如 URL 和端口信息等
- wwwroot:用于存储静态文件,如图片、CSS 和 JavaScript 等文件
- 依赖项:当前应用程序所依赖的 NuGet 包和 SDK
- Controllers:存储所有控制器类文件
- appsettings.json:配置文件,用于存储在应用程序运行时要用到的一些配置项
- Program.cs:程序入口类,ASP.NET Core 应用程序从这个类中的 Main 函数运行,这与控制台程序完全一样
- Startup.cs:应用程序启动时的配置类,用于配置 ASP.NET Core 应用程序中的服务、中间件、MVC 和异常处理等
本文摘自 :https://blog.51cto.com/u