Lat lasting
Lat lasting , bokstavelig talt “lazy loading” (mer treffende: “tomgang loading”), beskriver en konstruksjon mønster i utvikling av programvare i hvilken dataobjekter som regel gi verdier eller andre avhengige objekter, men bare henter dem fra datakilden når en spesifikk forespørsel gjøres.
Det motsatte kalles "ivrig lasting"; alle forventede nødvendige data blir hentet umiddelbart og så effektivt som mulig.
Årsaker til søknad
Årsaken til søknaden kan være at det er tidkrevende eller ressurskrevende å hente innholdet, for eksempel i tilfelle et databasespørsmål , en webtjenesteforespørsel eller kompleks behandling, og det er i utgangspunktet ennå ikke klart hvilke data som faktisk kreves. Hvis datastrukturer er sterkt nettverk, ville ellers omfattende kaskader av ekstra lasteprosesser utløst.
Implementeringsalternativer
- Lat initialisering
- hovedsakelig implementert med egenskaper i programkoden; Fra utsiden er dette verdier eller objekter, initialisering av programkoden blir bare utført når de blir spurt eller endret. Hentingen av et forventet innhold av en eiendom fører deretter til utførelsen av denne initialiseringskoden som faktisk oppnår dette innholdet, f.eks. B. fra en database.
- Virtuell proxy
- et eksternt identisk objekt med samme grensesnitt tar plassen til det virkelige objektet; Når den brukes for første gang, får den de nødvendige dataene og gjør den tilgjengelig eller erstattes av et fullverdig objekt.
- Spøkelse
- Spesiell form for en proxy som inneholder individuelle, kjente egenskaper for dataobjektet som skal hentes fra starten (f.eks. ID-nummer), slik at det kan brukes i begrenset grad uten å måtte hente reelle data.
- Verdiinnehaver
- et hjelpeobjekt som styrer den forsinkede datainnsamlingen og sender ut data om nødvendig slik at den kan brukes f.eks. B. stå bak verdiegenskapene til et dataobjekt og kan gi verdiene for dette i bakgrunnen.
Risiko
Lat belastning er ofte et forsøk på å minimere antall datatilganger, men mest på bekostning av effektivitet i tilfelle flere tilganger. Hvis et stort antall verdier eller underobjekter kreves og hentes via lat belastning, for eksempel ved å gå gjennom objekttreet i programmet og initialisere verdiene og objektene på denne måten, er det et stort antall individuelle spørsmål. Mange datakilder, for eksempel databaser, er designet for å behandle mye data og gi komplette resultater med så få spørsmål som mulig. Hvis mange dataposter leses ut med et stort antall individuelle spørsmål i stedet for noen få beskrivende spørsmål, er dette ofte en betydelig belastning for datakildene og nettverksstrukturen. I databasesammenheng brukes derfor også SELECT N + 1-problemet: med ett (1) spørsmål blir N-objekter innledningsvis lastet; deretter, for hvert av disse objektene, det vil si N ganger, kalles individuelle spørsmål om avhengige verdier og objekter.
Se også
Individuelle bevis
- ^ Martin Fowler, Patterns of Enterprise Application Architecture , Addison-Wesley, 2003, s. 200-214, ISBN 0-321-12742-0 .