跳到主要内容

IGeekFan.FreeKit.Web

IGeekFan.FreeKit.Web 是 FreeKitModules 的内部 BuildingBlock,不对外发布 NuGet 包。

它的职责是把 Infrastructure、Extras、Modularity 以及 ASP.NET Core Host 的常见注册动作装配起来,成为 Host 项目的启动基座。

使用方式

不是安装包,而是项目引用

<ItemGroup>
<ProjectReference Include="..\..\..\BuildingBlocks\IGeekFan.FreeKit.Web\IGeekFan.FreeKit.Web.csproj" />
</ItemGroup>

扩展方法清单

UseFreeKit

命名空间:FreeKit.DI.Extensions

builder.UseFreeKit(
moduleTypeMap: E.Modules,
extraAssemblies: new[] { typeof(Program).Assembly });

做了什么:

  1. 注册模块
  2. 配置 Autofac 与 Serilog
  3. 调用 RegisterFreeKitInfrastructure
  4. 调用 RegisterDomainServices
  5. 调用 AddFreeKitHost

AddFreeKitHost

builder.AddFreeKitHost(builder.Configuration, options);

做了什么:

  • 配置 Kestrel
  • 调用 AddFreeKitComplete
  • 按需启用任务调度

AddFreeKitComplete / AddFreeKitService

核心会按开关组合注册:

  • Email
  • SignalR
  • FreeSql
  • Redis + CacheStrategy
  • JWT
  • MVC
  • Swagger
  • IP2Region
  • IP 限流
  • HealthChecks
  • Localization
  • CAP + MediatR

AddCustomMVC

builder.Services.AddCustomMVC(builder.Configuration);

注册内容:

  • IHttpContextAccessor
  • Controllers
  • 全局异常过滤器
  • ModelState 统一返回
  • NewtonsoftJson
  • CorsPolicy

AddSwagger

builder.Services.AddSwagger(builder.Configuration, projectNames);

注册内容:

  • SwaggerGen
  • XML 注释加载
  • Bearer 鉴权描述

AddDefaultFreeSql

builder.Services.AddDefaultFreeSql(builder.Configuration);

注册内容:

  • IFreeSql
  • UnitOfWorkManager
  • 软删除与租户过滤器
  • 审计值填充

依赖配置:

  • ConnectionStrings:*

AddDefaultJsonWebToken

builder.Services.AddDefaultJsonWebToken(builder.Configuration);

注册内容:

  • HashService
  • CryptographyService
  • JwtService
  • Authentication / Authorization
  • Cookie / IdentityCookies
  • 第三方登录可选注册

AddRedisClient

builder.Services.AddRedisClient(builder.Configuration);

依赖配置:

  • ConnectionStrings:Redis

RunScopeService

app.Services.RunScopeService<ToDoDbContext>();

作用:

  • 启动时主动触发 DbContext 初始化

RegisterFreeKitInfrastructure

containerBuilder.RegisterFreeKitInfrastructure(assemblies);

注册内容:

  • AopCacheIntercept
  • AopCacheAsyncIntercept
  • UnitOfWorkModule
  • FreeKitModule

AddModulesFromMap / MapModules

builder.Services.AddModulesFromMap(E.Modules, builder.Configuration);
app.MapModules();

作用:

  • 批量注册模块
  • RoutePrefix 映射模块路由

Program.cs 推荐顺序

var builder = WebApplication.CreateBuilder(args);

builder.UseFreeKit(
moduleTypeMap: E.Modules,
extraAssemblies: new[] { typeof(Program).Assembly });

var app = builder.Build();

app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCors("CorsPolicy");
app.MapModules();
app.MapControllers();

app.Run();

如果你关心底层能力本身注册了哪些对象,看 Infrastructure