ASP.NET Core 2 с конфигурацией EventFlow
EventFlow имеет очень ограниченный пример того, как сконфигурировать на dotnetcore, который основан на ядре dotnet 1 и немного изменился, но в dotnet core 2
Есть ли способ использовать конфигурацию EventFlow без Autofac?
Здесь обсуждается и последние комментарии о том же, о чем я спрашиваю, но ответов нет
https://github.com/eventflow/EventFlow/issues/158
в основном я хочу найти способ использовать сборку в DI делать что-то вроде
services.AddEventFlowOptions.New...
или же
var resolver = EventFlowOptions.New.UseDotnetCoreServices(services)...
или... что-нибудь еще, что вы, ребята, использовали?
1 ответ
Я использовал это, и он работает нормально. На что это похоже, так это то, что вы передаете сервисы в IoC AuotFac EventFlow, и это оборачивается вокруг этого.
Как вы можете видеть, вы используете известный ASP.NET Core API как обычно, вы вводите то же самое без изменений в Contollers и т. Д.
Единственное, что я изменил, было void ConfigureServices
в IServiceProvider 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());
}
и вам нужно использовать некоторое MiddleWare, предоставляемое пакетом
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMiddleware<CommandPublishMiddleware>();
app.UseMvcWithDefaultRoute();//or whatever you are doing
}
Следуя предоставленной настройке запуска, я создал простое решение для веб-API, которое интегрируется с EventFlow с.net core 2.2. Он использует те же команды / события из источника
Надеюсь, это поможет!