Implemented distributed caching #14
@@ -15,6 +15,8 @@ builder.Services.AddScoped<ActiveUserFilter>();
|
|||||||
|
|
||||||
builder.Services.AddEndpoints(Assembly.GetExecutingAssembly());
|
builder.Services.AddEndpoints(Assembly.GetExecutingAssembly());
|
||||||
builder.Services.AddApiServices(builder.Configuration);
|
builder.Services.AddApiServices(builder.Configuration);
|
||||||
|
builder.Services.AddRegisterServices(builder.Configuration);
|
||||||
|
builder.Services.AddEndpointAndServiceCaching(builder.Configuration);
|
||||||
|
|
||||||
builder.Services.AddMediator();
|
builder.Services.AddMediator();
|
||||||
builder.Services.AddSecurityApiSdk(builder.Configuration);
|
builder.Services.AddSecurityApiSdk(builder.Configuration);
|
||||||
@@ -27,7 +29,6 @@ builder.Services.AddQuartzScheduler(DefaultSchedulerName, builder.Configuration)
|
|||||||
builder.Services.AddEmailServices(builder.Configuration);
|
builder.Services.AddEmailServices(builder.Configuration);
|
||||||
builder.Services.AddHashServices(builder.Configuration);
|
builder.Services.AddHashServices(builder.Configuration);
|
||||||
builder.Services.AddGarageS3(builder.Configuration);
|
builder.Services.AddGarageS3(builder.Configuration);
|
||||||
builder.Services.AddRegisterServices();
|
|
||||||
|
|
||||||
builder.Services.AddHttpClient();
|
builder.Services.AddHttpClient();
|
||||||
builder.Services.AddDataProtectionDatabase(builder.Configuration);
|
builder.Services.AddDataProtectionDatabase(builder.Configuration);
|
||||||
@@ -98,12 +99,12 @@ app.UseHsts();
|
|||||||
app.UseHttpsRedirection();
|
app.UseHttpsRedirection();
|
||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
app.UseOutputCache();
|
||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
ApiVersionSet versionSet = app.NewApiVersionSet("v1")
|
ApiVersionSet versionSet = app.NewApiVersionSet("v1")
|
||||||
.HasApiVersion(new ApiVersion(1))
|
.HasApiVersion(new ApiVersion(1))
|
||||||
.HasApiVersion(new ApiVersion(2))
|
|
||||||
.ReportApiVersions()
|
.ReportApiVersions()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,21 @@ namespace PostFundManagement.Application.Extensions;
|
|||||||
|
|
||||||
public static class Api
|
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) =>
|
public static void ConfigureCookieOidcSameSiteSupport(this IServiceCollection services) =>
|
||||||
services.Configure<CookiePolicyOptions>(options =>
|
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;
|
using PostFundManagement.Domain.Abstractions;
|
||||||
|
|
||||||
namespace PostFundManagement.Application.Extensions;
|
namespace PostFundManagement.Application.Extensions;
|
||||||
|
|
||||||
public static class General
|
public static class General
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddRegisterServices(this IServiceCollection services)
|
public static IServiceCollection AddRegisterServices(this IServiceCollection services, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
var serviceType = typeof(IService);
|
var serviceType = typeof(IService);
|
||||||
|
|
||||||
@@ -14,6 +15,15 @@ public static class General
|
|||||||
|
|
||||||
foreach (var sharedImplementation in sharedImplementations) services.AddScoped(sharedImplementation);
|
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;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ namespace PostFundManagement.Domain.Extensions;
|
|||||||
|
|
||||||
public static class Constants
|
public static class Constants
|
||||||
{
|
{
|
||||||
|
public const string CachePolicy = "DefaultCachePolicy";
|
||||||
|
|
||||||
public const string EmailtemKey = "UserEmail";
|
public const string EmailtemKey = "UserEmail";
|
||||||
|
|
||||||
public const string UserIdItemKey = "UserId";
|
public const string UserIdItemKey = "UserId";
|
||||||
|
|||||||
@@ -12,6 +12,9 @@
|
|||||||
<!-- Transformation -->
|
<!-- Transformation -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Humanizer" Version="3.0.10" />
|
<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" />
|
<Using Include="Humanizer" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -64,3 +64,6 @@ services:
|
|||||||
- Email__Credentials__Username=${EMAIL_CREDENTIALS_USERNAME}
|
- Email__Credentials__Username=${EMAIL_CREDENTIALS_USERNAME}
|
||||||
- Email__SmtpServer=${EMAIL_SMTP_SERVER}
|
- 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