Springen naar inhoud


- - - - -
VS 2015

Cachen Van Data

VS2015

  • Log in a.u.b. om te beantwoorden
Er zijn 3 reacties in dit onderwerp

#1 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 770 berichten
    Laatst bezocht 13 sep 2020 11:01
  • LocatieMechelen (BE)

Geplaatst op 30 mei 2020 - 00:05

Vraagje; bij het gebruik van een bepaalde website api staat in de voorwaarden dat ik de data dat ik ophaal moet cachen maar de data mag niet langer dan 24h gecached worden. Dit om de servers te ontlasten van de mogelijke vele requests.

Nu was ik aan't denken: ik stop dat in een db en klaar ermee, maar dan was ik aan't verder denken. Dan is het class bestand afhankelijk van een andere class en dat wil ik (nog) niet. De data dat ik ophaal is voornamelijk JSON, dus allemaal tekst en gemakkelijk cache en comprimeerbaar).
Dan was ik wat verder aan't zoeken en kwam ik uit op MemoryCache() een functie dat in Dot net 4 zit. Dit ziet er op het eerste gezicht ok uit maar dan zit ik met het mogelijke probleem, als ik het programma afsluit moet ik dat naar de schijf wegschrijven (en bij het openen eventueel laden) anders heb ik niets aan het cache gedeelte.

Of heeft er iemand een beter idee?

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1200 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 31 mei 2020 - 02:25

Bericht bekijkenDamic, op 30 mei 2020 - 00:05, zei:

Vraagje; bij het gebruik van een bepaalde website api staat in de voorwaarden dat ik de data dat ik ophaal moet cachen
Bizar. Normaal moet de web api het cachen verzorgen.


Bericht bekijkenDamic, op 30 mei 2020 - 00:05, zei:

Dan is het class bestand afhankelijk van een andere class en dat wil ik (nog) niet.
Euh? Dat hoeft toch niet.

Bericht bekijkenDamic, op 30 mei 2020 - 00:05, zei:

Dan was ik wat verder aan't zoeken en kwam ik uit op MemoryCache() een functie dat in Dot net 4 zit. Dit ziet er op het eerste gezicht ok uit maar dan zit ik met het mogelijke probleem, als ik het programma afsluit moet ik dat naar de schijf wegschrijven (en bij het openen eventueel laden) anders heb ik niets aan het cache gedeelte.
De bedoeling is dat je zelf een afgeleide van de ObjectCache (dat is MemoryCache namelijk) maakt die wegschrijft en leest naar een db of naar het locaal filesysteem.
Dat is natuurlijk al voor jou gedaan door anderen: bijvoorbeeld FileCache (is ook beschikbaar via nuget).

Als je geen afzonderlijke items moet cachen zou je ook naar een Prevalence oplossing kunnen kijken, al heb ik het laatste decennium geen nieuwe meer zien verschijnen.
Of gewoon json wegschrijven, of serializeren,

#3 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 770 berichten
    Laatst bezocht 13 sep 2020 11:01
  • LocatieMechelen (BE)

Geplaatst op 31 mei 2020 - 11:55

Web Api: Het is voornamelijk om de servers te ontlasten (bandwidth/sql), swat het is hun beslissing en daar moet je dan rondom rond programmeren ;)

Het was een beetje laat :+ en je kunt natuurlijk bepaalde andere class stukken integreren maar dan niet naar buiten brengen (public)

Ha voila Dirk to the rescue :) ik had naderhand nog Monkey-Cache gevonden, maar volgens mij is dat te uitgebreid voor het doel dat ik het nodig heb. Moet wel zeggen, leuk gevonden: "All data for Monkey Cache is stored and retrieved in a Barrel." Miljaar dat is wat Donkey Kong aan't gooien is, je data, want die zitten in vaten

#4 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 770 berichten
    Laatst bezocht 13 sep 2020 11:01
  • LocatieMechelen (BE)

Geplaatst op 05 juni 2020 - 22:12

Mmmmh dit is rare code
Code:
public sealed class ObjectBinder : System.Runtime.Serialization.SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
Type typeToDeserialize = null;
String currentAssembly = Assembly.GetExecutingAssembly().FullName;

// In this case we are always using the current assembly
assemblyName = currentAssembly;

// Get the type using the typeName and assemblyName
typeToDeserialize = Type.GetType(String.Format("{0}, {1}",
typeName, assemblyName));

return typeToDeserialize;
}
}
}
je neemt de assemblyName en dan ga je die direct overschrijven met de currentAssembly of mis ik iets?

Edit: zalige class die FileCache, niet moeilijk om te integreren en doet bijna alles voor je :)

Veranderd door Damic, 06 juni 2020 - 01:29.






Ook met taq VS 2015, VS2015 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)