Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

Under omredigering i forbindelse med US-2877 


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

  • Statiske data - f.eks. kodelister, konfiguration
  • Dynamiske data - f.eks. personregistreringer

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)
}

GetCached returnerer, udfra key, den cachede værdi såfremt denne findes .  Findes denne ikke kaldes delegate callback (typisk en get funktion på et DAL object) der henter data som caches.  timeoutInMinutes specificerer timeout for det pågældende item - default = 5 minutter.  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:

  • BLL.BookingInterview
    • ExternalBookingSystemDALCached.GetEndpointConfigurationName
  • BLL.MyPlan
    • GuidanceTextEngineSettingsCached.GetRules
    • TaxonomyManagerCached.GetOccupations
  • BLL.Screening
    • ScreeningDALCached.GetSettings
    • ScreeningDALCached.GetJobcenterData
    • ScreeningDALCached.GetJobcenterDataList
  • BLL.SystemAreaSubscription
    • SystemAreaSubscriptionDALCached.GetSystemAreaSubscriptions
  • BLL.UnemploymentFundAccessFilters
    • UnemploymentFundAccessFiltersDALCached.GetAccessFilters
    • UnemploymentFundAccessFiltersDALCached.GetAccessFilterByCategory
    • UnemploymentFundAccessFiltersDALCached.GetAccessFilterByCategoryAndName
    • UnemploymentFundAccessFiltersDALCached.GetAccessFiltersByCategoryCollection
  • BLL.Utility
    • ClientSystemDalCached.GetClientSystem

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.



  • No labels