Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 1
Info

Under omredigering i forbindelse med US-2877 udarbejdelse


Når vi taler om caching i DFDG skelner vi mellem:

...

Som udgangspunkt cacher vi kun statiske data.

Teknisk implementering

MemoryCache fra .NET framework (System.Runtime.Caching namespace) anvendes gennem nedarvning af den abstrakte klasse CachingDecoratorBase. 

namespace KC.AMS.BLL.Utility.Caching
public abstract class CachingDecoratorBase
{
protected TOut GetCached<TOut>(string key, Func<TOut> callback, int timeoutInMinutes = 5)
protected void RemoveItemFromCache(string key)
}

...

Hvad hvis de statiske data skal opdateres?

Miljøerne (Application Poolen) recycles hver aften, så i praksis vil en timeout større end 24 timer ikke have effekt.

RemoveItemFromCache fjerner et specifikt cache item.

Clearing af cache kan ske gennem skabelse af en enumerator over alle cached items, der således kan fjernes enkeltvis.   Mens denne fremgangsmåde ikke bør anvendes i produktionsmiljø, sker clearing af cache i testrammeværket for at undgå at cachede værdier fra en test påvirker de efterfølgende.  

Bemærk: I tilfælde af knaphed på memory-ressourcer, kan CLR vælge at rydde cachen med henblik på frigivelse af disse.

Anvendelse i DFDG

Praktisk anvendelse af CachingDecoratorBase i DFDG (5. marts 2018) kan findes i nedenstående klasser/metoder:

...

  • ExternalBookingSystemDALCached.GetEndpointConfigurationName

...

  • GuidanceTextEngineSettingsCached.GetRules
  • TaxonomyManagerCached.GetOccupations

...

  • ScreeningDALCached.GetSettings
  • ScreeningDALCached.GetJobcenterData
  • ScreeningDALCached.GetJobcenterDataList

...

  • SystemAreaSubscriptionDALCached.GetSystemAreaSubscriptions

...

  • UnemploymentFundAccessFiltersDALCached.GetAccessFilters
  • UnemploymentFundAccessFiltersDALCached.GetAccessFilterByCategory
  • UnemploymentFundAccessFiltersDALCached.GetAccessFilterByCategoryAndName
  • UnemploymentFundAccessFiltersDALCached.GetAccessFiltersByCategoryCollection

...

for de aller fleste statiske dataområder vil dette være tilstrækkeligt.

Teknisk implementering

MemoryCache fra .NET frameworket anvendes, evt. kan vælges en hyppigere invalidering af cachen, end den daglige recycle af Application Poolen.

Tekniske overvejelser

Vi har overvejet Query Notifications mod SQL Serveren, men har pt. ikke fundet det opnåede forretningsværdi af den forøgede kompleksitet stor nok. Da der er tale om i udgangspunktet statiske data, er det ikke slutbrugerene der opdaterer data.

...