Skip to content

基于 .NET6/.NET8 实现的通用快速开发框架,整合众多优秀技术和框架,模块化方式开发。

License

Notifications You must be signed in to change notification settings

q315523275/Findx

Repository files navigation

Findx 快速开发框架

GitHub license GitHub stars GitHub forks

🍟 概述

基于 .NET6/.NET8 实现的通用快速开发框架,整合众多优秀技术和框架,模块化方式开发。集成多租户、缓存、数据校验、鉴权、事件总线、通讯、远程请求、任务调度等众多黑科技。代码结构简单清晰,注释详尽,易于上手与二次开发,即便是复杂业务逻辑也能迅速实现,真正实现“开箱即用”。

如果对您有帮助,您可以点右上角 “Star” 收藏一下 ,谢谢!~

🍖 框架组件组织

image

  • Findx:框架的核心组件,框架各个组件的核心接口定义,部分核心功能的实现,包含Aspect、缓存、原子计数、哈希一致性、Cron、实体约定、分表分库、审计、Id生成器(有序Guid/雪花Id)、工作单元、仓储、软删除、租户、各域字典、自动注入、邮件、领域事件、进程事件总线、异常处理器、基础扩展、图像处理(包含验证码)、调度任务(默认内存版)、拉姆达表达式扩展(Json转表达式)、锁(包含续期锁)、机器信息(Cpu、内存、磁盘、流量等)、对象映射、CQRS、模块化、HtmlToPdf、池(StringBuilder、MemoryStream)、进程命令执行器、Redis接口、反射类查询器、认证授权、序列化、配置聚合、短信、存储、线程相关、工具集(压缩、Cron、Csv、脱敏、目录、文件、加密、随机、验证等等)、启动应用端口验证等等。

  • Findx.AspNetCore:AspNetCore 组件,提供 AspNetCore 的服务端功能的封装,包含各个模块化构建、HttpClient各策略创建、各个策略过滤器(防重、审计、异常、验证、租户、内网访问、限速、事物等)、全局异常处理、Crud、端点资源处理、Razor视图读取器、Cors配置、静态ServiceScopeResolver实现等等

  • Findx.Castle:Castle 组件,提供异步Aop功能。

  • Findx.Configuration:Configuration 组件,实现配置中心客户端,采用Http长轮询方式实现配置的热更新,实现IConfiguration读取配置零侵入。

  • Findx.Extensions.ConfigurationServer:Configuration 组件,实现配置中心服务端,采用Http长轮询方式实现配置变更通知,模块化方式Nuget引用后直接使用。

  • Findx.DinkToPdf:Pdf 组件,实现Html生成Pdf功能,内嵌libwkhtmltox.so文件Linux部署无法额外安装其他组建。

  • Findx.Discovery:服务发现 组件,包含服务的发现与注册,内置负载算法(IP哈希一致性、最小连接数、随机、轮询),实现HttpClient的HttpMessageHandler负载端点计算减少代码侵入,默认实现配置文件方式的服务发现功能。

  • Findx.Discovery.Consul:Consul 组件,以Consul实现服务发现与注册功能。

  • Findx.FreeSql:FreeSql 组件,实现Findx统一的仓储定义功能,扩展实现逻辑删除、多租户、多FreeSql实例、实体标注自动实现切库切表、工作单元、工作单元管理、工作单元事件、Sql打印、慢Sql事件触发、分页总数是否查询、表集合及表字段查询、主健值自动创建等。

  • Findx.Guids.NewId:NewId 组件,实现有序Guid的生成。

  • Findx.ImageSharp:ImageSharp 组件,实现二维码生成,实现图片的处理功能,包括尺寸、裁剪、压缩、灰度化、二值化、旋转、翻转、图片合并、绘制文本、图片水印、文字水印等等图片处理功能。

  • Findx.Log4Net:Log4Net 组件,用Log4Net实现日志的输出与记录,内置配置文件。

  • Findx.NLog:NLog 组件,用NLog实现日志的输出与记录,内置配置文件。

  • Findx.MailKit:MailKit 组件,使用 MailKit 实现邮件的发送功能。

  • Findx.Mapster:Mapster 组件,实现对象的映射功能,高性能。

  • Findx.RabbitMQ:RabbitMQ 队列组件,实现属性标记(队列特性)的队列消息消费方式,实现异常处理回调,自定义消息序列化器。

  • Findx.Redis:StackExchange.Redis 组件,实现公共缓存组件,实现IRedisClient 统一操作功能,实现分布式锁功能,支持多实例操作、支持独立序序列化配置。

  • Findx.Security:认证授权 组件,支持Jwt、Cookie认证,授权支持角色、资源标记、角色及资源同时验证,可以实现IFunctionStore接口来实现端点资源的在线管理。

  • Findx.Swagger:Swagger 组件,使用 Swagger 生成 应用的在线接口文档信息。

  • Findx.WebApiClient:WebApiClient 组件,声明式 远端接口请求,并扩展增加服务发现、熔断、降级、超时等功能,实现配置设置优先策略。

  • Findx.WebSocketCore:WebSocket 组件,实现自定义 WebSocket 功能,其中包括 WebSocket 客户端与服务端、客户端连接管理等等功能。

  • Findx.Module.EleAdminPlus:EleAdminPlus 组件,收费前端 EleAdminPlus 的C#实现,通用权限管理平台 模块。

  • Findx.WebHost:部分功能 的 使用示例。

  • WebApplication1:配置中心 客户端 使用示例。

🎁 Nuget Packages

包名称 版本 下载数
Findx Findx Findx
Findx.AspNetCore Findx.AspNetCore Findx.AspNetCore
Findx.RabbitMQ Findx.RabbitMQ Findx.RabbitMQ
Findx.ImageSharp Findx.ImageSharp Findx.ImageSharp
Findx.FreeSql Findx.FreeSql Findx.FreeSql
Findx.Swagger Findx.Swagger Findx.Swagger
Findx.Redis Findx.Redis Findx.Redis
Findx.Discovery Findx.Discovery Findx.Discovery
Findx.Security Findx.Security Findx.Security
Findx.WebApiClient Findx.WebApiClient Findx.WebApiClient
Findx.Mapster Findx.Mapster Findx.Mapster
Findx.Configuration Findx.Configuration Findx.Configuration
Findx.NLog Findx.NLog Findx.NLog
Findx.DinkToPdf Findx.DinkToPdf Findx.DinkToPdf
Findx.WebSocketCore Findx.WebSocketCore Findx.WebSocketCore
Findx.Discovery.Consul Findx.Discovery.Consul Findx.Discovery.Consul
Findx.MailKit Findx.MailKit Findx.MailKit
Findx.Castle Findx.Castle Findx.Castle
Findx.Guids.NewId Findx.Guids.NewId Findx.Guids.NewId
Findx.Extensions.ConfigurationServer Findx.Extensions.ConfigurationServer Findx.Extensions.ConfigurationServer
Findx.Module.EleAdminPlus Findx.Module.EleAdminPlus Findx.Module.EleAdminPlus

🍁 说明

📙 启动

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddFindx().AddModules();
builder.Services.AddControllers()
    .AddMvcFilter<FindxGlobalAttribute>()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
        options.JsonSerializerOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
        options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter());
        options.JsonSerializerOptions.Converters.Add(new DateTimeNullableJsonConverter());
        options.JsonSerializerOptions.Converters.Add(new LongStringJsonConverter());
    });
builder.Services.AddWebSockets(x => { x.KeepAliveInterval = TimeSpan.FromMinutes(2); });
builder.Services.AddCorsAccessor();

var app = builder.Build();

// Configure the HTTP request pipeline.
app.UseJsonExceptionHandler();
app.UseCorsAccessor().UseRouting();
app.UseStaticFiles(new StaticFileOptions
{
    RequestPath = "/storage",
    FileProvider = new PhysicalFileProvider(Path.Combine(Environment.CurrentDirectory, "storage"))
});
app.UseWebSockets().MapWebSocketManager("/ws", app.Services.GetRequiredService<WebSocketHandler>());
app.UseFindx();
app.MapControllersWithAreaRoute();
// app.UseWelcomePage();

// Run Server
app.UseFindxHosting();

💐 特别鸣谢

About

基于 .NET6/.NET8 实现的通用快速开发框架,整合众多优秀技术和框架,模块化方式开发。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages