Implemented distributed caching #14
@@ -15,6 +15,8 @@ builder.Services.AddScoped<ActiveUserFilter>();
|
||||
|
||||
builder.Services.AddEndpoints(Assembly.GetExecutingAssembly());
|
||||
builder.Services.AddApiServices(builder.Configuration);
|
||||
builder.Services.AddRegisterServices(builder.Configuration);
|
||||
builder.Services.AddEndpointAndServiceCaching(builder.Configuration);
|
||||
|
||||
builder.Services.AddMediator();
|
||||
builder.Services.AddSecurityApiSdk(builder.Configuration);
|
||||
@@ -27,7 +29,6 @@ builder.Services.AddQuartzScheduler(DefaultSchedulerName, builder.Configuration)
|
||||
builder.Services.AddEmailServices(builder.Configuration);
|
||||
builder.Services.AddHashServices(builder.Configuration);
|
||||
builder.Services.AddGarageS3(builder.Configuration);
|
||||
builder.Services.AddRegisterServices();
|
||||
|
||||
builder.Services.AddHttpClient();
|
||||
builder.Services.AddDataProtectionDatabase(builder.Configuration);
|
||||
@@ -98,12 +99,12 @@ app.UseHsts();
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseRouting();
|
||||
app.UseOutputCache();
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
ApiVersionSet versionSet = app.NewApiVersionSet("v1")
|
||||
.HasApiVersion(new ApiVersion(1))
|
||||
.HasApiVersion(new ApiVersion(2))
|
||||
.ReportApiVersions()
|
||||
.Build();
|
||||
|
||||
@@ -111,7 +112,7 @@ var versionGroups = new Dictionary<int, RouteGroupBuilder>
|
||||
{
|
||||
{
|
||||
1, app.MapGroup("v{version:apiVersion}").WithApiVersionSet(versionSet)
|
||||
.RequireAuthorization("ApiScope").AddEndpointFilter<ActiveUserFilter>()
|
||||
.RequireAuthorization("ApiScope").AddEndpointFilter<ActiveUserFilter>()
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -6,6 +6,21 @@ namespace PostFundManagement.Application.Extensions;
|
||||
|
||||
public static class Api
|
||||
{
|
||||
public static IServiceCollection AddEndpointAndServiceCaching(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddStackExchangeRedisOutputCache(options =>
|
||||
{
|
||||
options.Configuration = configuration.GetConnectionString("Redis");
|
||||
options.ConfigurationOptions?.ClientName = "PFM-API";
|
||||
options.InstanceName = "PFM-API_";
|
||||
});
|
||||
|
||||
services.AddOutputCache(options =>
|
||||
options.AddBasePolicy(builder => builder.Expire(TimeSpan.FromMinutes(2))));
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static void ConfigureCookieOidcSameSiteSupport(this IServiceCollection services) =>
|
||||
services.Configure<CookiePolicyOptions>(options =>
|
||||
{
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
using PostFundManagement.Application.Abstractions;
|
||||
using Microsoft.Extensions.Caching.Hybrid;
|
||||
using PostFundManagement.Application.Abstractions;
|
||||
using PostFundManagement.Domain.Abstractions;
|
||||
|
||||
namespace PostFundManagement.Application.Extensions;
|
||||
|
||||
public static class General
|
||||
{
|
||||
public static IServiceCollection AddRegisterServices(this IServiceCollection services)
|
||||
public static IServiceCollection AddRegisterServices(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
var serviceType = typeof(IService);
|
||||
|
||||
@@ -14,6 +15,15 @@ public static class General
|
||||
|
||||
foreach (var sharedImplementation in sharedImplementations) services.AddScoped(sharedImplementation);
|
||||
|
||||
services.AddStackExchangeRedisCache(options =>
|
||||
options.Configuration = configuration.GetConnectionString("Redis"));
|
||||
|
||||
services.AddHybridCache(options => options.DefaultEntryOptions = new HybridCacheEntryOptions
|
||||
{
|
||||
Expiration = TimeSpan.FromMinutes(2),
|
||||
LocalCacheExpiration = TimeSpan.FromMinutes(1)
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ namespace PostFundManagement.Domain.Extensions;
|
||||
|
||||
public static class Constants
|
||||
{
|
||||
public const string CachePolicy = "DefaultCachePolicy";
|
||||
|
||||
public const string EmailtemKey = "UserEmail";
|
||||
|
||||
public const string UserIdItemKey = "UserId";
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
<!-- Transformation -->
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Humanizer" Version="3.0.10" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OutputCaching.StackExchangeRedis" Version="10.0.11" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Hybrid" Version="10.9.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="10.0.11" />
|
||||
|
||||
<Using Include="Humanizer" />
|
||||
</ItemGroup>
|
||||
|
||||
+4
-1
@@ -63,4 +63,7 @@ services:
|
||||
- Email__Credentials__Password=${EMAIL_CREDENTIALS_PASSWORD}
|
||||
- Email__Credentials__Username=${EMAIL_CREDENTIALS_USERNAME}
|
||||
- Email__SmtpServer=${EMAIL_SMTP_SERVER}
|
||||
- Email__SmtpPort=${EMAIL_SMTP_PORT:-587}
|
||||
- Email__SmtpPort=${EMAIL_SMTP_PORT:-587}
|
||||
|
||||
# Redis overrides
|
||||
- ConnectionStrings__Redis=${REDIS_CONNECTION_STRING:-192.168.1.171:6379,ssl=false,abortConnect=false}
|
||||
Reference in New Issue
Block a user