首页 > 其他分享 >fastendpoint+maomi的一种实现原理

fastendpoint+maomi的一种实现原理

时间:2024-03-22 11:11:40浏览次数:27  
标签:maomi Service public NginxTest using 原理 configuration fastendpoint

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!");
        }
    }
}

 

标签:maomi,Service,public,NginxTest,using,原理,configuration,fastendpoint
From: https://www.cnblogs.com/Insist-Y/p/18089016

相关文章

  • AQS 原理
    AQS(AbstractQueuedSynchronizer)是Java中用于构建锁和同步器的框架,它是并发包中很多同步类的基础。AQS提供了一种基于FIFO等待队列的同步器实现,通过内置的队列和状态管理机制,可以实现各种同步器,如ReentrantLock、CountDownLatch、Semaphore等。AQS的核心思想是使用一个整......
  • Kubernetes之Pod基本原理与实践
    一、Pod的定义与基本用法1.Pod是什么Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod不是进程,而是容器运行的环境。Pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器。当Pod包含多个应用容器时,这些容器的应用之间应该是......
  • 408计算机组成原理知识点——第一章 计算机系统概述
    文章目录计算机发展历程计算机系统层次结构早期冯诺依曼机现代计算机的结构各个硬件的工作原理主存储器的基本组成运算器的基本组成控制器的基本组成计算机的工作过程计算机软件系统软件和应用软件三种级别的语言软件和硬件的逻辑功能等价性计算机系统的层次结构计算机......
  • 【面试精讲】JVM 的内存布局和运行原理(附代码)
    【面试精讲】JVM的内存布局和运行原理(附代码)目录一、JVM内存布局1、堆(Heap)2、方法区(MethodArea)3、程序计数器(ProgramCounterRegister)4、虚拟机栈(VMStack)5、本地方法栈(NativeMethodStack)二、JVM运行原理1、类加载机制2、类加载机制详解2.1、 加载阶段2.2、......
  • Java 8 内存管理原理解析及内存故障排查实践
    作者:vivo互联网服务器团队- ZengZhibin介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,介绍各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时有一个明确的思路和方向。一、背景Java是一种流行的编程语言,可......
  • 探索半导体产业:从原理到应用
    半导体产业作为当今科技领域的重要支柱之一,其影响已经渗透到了我们日常生活的方方面面。从电子设备到通信系统,从医疗器械到智能家居,无处不在的半导体技术正在改变着我们的世界。本文将深入探讨半导体产业的各个方面,从其基本原理到最新的应用趋势。 1.半导体的基本原理半导体......
  • 深度解读UUID:结构、原理以及生成机制
    What是UUIDUUID(UniversallyUniqueIDentifier)通用唯一识别码,也称为GUID(GloballyUniqueIDentifier)全球唯一标识符。UUID是一个长度为128位的标志符,能够在时间和空间上确保其唯一性。UUID最初应用于Apollo网络计算系统,随后在OpenSoftwareFoundation(OSF)的分布式......
  • golang 中 channel cap设为1原理 | 有无缓冲的channel
    在golang中,如果涉及消息传递或者是并发控制等,我们常常用到channel,channel的具体原理这里不讨论,今天主要看看有无缓冲以及缓冲值的设计。无缓冲的channel联系channel的数据结构mchan可知,就没得buf,但sendqrecvq这些肯定都是有的,所以在无缓冲的channel中,如果写者写入ch......
  • golang 多返回值的实现原理-转载
    之前一次面试时,面试官问到你知道golang的多返回值的实现吗,一脸懵逼,平时主要注重项目应用开发,对这块确实没关注,答得不好,各位大佬,以后建议也加强下基础哦。今天看看golang中多返回值的实现。可以简单认为c中多返回值的实现,其实就是通过寄存器将返回参数以指针形式传入传入参......
  • C++ <atomic>汇编语言实现原理
    C++<atomic>汇编语言实现原理问题我们先看一下这段代码:/**badcnt.c-Animproperlysynchronizedcounterprogram*//*$beginbadcnt*//*WARNING:Thiscodeisbuggy!*/#include"csapp.h"void*thread(void*vargp);/*Threadroutineprototype*//*......