简介和环境搭建

ASP.NET Core是微软开发的一个开源跨平台Web应用程序框架,它提供了高性能、模块化、跨平台的Web开发体验。ASP.NET Core(基于.NET Core)是ASP.NET(基于.NET Framework)的新一代版本,它们之间并不是直接的升级关系,虽然部分概念和功能用法类似,但迁移时可能需要较多调整。本系列笔记以最新的.NET 6为例,介绍ASP.NET Core WebAPI框架的用法,有关MVC、SignalR等内容将在其它章节介绍。

ASP.NET Core的特点

ASP.NET Core具有如下优点:

  1. 跨平台:ASP.NET Core很容易部署到不同的操作系统(Windows、Linux、macOS)和不同的CPU架构(x86、ARM)中。
  2. 不依赖IIS:ASP.NET Core内置了Kestrel模块作为Web服务器,因此不再依赖于IIS。
  3. 高性能:使用ASP.NET Core很容易开发高性能和高吞吐量的应用程序,ASP.NET Core原生支持异步处理。
  4. 开放源代码:ASP.NET Core是开源的,托管在Github上,任何人都可以查看源代码、提出问题和提交贡献。
  5. 支持多种应用类型:ASP.NET Core支持构建各种类型的Web应用程序,包括WebAPI纯接口服务端程序、MVC工程、SignalR实时应用程序等。
  6. 轻量级和模块化:ASP.NET Core使用模块化设计,开发人员可以按需引入需要的模块,这有助于减少应用程序体积并提高灵活性。
  7. 集成安全功能:ASP.NET Core内置了一套安全功能,包括身份验证和授权、CSRF防护、XSS防护等。
  8. 集成依赖注入:ASP.NET Core内置了依赖注入容器,有助于开发的便捷和代码的提升可维护性。

总而言之,ASP.NET Core是一个现代的高性能Web开发框架,适用于构建各种类型的Web应用。

同类技术对比

Java的SpringBoot经常被用来和ASP.NET Core进行对比,不可否认的是依托于Java庞大的生态,Spring(包括SpringBoot、SpringCloud)是当下最流行、功能最强大的Web开发技术栈之一,尤其是分布式系统和涉及微服务领域,相比之下ASP.NET Core占有的份额小到可以忽略。然而Java的历史比较厚重,曾经很长一段时间Java都被搁置在Java8版本,Spring中也有很多历史遗留问题,这就使得它不像被重新设计的.NET Core体系更新的那么激进,SpringBoot也不如ASP.NET Core设计的轻量和优美。然而,随着服务网格的普及和流行,未来的微服务可能不再关注具体某一个微服务用哪种技术实现,因为服务网格可以真正的做到异构系统也能无缝集成到一起,未来我们可能有机会抛开Spring“全家桶”,体验一些不同的技术。

除了Java以外,Go语言和其生态(包括Gin、Beego等框架)也可以和ASP.NET Core进行对比,Go语言具有语法简单、高性能、静态编译等特点,很多团队都尝试过采用Go语言来开发一部份模块作为Java的替代,然而Go语言的缺点也很明显,Go语言的语法过于简单和偏执,生态也不如Java和.Net成熟,很多人认为这种有点蹩脚的语言从开发体验上来说相比Java和C#差距较大。

创建工程

使用dotnet-cli创建工程

首先确认你已经安装了.Net SDK6或更高版本,我们可以执行以下命令查看dotnet命令已安装的工程模板。

dotnet new list

创建ASP.NET Core WebAPI工程需要使用webapi模板,我们可以执行以下命令创建工程。

dotnet new webapi -n DemoWebAPI --framework net6.0

其中-n参数指定工程名,--framework指定选择的.Net SDK版本。

使用Visual Studio创建工程

在Visual Studio中,我们可以选择「ASP.NET Core Web API」工程模板来创建ASP.Net Core WebAPI工程。

提示:创建工程时,可以取消勾选Configure for HTTPS。这个功能会启用Kestrel的HTTPS功能,实现在开发阶段提供HTTPS支持,但需要我们同意一个自签名证书。实际生产环境我们都是使用Nginx等对后端服务进行反向代理的,HTTPS配置在Nginx这一层,而应用程序这一层还是以HTTP协议提供服务,在开发阶段开启HTTPS就有点画蛇添足了。HTTPS的配置也可以通过编辑项目内的launchSettings.json修改。

工程目录结构

假如我们的工程名为DemoWebAPI,默认创建的WebAPI工程目录结构大致如下。

|_bin                             # 编译输出目录,不需要手动编辑
|_obj                             # 编译的中间文件目录,不需要手动编辑
|_Controllers                     # 控制器代码文件夹
  |_WeatherForecastController.cs  # 默认创建的一个例子控制器
|_Properties                      # 用于存放与项目运行和配置相关的文件
  |_launchSettings.json           # 配置开发环境下的运行和调试行为,不会被发布到生产环境中
|_WeatherForecast.cs              # 默认创建的一个例子实体类
|_Program.cs                      # 工程入口文件,.NET6下该文件默认采用了C#9的顶级语句
|_appsettings.json                # 工程配置文件,包含了一些ASP.NET Core默认读取的配置字段,也可以在其中编写自定义配置字段
|_appsettings.Development.json    # 分环境的工程配置文件,程序运行后对应环境的配置文件会和appsettings.json合并,环境可以通过环境变量`ASPNETCORE_ENVIRONMENT`指定
|_DemoWebAPI.csproj               # 工程描述文件

运行工程

我们点击Visual Studio的运行按钮即可运行工程。

对于WebAPI项目,启动后默认会打开Swagger页面,我们可以在这个页面中测试我们的JSON接口。默认的Swagger页面如下图所示。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap