Page 6 of 6 FirstFirst ... 4 5 6
Results 76 to 76 of 76

Thread: Delphi Meetup bij Coolblue: Behind the Scenes Delphi - 29 november

  1. #76
    Dit kan gebruikt worden in database-applicaties.
    Het is in feite een tussenlaag tussen bijvoorbeeld een query en een interface. In plaats rechtstreeks lezen uit een dataset, gebruik je de interface.

    Voordelen van zo'n interface zijn o.a:
    - Strongly typed (geen field names als string)
    - Onafhankelijk van de database fields en hun types, meer abstract
    - Te gebruiken met dependency injection
    - Te mocken, voor unit tests

    Een interface heeft natuurlijk ook een implementatie nodig, maar dat heeft de library ondervangen: De virtual interface implementatie zorgt dat je niet steeds een eigen implementatie hoeft te schrijven voor al die interfaces die je maakt.
    Er is dus één (tamelijk dikke) class, die allerlei database interacties aan kan. Het enige wat je doet, is aan te geven met welke interface je 'm wilt gebruiken. Method calls naar die interface worden door de class omgezet naar database-interacties, zoals het uitvoeren van een query of statement, het lezen van een veld e.d.
    Wat je zelf dus moet doen, is het schrijven van de interface, en van de query. Alles er tussenin wordt geregeld.

    Gelukkig zijn er ook nadelen.
    - Het werkt (nu nog) met attributes op de interface zelf, waarin de query (uit een resource) e.d. wordt vastgelegd. Dat is dus toch nog een beetje tight koppeling. Dat kan in de weg zitten als je applicatie verschillende databases moet ondersteunen, die net iets andere queries nodig hebben.
    - Het leunt zwaar op generics, en zorgt voor nogal wat binary bloat: je executable wordt groter, en builden duurt wat langer. Dat laatste zal vooral een issue zijn voor serieus grote projecten.
    - De implementatie leunt weer op o.a. RTTI, en er zit nogal wat runtime werk in. Dat zorgt voor overhead. D.w.z. het uitvoeren van een query en het uitlezen van het resultaat is trager. Toch is dat in de praktijk verwaarloosbaar ten opzicht van het uitvoeren van de database-interactie zelf, dus het netwerkverkeer en het wachten op resultaat van je database server.

    Soortgelijk verhaal voor andere abstraties in de library, zoals het aanroepen van API's en van active directory.
    Last edited by GolezTrol; 29-Sep-21 at 13:56.
    1+1=b

Page 6 of 6 FirstFirst ... 4 5 6

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •