diff --git a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
index 37396d3ec..8a832d0c2 100644
--- a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
+++ b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
@@ -5,7 +5,8 @@
Microsoft.eShopOnContainers.BuildingBlocks.EventBus
-
+
+
\ No newline at end of file
diff --git a/src/BuildingBlocks/EventBus/EventBus/EventBusServiceCollectionExtensions.cs b/src/BuildingBlocks/EventBus/EventBus/EventBusServiceCollectionExtensions.cs
new file mode 100644
index 000000000..d5061e014
--- /dev/null
+++ b/src/BuildingBlocks/EventBus/EventBus/EventBusServiceCollectionExtensions.cs
@@ -0,0 +1,23 @@
+using Microsoft.Extensions.DependencyInjection;
+using System.Reflection;
+
+namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBus
+{
+ public static class EventBusServiceCollectionExtensions
+ {
+ public static IServiceCollection AddEventHandlers(this IServiceCollection services, System.Reflection.Assembly assembly)
+ {
+ foreach (var typeInfo in assembly.GetTypes()
+ .Where(t => typeof(IIntegrationEventHandler).IsAssignableFrom(t)
+ && t.IsClass
+ && !t.IsAbstract
+ && !t.ContainsGenericParameters
+ && t.GetConstructors(BindingFlags.Public | BindingFlags.Instance)?.Length != 0))
+ {
+ services.AddScoped(typeInfo);
+ }
+
+ return services;
+ }
+ }
+}
diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs
index 9b45eb996..224afd78b 100644
--- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs
+++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs
@@ -3,26 +3,24 @@
public class EventBusRabbitMQ : IEventBus, IDisposable
{
const string BROKER_NAME = "eshop_event_bus";
- const string AUTOFAC_SCOPE_NAME = "eshop_event_bus";
-
private readonly IRabbitMQPersistentConnection _persistentConnection;
private readonly ILogger _logger;
private readonly IEventBusSubscriptionsManager _subsManager;
- private readonly ILifetimeScope _autofac;
+ private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly int _retryCount;
private IModel _consumerChannel;
private string _queueName;
public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger logger,
- ILifetimeScope autofac, IEventBusSubscriptionsManager subsManager, string queueName = null, int retryCount = 5)
+ IServiceScopeFactory serviceScopeFactory, IEventBusSubscriptionsManager subsManager, string queueName = null, int retryCount = 5)
{
_persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
_queueName = queueName;
_consumerChannel = CreateConsumerChannel();
- _autofac = autofac;
+ _serviceScopeFactory = serviceScopeFactory;
_retryCount = retryCount;
_subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
}
@@ -244,14 +242,14 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
if (_subsManager.HasSubscriptionsForEvent(eventName))
{
- using (var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME))
+ using (var scope = _serviceScopeFactory.CreateScope())
{
var subscriptions = _subsManager.GetHandlersForEvent(eventName);
foreach (var subscription in subscriptions)
{
if (subscription.IsDynamic)
{
- var handler = scope.ResolveOptional(subscription.HandlerType) as IDynamicIntegrationEventHandler;
+ var handler = scope.ServiceProvider.GetService(subscription.HandlerType) as IDynamicIntegrationEventHandler;
if (handler == null) continue;
using dynamic eventData = JsonDocument.Parse(message);
await Task.Yield();
@@ -259,7 +257,7 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
}
else
{
- var handler = scope.ResolveOptional(subscription.HandlerType);
+ var handler = scope.ServiceProvider.GetService(subscription.HandlerType);
if (handler == null) continue;
var eventType = _subsManager.GetEventTypeByName(eventName);
var integrationEvent = JsonSerializer.Deserialize(message, eventType, new JsonSerializerOptions() { PropertyNameCaseInsensitive= true});
diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
index b6b23483c..d475d1a41 100644
--- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
+++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
@@ -6,7 +6,6 @@
-
diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/GlobalUsings.cs b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/GlobalUsings.cs
index 6fa5f0bf4..54874358c 100644
--- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/GlobalUsings.cs
+++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/GlobalUsings.cs
@@ -7,7 +7,7 @@ global using RabbitMQ.Client.Exceptions;
global using System;
global using System.IO;
global using System.Net.Sockets;
-global using Autofac;
+global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.cs b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.cs
index c53c56b98..0e2d72272 100644
--- a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.cs
+++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.cs
@@ -5,21 +5,20 @@ public class EventBusServiceBus : IEventBus, IDisposable
private readonly IServiceBusPersisterConnection _serviceBusPersisterConnection;
private readonly ILogger _logger;
private readonly IEventBusSubscriptionsManager _subsManager;
- private readonly ILifetimeScope _autofac;
+ private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly string _topicName = "eshop_event_bus";
private readonly string _subscriptionName;
private ServiceBusSender _sender;
private ServiceBusProcessor _processor;
- private readonly string AUTOFAC_SCOPE_NAME = "eshop_event_bus";
private const string INTEGRATION_EVENT_SUFFIX = "IntegrationEvent";
public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection,
- ILogger logger, IEventBusSubscriptionsManager subsManager, ILifetimeScope autofac, string subscriptionClientName)
+ ILogger logger, IEventBusSubscriptionsManager subsManager, IServiceScopeFactory serviceScopeFactory, string subscriptionClientName)
{
_serviceBusPersisterConnection = serviceBusPersisterConnection;
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
- _autofac = autofac;
+ _serviceScopeFactory = serviceScopeFactory;
_subscriptionName = subscriptionClientName;
_sender = _serviceBusPersisterConnection.TopicClient.CreateSender(_topicName);
ServiceBusProcessorOptions options = new ServiceBusProcessorOptions { MaxConcurrentCalls = 10, AutoCompleteMessages = false };
@@ -155,14 +154,14 @@ public class EventBusServiceBus : IEventBus, IDisposable
var processed = false;
if (_subsManager.HasSubscriptionsForEvent(eventName))
{
- using (var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME))
+ using (var scope = _serviceScopeFactory.CreateScope())
{
var subscriptions = _subsManager.GetHandlersForEvent(eventName);
foreach (var subscription in subscriptions)
{
if (subscription.IsDynamic)
{
- var handler = scope.ResolveOptional(subscription.HandlerType) as IDynamicIntegrationEventHandler;
+ var handler = scope.ServiceProvider.GetService(subscription.HandlerType) as IDynamicIntegrationEventHandler;
if (handler == null) continue;
using dynamic eventData = JsonDocument.Parse(message);
@@ -170,7 +169,7 @@ public class EventBusServiceBus : IEventBus, IDisposable
}
else
{
- var handler = scope.ResolveOptional(subscription.HandlerType);
+ var handler = scope.ServiceProvider.GetService(subscription.HandlerType);
if (handler == null) continue;
var eventType = _subsManager.GetEventTypeByName(eventName);
var integrationEvent = JsonSerializer.Deserialize(message, eventType);
diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
index e725de1c7..afa149286 100644
--- a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
+++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
@@ -6,7 +6,6 @@
-
diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/GlobalUsings.cs b/src/BuildingBlocks/EventBus/EventBusServiceBus/GlobalUsings.cs
index b0465794f..c539e1dba 100644
--- a/src/BuildingBlocks/EventBus/EventBusServiceBus/GlobalUsings.cs
+++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/GlobalUsings.cs
@@ -6,7 +6,7 @@ global using System.Linq;
global using System.Text.Json.Serialization;
global using System.Threading.Tasks;
global using System;
-global using Autofac;
+global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
global using Microsoft.Extensions.Logging;
global using System.Text;
diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj
index ebb224824..1373db46c 100644
--- a/src/Services/Basket/Basket.API/Basket.API.csproj
+++ b/src/Services/Basket/Basket.API/Basket.API.csproj
@@ -20,7 +20,6 @@
-
diff --git a/src/Services/Basket/Basket.API/GlobalUsings.cs b/src/Services/Basket/Basket.API/GlobalUsings.cs
index 75f7a878e..904f97517 100644
--- a/src/Services/Basket/Basket.API/GlobalUsings.cs
+++ b/src/Services/Basket/Basket.API/GlobalUsings.cs
@@ -1,5 +1,3 @@
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
global using Azure.Core;
global using Azure.Identity;
global using Basket.API.Infrastructure.ActionResults;
diff --git a/src/Services/Basket/Basket.API/Startup.cs b/src/Services/Basket/Basket.API/Startup.cs
index 082560048..c3c41eb1b 100644
--- a/src/Services/Basket/Basket.API/Startup.cs
+++ b/src/Services/Basket/Basket.API/Startup.cs
@@ -9,7 +9,7 @@ public class Startup
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
- public virtual IServiceProvider ConfigureServices(IServiceCollection services)
+ public virtual void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
@@ -135,11 +135,6 @@ public class Startup
services.AddTransient();
services.AddOptions();
-
- var container = new ContainerBuilder();
- container.Populate(services);
-
- return new AutofacServiceProvider(container.Build());
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -240,13 +235,13 @@ public class Startup
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
else
@@ -255,7 +250,7 @@ public class Startup
{
var subscriptionClientName = Configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -265,7 +260,7 @@ public class Startup
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs b/src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs
index b19d825cd..6c6b08125 100644
--- a/src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs
+++ b/src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs
@@ -8,14 +8,14 @@ namespace Basket.FunctionalTests.Base
{
}
- public override IServiceProvider ConfigureServices(IServiceCollection services)
+ public override void ConfigureServices(IServiceCollection services)
{
// Added to avoid the Authorize data annotation in test environment.
// Property "SuppressCheckForUnhandledSecurityMetadata" in appsettings.json
services.Configure(Configuration);
- return base.ConfigureServices(services);
+ base.ConfigureServices(services);
}
-
+
protected override void ConfigureAuth(IApplicationBuilder app)
{
if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant())
diff --git a/src/Services/Catalog/Catalog.API/GlobalUsings.cs b/src/Services/Catalog/Catalog.API/GlobalUsings.cs
index 48641cc80..18617a8e5 100644
--- a/src/Services/Catalog/Catalog.API/GlobalUsings.cs
+++ b/src/Services/Catalog/Catalog.API/GlobalUsings.cs
@@ -1,7 +1,5 @@
global using Azure.Core;
global using Azure.Identity;
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
global using Microsoft.eShopOnContainers.Services.Catalog.API.Extensions;
global using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure.ActionResults;
global using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure.Exceptions;
diff --git a/src/Services/Catalog/Catalog.API/Startup.cs b/src/Services/Catalog/Catalog.API/Startup.cs
index f7b46cb6f..8a3aa2fd7 100644
--- a/src/Services/Catalog/Catalog.API/Startup.cs
+++ b/src/Services/Catalog/Catalog.API/Startup.cs
@@ -9,7 +9,7 @@ public class Startup
public IConfiguration Configuration { get; }
- public IServiceProvider ConfigureServices(IServiceCollection services)
+ public void ConfigureServices(IServiceCollection services)
{
services.AddAppInsight(Configuration)
.AddGrpc().Services
@@ -20,11 +20,6 @@ public class Startup
.AddEventBus(Configuration)
.AddSwagger(Configuration)
.AddCustomHealthCheck(Configuration);
-
- var container = new ContainerBuilder();
- container.Populate(services);
-
- return new AutofacServiceProvider(container.Build());
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
@@ -294,13 +289,13 @@ public static class CustomExtensionMethods
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
@@ -310,7 +305,7 @@ public static class CustomExtensionMethods
{
var subscriptionClientName = configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -320,7 +315,7 @@ public static class CustomExtensionMethods
retryCount = int.Parse(configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Identity/Identity.API/GlobalUsings.cs b/src/Services/Identity/Identity.API/GlobalUsings.cs
index bfbb354db..988128a5b 100644
--- a/src/Services/Identity/Identity.API/GlobalUsings.cs
+++ b/src/Services/Identity/Identity.API/GlobalUsings.cs
@@ -1,7 +1,5 @@
global using Microsoft.eShopOnContainers.Services.Identity.API.Extensions;
global using System.IO.Compression;
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
global using Azure.Core;
global using Azure.Identity;
global using HealthChecks.UI.Client;
diff --git a/src/Services/Identity/Identity.API/Identity.API.csproj b/src/Services/Identity/Identity.API/Identity.API.csproj
index 0398ccb4b..2ac713767 100644
--- a/src/Services/Identity/Identity.API/Identity.API.csproj
+++ b/src/Services/Identity/Identity.API/Identity.API.csproj
@@ -17,7 +17,6 @@
-
diff --git a/src/Services/Identity/Identity.API/Startup.cs b/src/Services/Identity/Identity.API/Startup.cs
index 43662acdd..b2a85e308 100644
--- a/src/Services/Identity/Identity.API/Startup.cs
+++ b/src/Services/Identity/Identity.API/Startup.cs
@@ -12,7 +12,7 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
- public IServiceProvider ConfigureServices(IServiceCollection services)
+ public void ConfigureServices(IServiceCollection services)
{
RegisterAppInsights(services);
@@ -88,11 +88,6 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API
services.AddControllers();
services.AddControllersWithViews();
services.AddRazorPages();
-
- var container = new ContainerBuilder();
- container.Populate(services);
-
- return new AutofacServiceProvider(container.Build());
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
diff --git a/src/Services/Ordering/Ordering.API/GlobalUsings.cs b/src/Services/Ordering/Ordering.API/GlobalUsings.cs
index 13c90c84a..07c0a0264 100644
--- a/src/Services/Ordering/Ordering.API/GlobalUsings.cs
+++ b/src/Services/Ordering/Ordering.API/GlobalUsings.cs
@@ -1,7 +1,5 @@
global using ApiModels = Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models;
global using AppCommand = Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands;
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
global using Azure.Core;
global using Azure.Identity;
global using Dapper;
@@ -36,7 +34,6 @@ global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Comma
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderStartedEvent;
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderStockConfirmed;
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling;
-global using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules;
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events;
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents;
global using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models;
diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/ApplicationModule.cs b/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/ApplicationModule.cs
deleted file mode 100644
index 1ab775042..000000000
--- a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/ApplicationModule.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules;
-
-public class ApplicationModule
- : Autofac.Module
-{
-
- public string QueriesConnectionString { get; }
-
- public ApplicationModule(string qconstr)
- {
- QueriesConnectionString = qconstr;
-
- }
-
- protected override void Load(ContainerBuilder builder)
- {
-
- builder.Register(c => new OrderQueries(QueriesConnectionString))
- .As()
- .InstancePerLifetimeScope();
-
- builder.RegisterType()
- .As()
- .InstancePerLifetimeScope();
-
- builder.RegisterType()
- .As()
- .InstancePerLifetimeScope();
-
- builder.RegisterType()
- .As()
- .InstancePerLifetimeScope();
-
- builder.RegisterAssemblyTypes(typeof(CreateOrderCommandHandler).GetTypeInfo().Assembly)
- .AsClosedTypesOf(typeof(IIntegrationEventHandler<>));
-
- }
-}
diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs b/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs
deleted file mode 100644
index 2d59f1730..000000000
--- a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules;
-
-public class MediatorModule : Autofac.Module
-{
- protected override void Load(ContainerBuilder builder)
- {
- builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly)
- .AsImplementedInterfaces();
-
- // Register all the Command classes (they implement IRequestHandler) in assembly holding the Commands
- builder.RegisterAssemblyTypes(typeof(CreateOrderCommand).GetTypeInfo().Assembly)
- .AsClosedTypesOf(typeof(IRequestHandler<,>));
-
- // Register the DomainEventHandler classes (they implement INotificationHandler<>) in assembly holding the Domain Events
- builder.RegisterAssemblyTypes(typeof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler).GetTypeInfo().Assembly)
- .AsClosedTypesOf(typeof(INotificationHandler<>));
-
- // Register the Command's Validators (Validators based on FluentValidation library)
- builder
- .RegisterAssemblyTypes(typeof(CreateOrderCommandValidator).GetTypeInfo().Assembly)
- .Where(t => t.IsClosedTypeOf(typeof(IValidator<>)))
- .AsImplementedInterfaces();
-
-
- builder.Register(context =>
- {
- var componentContext = context.Resolve();
- return t => { object o; return componentContext.TryResolve(t, out o) ? o : null; };
- });
-
- builder.RegisterGeneric(typeof(LoggingBehavior<,>)).As(typeof(IPipelineBehavior<,>));
- builder.RegisterGeneric(typeof(ValidatorBehavior<,>)).As(typeof(IPipelineBehavior<,>));
- builder.RegisterGeneric(typeof(TransactionBehaviour<,>)).As(typeof(IPipelineBehavior<,>));
-
- }
-}
diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj
index 5b011d037..c92b59071 100644
--- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj
+++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj
@@ -40,7 +40,6 @@
-
diff --git a/src/Services/Ordering/Ordering.API/Startup.cs b/src/Services/Ordering/Ordering.API/Startup.cs
index 501a55361..961cb866e 100644
--- a/src/Services/Ordering/Ordering.API/Startup.cs
+++ b/src/Services/Ordering/Ordering.API/Startup.cs
@@ -9,7 +9,7 @@ public class Startup
public IConfiguration Configuration { get; }
- public virtual IServiceProvider ConfigureServices(IServiceCollection services)
+ public virtual void ConfigureServices(IServiceCollection services)
{
services
.AddGrpc(options =>
@@ -25,16 +25,13 @@ public class Startup
.AddCustomIntegrations(Configuration)
.AddCustomConfiguration(Configuration)
.AddEventBus(Configuration)
- .AddCustomAuthentication(Configuration);
- //configure autofac
-
- var container = new ContainerBuilder();
- container.Populate(services);
-
- container.RegisterModule(new MediatorModule());
- container.RegisterModule(new ApplicationModule(Configuration["ConnectionString"]));
-
- return new AutofacServiceProvider(container.Build());
+ .AddCustomAuthentication(Configuration)
+ .AddScoped(sp => new OrderQueries(Configuration["ConnectionString"]))
+ .AddScoped()
+ .AddScoped()
+ .AddScoped()
+ .AddEventHandlers(typeof(CreateOrderCommandHandler).GetTypeInfo().Assembly)
+ .AddMediatR(Assembly.GetExecutingAssembly());
}
@@ -332,13 +329,13 @@ static class CustomExtensionsMethods
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
else
@@ -347,7 +344,7 @@ static class CustomExtensionsMethods
{
var subscriptionClientName = configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -357,7 +354,7 @@ static class CustomExtensionsMethods
retryCount = int.Parse(configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
index b7164734e..0e34fc73b 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
@@ -1,5 +1,4 @@
-using Autofac;
-using Azure.Messaging.ServiceBus;
+using Azure.Messaging.ServiceBus;
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
@@ -61,12 +60,12 @@ namespace Ordering.BackgroundTasks.Extensions
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = configuration["SubscriptionClientName"];
- return new EventBusServiceBus(serviceBusPersisterConnection, logger, eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ return new EventBusServiceBus(serviceBusPersisterConnection, logger, eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
else
@@ -104,7 +103,7 @@ namespace Ordering.BackgroundTasks.Extensions
services.AddSingleton(sp =>
{
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -115,7 +114,7 @@ namespace Ordering.BackgroundTasks.Extensions
retryCount = int.Parse(configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
index 617ccda32..7a223d69f 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
@@ -12,8 +12,6 @@
-
-
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
index ab30ba2d9..9d5bc3f32 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
@@ -1,4 +1,3 @@
-using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
@@ -19,7 +18,6 @@ namespace Ordering.BackgroundTasks
public static IHost CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
- .UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup())
.ConfigureAppConfiguration((host, builder) =>
{
diff --git a/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs b/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs
index 7367042de..e890044c3 100644
--- a/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs
+++ b/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs
@@ -6,12 +6,12 @@ public class OrderingTestsStartup : Startup
{
}
- public override IServiceProvider ConfigureServices(IServiceCollection services)
+ public override void ConfigureServices(IServiceCollection services)
{
// Added to avoid the Authorize data annotation in test environment.
// Property "SuppressCheckForUnhandledSecurityMetadata" in appsettings.json
services.Configure(Configuration);
- return base.ConfigureServices(services);
+ base.ConfigureServices(services);
}
protected override void ConfigureAuth(IApplicationBuilder app)
{
diff --git a/src/Services/Ordering/Ordering.SignalrHub/AutofacModules/ApplicationModule.cs b/src/Services/Ordering/Ordering.SignalrHub/AutofacModules/ApplicationModule.cs
deleted file mode 100644
index 9d28154ea..000000000
--- a/src/Services/Ordering/Ordering.SignalrHub/AutofacModules/ApplicationModule.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.AutofacModules;
-
-public class ApplicationModule
- : Autofac.Module
-{
-
- public string QueriesConnectionString { get; }
-
- public ApplicationModule()
- {
- }
-
- protected override void Load(ContainerBuilder builder)
- {
-
- builder.RegisterAssemblyTypes(typeof(OrderStatusChangedToAwaitingValidationIntegrationEvent).GetTypeInfo().Assembly)
- .AsClosedTypesOf(typeof(IIntegrationEventHandler<>));
-
- }
-}
diff --git a/src/Services/Ordering/Ordering.SignalrHub/GlobalUsings.cs b/src/Services/Ordering/Ordering.SignalrHub/GlobalUsings.cs
index 5a5a12391..2784a4799 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/GlobalUsings.cs
+++ b/src/Services/Ordering/Ordering.SignalrHub/GlobalUsings.cs
@@ -1,6 +1,4 @@
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
-global using HealthChecks.UI.Client;
+global using HealthChecks.UI.Client;
global using Microsoft.AspNetCore.Authentication.JwtBearer;
global using Microsoft.AspNetCore.Authorization;
global using Microsoft.AspNetCore.Builder;
@@ -20,7 +18,6 @@ global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Diagnostics.HealthChecks;
global using Microsoft.Extensions.Logging;
-global using Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.AutofacModules;
global using Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.IntegrationEvents.EventHandling;
global using Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.IntegrationEvents.Events;
global using Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.IntegrationEvents;
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
index 9b9579855..ea0b4a58f 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
+++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
@@ -15,7 +15,6 @@
-
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Startup.cs b/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
index b57f4477e..e68406e55 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
+++ b/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
@@ -11,7 +11,7 @@ public class Startup
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
- public IServiceProvider ConfigureServices(IServiceCollection services)
+ public void ConfigureServices(IServiceCollection services)
{
services
.AddCustomHealthCheck(Configuration)
@@ -86,12 +86,7 @@ public class Startup
services.AddOptions();
- //configure autofac
- var container = new ContainerBuilder();
- container.RegisterModule(new ApplicationModule());
- container.Populate(services);
-
- return new AutofacServiceProvider(container.Build());
+ services.AddEventHandlers(typeof(OrderStatusChangedToAwaitingValidationIntegrationEvent).GetTypeInfo().Assembly);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -185,13 +180,13 @@ public class Startup
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
else
@@ -200,7 +195,7 @@ public class Startup
{
var subscriptionClientName = Configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -210,7 +205,7 @@ public class Startup
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Payment/Payment.API/GlobalUsings.cs b/src/Services/Payment/Payment.API/GlobalUsings.cs
index e87eb53bb..5d83c1f23 100644
--- a/src/Services/Payment/Payment.API/GlobalUsings.cs
+++ b/src/Services/Payment/Payment.API/GlobalUsings.cs
@@ -1,6 +1,4 @@
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
-global using Azure.Core;
+global using Azure.Core;
global using Azure.Identity;
global using HealthChecks.UI.Client;
global using Microsoft.AspNetCore.Diagnostics.HealthChecks;
diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj
index ad930772a..5d741b0ee 100644
--- a/src/Services/Payment/Payment.API/Payment.API.csproj
+++ b/src/Services/Payment/Payment.API/Payment.API.csproj
@@ -12,8 +12,7 @@
-
-
+
diff --git a/src/Services/Payment/Payment.API/Startup.cs b/src/Services/Payment/Payment.API/Startup.cs
index c880f2a75..3698a1a47 100644
--- a/src/Services/Payment/Payment.API/Startup.cs
+++ b/src/Services/Payment/Payment.API/Startup.cs
@@ -10,7 +10,7 @@ public class Startup
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
- public IServiceProvider ConfigureServices(IServiceCollection services)
+ public void ConfigureServices(IServiceCollection services)
{
services.AddCustomHealthCheck(Configuration);
services.Configure(Configuration);
@@ -59,10 +59,6 @@ public class Startup
}
RegisterEventBus(services);
-
- var container = new ContainerBuilder();
- container.Populate(services);
- return new AutofacServiceProvider(container.Build());
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -107,13 +103,13 @@ public class Startup
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
else
@@ -122,7 +118,7 @@ public class Startup
{
var subscriptionClientName = Configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -132,7 +128,7 @@ public class Startup
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Webhooks/Webhooks.API/GlobalUsings.cs b/src/Services/Webhooks/Webhooks.API/GlobalUsings.cs
index c575b7235..e45a004ca 100644
--- a/src/Services/Webhooks/Webhooks.API/GlobalUsings.cs
+++ b/src/Services/Webhooks/Webhooks.API/GlobalUsings.cs
@@ -1,6 +1,4 @@
-global using Autofac.Extensions.DependencyInjection;
-global using Autofac;
-global using Devspaces.Support;
+global using Devspaces.Support;
global using HealthChecks.UI.Client;
global using Microsoft.AspNetCore.Authentication.JwtBearer;
global using Microsoft.AspNetCore.Authorization;
diff --git a/src/Services/Webhooks/Webhooks.API/Startup.cs b/src/Services/Webhooks/Webhooks.API/Startup.cs
index 256941efa..98118ceb5 100644
--- a/src/Services/Webhooks/Webhooks.API/Startup.cs
+++ b/src/Services/Webhooks/Webhooks.API/Startup.cs
@@ -9,7 +9,7 @@ public class Startup
}
- public IServiceProvider ConfigureServices(IServiceCollection services)
+ public void ConfigureServices(IServiceCollection services)
{
services
.AddAppInsight(Configuration)
@@ -27,10 +27,6 @@ public class Startup
.AddTransient()
.AddTransient()
.AddTransient();
-
- var container = new ContainerBuilder();
- container.Populate(services);
- return new AutofacServiceProvider(container.Build());
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
@@ -175,13 +171,13 @@ static class CustomExtensionMethods
services.AddSingleton(sp =>
{
var serviceBusPersisterConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
+ eventBusSubcriptionsManager, serviceScopeFactory, subscriptionName);
});
}
@@ -191,7 +187,7 @@ static class CustomExtensionMethods
{
var subscriptionClientName = configuration["SubscriptionClientName"];
var rabbitMQPersistentConnection = sp.GetRequiredService();
- var iLifetimeScope = sp.GetRequiredService();
+ var serviceScopeFactory = sp.GetRequiredService();
var logger = sp.GetRequiredService>();
var eventBusSubcriptionsManager = sp.GetRequiredService();
@@ -201,7 +197,7 @@ static class CustomExtensionMethods
retryCount = int.Parse(configuration["EventBusRetryCount"]);
}
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
+ return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, serviceScopeFactory, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
});
}
diff --git a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
index 063a01cf3..fb086fbc7 100644
--- a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
+++ b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
@@ -12,7 +12,6 @@
-
diff --git a/src/Web/WebMVC/Services/OrderingService.cs b/src/Web/WebMVC/Services/OrderingService.cs
index f1422c51f..074f33353 100644
--- a/src/Web/WebMVC/Services/OrderingService.cs
+++ b/src/Web/WebMVC/Services/OrderingService.cs
@@ -36,7 +36,7 @@ public class OrderingService : IOrderingService
var uri = API.Order.GetAllMyOrders(_remoteServiceBaseUrl);
var responseString = await _httpClient.GetStringAsync(uri);
-
+
var response = JsonSerializer.Deserialize>(responseString, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
diff --git a/src/docker-compose.override.yml b/src/docker-compose.override.yml
index 8251636e9..0c11671d5 100644
--- a/src/docker-compose.override.yml
+++ b/src/docker-compose.override.yml
@@ -20,7 +20,7 @@ services:
ports:
- "5433:1433"
volumes:
- - eshop-sqldata:/var/opt/mssql
+ - eshop-sqldata:/var/opt/mssql/data
nosqldata:
ports: