首页 / .NET 6 / 正文

Carter--模块化组织和管理.NET 6 Minimal API应用程序接口服务的利器!!!

2582 1 1评论 发布于: 2021-12-03 读完约需5分钟

概述

亲爱的.NET开发者们,大家好!!!

我还是你们的老朋友,码友网的创建者和维护者—Rector。

今天我为大家分享的是.NET 6 Minimal APIs应用程序开发中模块化服务接口的轻量组件—Carter

早在.NET 6发布预览版的时候,我就发布过一篇关于《创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性》的文章,和大家一起预览了.NET 6中Minimal API的新特性。

如今(2021年12月),.NET 6正式版已发布近一个月时间了。相信有朋友已经将项目升级到.NET 6最新版本,或者基于.NET 6的Minimal APIs搭建并开发新的项目(特别是Web API项目)。

在Minimal APIs中,如果不使用控制器的方式管理接口,那么代码的可管理性和可阅读性是比较低的。官方给出的示例都是把所有接口方法,路由配置写在了Program.cs这一个文件中。

这对于代码量少的小项目还好,但如果项目稍微大一些,代码量则会增长迅速,将所有的代码全挤在一个Program.cs文件中肯定是不现实的。

那么,如何来模块化管理和维护.NET 6 Minimal APIs中的不同模块的接口代码就成了.NET开发人员头疼的问题。有什么办法可以更好地处理这个问题呢?

这时候,Carter就可能成为你的好朋友,Carter可以让.NET开发人员模块化开发基于.NET 6 Minimal APIs的接口服务,即:将不同功能的代码封装在不同的类文件中,你只需要继承ICarterModule接口即可。Carter会自动注册和路由实现了ICarterModule接口的所有服务。

下面,我们结合示例来体验Carter在.NET 6 Minimal APIs接口服务应用程序的模块化功能。

“Talk is cheap. Show me the code.”

创建Minimal APIs项目

1.首先,在Visual Studio 2022中创建一个基于.NET 6的Minimal APIs项目,这里命名为MinimalApiDemo
2.打开Program.cs文件,删除其中多余的代码,删除后的代码如下:

安装Carter程序包

打开NuGet程序包管理器,在其中搜索并安装Carter程序包,如下图:

添加Carter路由服务

Program.cs文件中分别添加builder.Services.AddCarter();app.MapCarter();语句,以注册Carter的服务及路由映射,代码如下:

创建测试模块

创建一个命名Modules的文件夹,并在其创建名为HomeModule.cs的模块文件,HomeModle继承自ICarterModule接口。其中ICarterModule提供了一个名为AddRoutes(IEndpointRouteBuilder app)的方法,在这个方法中添加需要路由映射即可,如下:

运行项目,在浏览器中打开地址http://localhost:5066/,如果显示如下画面,则说明Carter服务注册成功并且正确扫描到了实现了ICarterModule的模块服务。

进一步模块化演示

为了体验更深入的模块化操作,以下分别创建了两个模块文件:HomeModule.csTodoModule.cs,演示项目结构如下图:

完整的示例代码如下:

HomeModule.cs

TodoModule.cs

其中,示例HomeModule.cs中还用到了FluentValidation验证组件,PersonValidator.cs代码如下:

请自行安装FluentValidationNuGet程序包。

运行后的Swagger文档API如图:

希望通过本文的阅读,能为.NET 6 Minimal APIs的开发者们带来一些代码管理和维护上的便利,关于Carter的更多文档和示例,请参考Carter的官方托管地址

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: Visual Studio 2022正式版(专业版/企业版)序列号/激活码/密钥/SN/KEY

下一篇: .NET 6 Minimal API程序中使用EF Core访问SQLite数据库实例教程

本文永久链接码友网 » Carter--模块化组织和管理.NET 6 Minimal API应用程序接口服务的利器!!!

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册

热门评论

AriesPan (2021-12-03 16:21)

我使用示例后调式时 app.MapPost("/validation", HandlePost).WithTags("Home"); 接口报错,错误信息:System.InvalidOperationException:“Failure to infer one or more parameters. Below is the list of parameters that we found: 你的没有问题吗?
回复 赞(0)
  • 没有问题

    Rector · 2021-12-09 13:43 赞(0)