fastendpoint+maomi的一种实现原理
1 整个框架就是fastendpoint(api处理,鉴权授权,参数校验,对象映射等基础功能集成),maoni(Service注入,依赖关系处理,参考的是abp,比较轻量级,源码我放在附件里了,实现模块化注入)
fastendpoint:https://fast-endpoints.com/
maomi: https://maomi.whuanle.cn/1.module.html
2 项目截图:
program.cs中
using FastEndpoints; using FastEndpoints.Security; using Maomi; using MassTransit; using NginxTest; using NginxTest.HostServices; using System.Reflection; var bld = WebApplication.CreateBuilder(); bld.Services .AddAuthenticationJwtBearer(s => s.SigningKey = "PBKDF2WithHmacSHA51232wewrfwerwretrewe") .AddAuthorization() .AddFastEndpoints(); // 注册模块化服务,并设置 ApiModule 为入口,整个原理就是通过特性-》反射不断循环处理。 // 任何一个框架好像都是这样。 bld.Services.AddModule<ApiModule>(); var app = bld.Build(); app.UseAuthentication() .UseAuthorization() .UseFastEndpoints(); app.Run();
主模块ApiModule
using Maomi.Module; using NginxTest_Service; namespace NginxTest { // 这里增加需要注入的其他模块 [InjectModule<ServiceModule>] public class ApiModule : IModule { private readonly IConfiguration _configuration; public ApiModule(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(ServiceContext context) { var configuration = context.Configuration; context.Services.AddCors(); } } }
ServiceModule如下:
using Maomi.Module; using Microsoft.Extensions.Configuration; namespace NginxTest_Service { public class ServiceModule : IModule { // 模块类中可以使用依赖注入 必须的 private readonly IConfiguration _configuration; public ServiceModule(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(ServiceContext context) { //throw new NotImplementedException(); } } }
然后在需要注入的实现类加上特性如下:
namespace NginxTest_Service.Services { [InjectOn(lifetime:ServiceLifetime.Scoped, Own = true)] public class Userservice : IUserService { public async Task SayHello() { await Console.Out.WriteLineAsync("你好,maomi!"); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2023-03-22 记录一个双指针去除数组中0