概述
亲爱的.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.cs
和TodoModule.cs
,演示项目结构如下图:
完整的示例代码如下:
HomeModule.cs
TodoModule.cs
其中,示例HomeModule.cs中还用到了FluentValidation验证组件,PersonValidator.cs
代码如下:
请自行安装FluentValidationNuGet程序包。
运行后的Swagger文档API如图:
希望通过本文的阅读,能为.NET 6 Minimal APIs的开发者们带来一些代码管理和维护上的便利,关于Carter的更多文档和示例,请参考Carter的官方托管地址。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册