You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 7中配置Brighter?求有效启动及控制器示例

在ASP.NET Core 7中配置Brighter的实操指南

一、核心NuGet包安装

先安装必备的Brighter相关包:

  • Paramore.Brighter.AspNetCore
  • Paramore.Brighter.Extensions.DependencyInjection

二、Program.cs启动配置示例

var builder = WebApplication.CreateBuilder(args);

// 注册Brighter服务
builder.Services.AddBrighter(options =>
{
    // 设置处理器生命周期为Scoped,适配ASP.NET Core请求生命周期
    options.HandlerLifetime = ServiceLifetime.Scoped;
})
// 扫描当前程序集内的命令处理器
.AddHandlersFromAssemblies(typeof(Program).Assembly)
// 使用内存Outbox,适合开发测试场景
.UseInMemoryOutbox();

// 添加MVC控制器支持
builder.Services.AddControllers();

var app = builder.Build();

// 中间件管道配置
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run();

三、基础命令与处理器实现

1. 定义命令

public class GreetingCommand : ICommand
{
    public string Name { get; set; }
    public string ResponseMessage { get; set; }
}

2. 实现同步命令处理器

public class GreetingCommandHandler : RequestHandler<GreetingCommand>
{
    public override GreetingCommand Handle(GreetingCommand command)
    {
        // 这里编写实际业务逻辑,比如数据持久化、第三方服务调用等
        command.ResponseMessage = $"Hello, {command.Name}!";
        return command;
    }
}

3. 实现异步命令处理器(可选)

public class AsyncGreetingCommandHandler : AsyncRequestHandler<GreetingCommand>
{
    public override async Task<GreetingCommand> HandleAsync(GreetingCommand command, CancellationToken cancellationToken = default)
    {
        await Task.Delay(100, cancellationToken);
        command.ResponseMessage = $"Async Hello, {command.Name}!";
        return command;
    }
}

四、Controller调用示例

[ApiController]
[Route("api/[controller]")]
public class GreetingController : ControllerBase
{
    private readonly IAmACommandProcessor _commandProcessor;

    // 构造函数注入命令处理器
    public GreetingController(IAmACommandProcessor commandProcessor)
    {
        _commandProcessor = commandProcessor;
    }

    [HttpPost]
    public async Task<IActionResult> SendGreeting([FromBody] GreetingCommand command)
    {
        await _commandProcessor.SendAsync(command);
        return Ok(command.ResponseMessage);
    }
}

五、关键配置说明

  • 若需使用持久化Outbox(如SQL Server),需安装对应扩展包(如Paramore.Brighter.Outbox.SqlServer),并将UseInMemoryOutbox()替换为UseSqlServerOutbox(builder.Configuration.GetConnectionString("DefaultConnection"))
  • 命令处理器需严格实现RequestHandler<T>或AsyncRequestHandler<T>接口,Brighter会自动扫描注册
  • 若命令/处理器不在当前程序集,需在AddHandlersFromAssemblies中手动指定目标程序集

内容的提问来源于stack exchange,提问作者Rosdi Kasim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:16:12