ASP.NET 具有 EventFlow 配置的核心 2

ASP.NET Core 2 with EventFlow configuration

EventFlow 关于如何在基于 dotnet core 1 的 dotnetcore 上进行配置的示例非常有限,并且在 dotnet core 2 中发生了一些变化

有没有办法在没有 Autofac 的情况下使用 EventFlow 配置?

这里有讨论,最后的评论和我在这里问的是同一件事,但没有答案

https://github.com/eventflow/EventFlow/issues/158

基本上我想找到一种方法来使用 DI 中的构建来做一些事情

services.AddEventFlowOptions.New...

var resolver = EventFlowOptions.New.UseDotnetCoreServices(services)...

或者...你们还用过什么?

我用过这个,效果很好。它看起来像您将服务传递到 EventFlow 的 IoC AuotFac 中,它围绕着它。

如您所见,您像往常一样使用已知的 ASP.NET 核心 API,您以相同的方式注入,而无需更改您的控制器等

我唯一改变的是 void ConfigureServicesIServiceProvider ConfigureServices - 我不确定这是否真的有影响,但它有效。

您将需要这些包

  • EventFlow.Aspnetcore.Middlewares;
  • EventFlow.AspNetCore.Extensions;
  • EventFlow.Autofac.Extensions;

Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        var containerBuilder = new ContainerBuilder();

        var container = EventFlowOptions.New
            .UseAutofacContainerBuilder(containerBuilder)
            .AddDefaults(EventFlowTestHelpers.Assembly)
            .AddAspNetCoreMetadataProviders();


        containerBuilder.Populate(services);

        return new AutofacServiceProvider(containerBuilder.Build());
    }

并且需要使用包提供的一些中间件

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseMiddleware<CommandPublishMiddleware>();
        app.UseMvcWithDefaultRoute();//or whatever you are doing
    }

根据提供的启动设置,我创建了一个 simple web api solution,它与带有 .net core 2.2 的 EventFlow 集成。它使用来自源

的相同commands/events

希望对您有所帮助!