From 2a963a1861c522b6a2376da95069e7c778064196 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 29 Nov 2024 14:08:07 +0100 Subject: [PATCH] =?UTF-8?q?feat(Web):=20Verteilter=20Sql=20Server-Cache=20?= =?UTF-8?q?hinzugef=C3=BCgt.=20=20-=20Bat-Datei=20erstellt,=20um=20Tabelle?= =?UTF-8?q?=20f=C3=BCr=20Cache=20zu=20erstellen.=20=20-=20Sql-Datei=20zum?= =?UTF-8?q?=20Erstellen=20einer=20Tabelle=20f=C3=BCr=20den=20Cache=20erste?= =?UTF-8?q?llt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Test/TestCacheController.cs | 35 +++++++++++++++++++ .../EnvelopeGenerator.Web.csproj | 7 ++++ EnvelopeGenerator.Web/Program.cs | 8 +++-- .../Scripts/create-sql-cache.bat | 2 ++ .../Scripts/create-sql-cache.sql | 23 ++++++++++++ 5 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 EnvelopeGenerator.Web/Controllers/Test/TestCacheController.cs create mode 100644 EnvelopeGenerator.Web/Scripts/create-sql-cache.bat create mode 100644 EnvelopeGenerator.Web/Scripts/create-sql-cache.sql diff --git a/EnvelopeGenerator.Web/Controllers/Test/TestCacheController.cs b/EnvelopeGenerator.Web/Controllers/Test/TestCacheController.cs new file mode 100644 index 00000000..114aab85 --- /dev/null +++ b/EnvelopeGenerator.Web/Controllers/Test/TestCacheController.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Caching.Distributed; + +namespace EnvelopeGenerator.Web.Controllers.Test +{ + [Route("api/[controller]")] + [ApiController] + public class TestCacheController : ControllerBase + { + private readonly IDistributedCache _cache; + + public TestCacheController(IDistributedCache cache) + { + _cache = cache; + } + + [HttpPost] + public async Task SetCacheAsync(string key, string value) + { + var options = new DistributedCacheEntryOptions() + .SetAbsoluteExpiration(TimeSpan.FromMinutes(5)); + + await _cache.SetStringAsync(key, value, options); + + return Ok(); + } + + [HttpGet] + public async Task GetCacheAsync(string key) + { + var value = await _cache.GetStringAsync(key); + return value is null ? BadRequest() : Ok(value); + } + } +} diff --git a/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj b/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj index cdf7bca1..2d02d4fe 100644 --- a/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj +++ b/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj @@ -57,6 +57,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -120,6 +121,12 @@ True \ + + PreserveNewest + + + PreserveNewest + diff --git a/EnvelopeGenerator.Web/Program.cs b/EnvelopeGenerator.Web/Program.cs index c2c2a23d..167ddaac 100644 --- a/EnvelopeGenerator.Web/Program.cs +++ b/EnvelopeGenerator.Web/Program.cs @@ -1,4 +1,3 @@ -using DigitalData.UserManager.Infrastructure.Repositories; using EnvelopeGenerator.Application.Contracts; using EnvelopeGenerator.Application.Services; using EnvelopeGenerator.Web.Services; @@ -9,7 +8,6 @@ using NLog.Web; using DigitalData.Core.API; using Microsoft.AspNetCore.Authentication.Cookies; using EnvelopeGenerator.Web.Models; -using DigitalData.Core.DTO; using System.Text.Encodings.Web; using Ganss.Xss; using Microsoft.Extensions.Options; @@ -81,6 +79,12 @@ try //AddEF Core dbcontext var connStr = config.GetConnectionString(Key.Default) ?? throw new InvalidOperationException("There is no default connection string in appsettings.json."); builder.Services.AddDbContext(options => options.UseSqlServer(connStr)); + builder.Services.AddDistributedSqlServerCache(options => + { + options.ConnectionString = connStr; + options.SchemaName = "dbo"; + options.TableName = "TBDD_CACHE"; + }); // Add envelope generator services builder.Services.AddEnvelopeGenerator(config); diff --git a/EnvelopeGenerator.Web/Scripts/create-sql-cache.bat b/EnvelopeGenerator.Web/Scripts/create-sql-cache.bat new file mode 100644 index 00000000..138f70e3 --- /dev/null +++ b/EnvelopeGenerator.Web/Scripts/create-sql-cache.bat @@ -0,0 +1,2 @@ +dotnet sql-cache create "CONNECTION_STRING" dbo TBDD_CACHE +pause \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Scripts/create-sql-cache.sql b/EnvelopeGenerator.Web/Scripts/create-sql-cache.sql new file mode 100644 index 00000000..77aa2261 --- /dev/null +++ b/EnvelopeGenerator.Web/Scripts/create-sql-cache.sql @@ -0,0 +1,23 @@ +USE [DD_ECM] +GO + +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE TABLE [dbo].[TBDD_CACHE]( + [Id] [nvarchar](449) NOT NULL, + [Value] [varbinary](max) NOT NULL, + [ExpiresAtTime] [datetimeoffset](7) NOT NULL, + [SlidingExpirationInSeconds] [bigint] NULL, + [AbsoluteExpiration] [datetimeoffset](7) NULL, +PRIMARY KEY CLUSTERED +( + [Id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +