温故知新,使用ASP.NET Core创建Web API,永远第一次
ASP.NET Core简介
ASP.NET Core是一个跨平台的高性能开源框架,用于生成启用云且连接Internet的新式应用。 使用ASP.NET Core,您可以:
- 生成Web应用和服务、物联网(IoT)应用和移动后端。
- 在Windows、macOS和Linux上使用喜爱的开发工具。
- 部署到云或本地。
- 在.NET Core上运行。
为何选择ASP.NET Core?
数百万开发人员在使用或使用过ASP.NET 4.x
创建Web应用。ASP.NET Core是对ASP.NET 4.x
的重新设计,其中包括体系结构上的更改,产生了更精简、更模块化的框架。
ASP.NET Core 具有如下优点:
- 生成Web UI和Web API的统一场景。
- 针对可测试性进行构建。
- Razor Pages可以使基于页面的编码方式更简单高效。
- Blazor允许在浏览器中使用C#和JavaScript。 共享全部使用.NET编写的服务器端和客户端应用逻辑。
- 能够在Windows、macOS和Linux上进行开发和运行。
- 开放源代码和以社区为中心。
- 集成新式客户端框架和开发工作流。
- 支持使用gRPC托管远程过程调用(RPC)。
- 基于环境的云就绪配置系统。
- 内置依赖项注入。
- 轻型的高性能模块化HTTP请求管道。
- 能够托管于以下各项:
Kestrel
IIS
HTTP.sys
Nginx
Apache
Docker - 并行版本控制。
- 简化新式 Web 开发的工具。
使用ASP.NET Core MVC生成Web API和Web UI
ASP.NET Core MVC 提供生成 Web API和Web应用所需的功能:
- Model-View-Controller(MVC)模式使Web API和Web应用可测试。
- Razor Pages是基于页面的编程模型,它让Web UI的生成更加简单高效。
- Razor标记提供了适用于Razor Pages和MVC视图的高效语法。
- 标记帮助程序使服务器端代码可以在Razor文件中参与创建和呈现HTML元素。
- 内置的多数据格式和内容协商支持使Web API可访问多种客户端,包括浏览器和移动设备。
- 模型绑定自动将HTTP请求中的数据映射到操作方法参数。
- 模型验证自动执行客户端和服务器端验证。
ASP.NET Core目标框架
ASP.NET Core 3.x和更高版本只能面向.NET Core。通常,ASP.NET Core由.NET Standard库组成。 使用.NET Standard 2.0编写的库在实现.NET Standard 2.0的任何.NET平台上运行。
面向.NET Core有以下几个优势,并且这些优势会随着每次发布增加。 与.NET Framework相比,.NET Core的部分优势包括:
- 跨平台。在Windows、macOS和Linux上运行。
- 性能更强
- 并行版本控制
- 新API
- 开源
ASP.NET Core开源地址
使用ASP.NET Core创建Web API
使用支持创建、读取、更新、删除(CRUD) 操作的ASP.NET Core创建RESTful服务。
介绍
假设你是一家名为Contoso Pets的在线狗玩具零售商的员工。 你的经理要求你开发RESTful库存管理服务,作为公司Web店面的必备项目。 该服务必须支持添加、查看、修改和删除产品 — HTTP 操作谓词的标准化使用方式,通常也称为创建、读取、更新、删除 (CRUD)。
接下来将介绍ASP.NET Core Web API与.NET Core和C#结合使用来创建跨平台RESTful服务。 将创建内存数据库以保存产品数据。实体框架(EF)核心将用作对象关系映射器(O/RM),用于读取和管理产品数据。
参考
分类:
.Net Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通