API-palvelu hoitaa kaikki aikaleima-tietokantaan liittyvä palvelut. Rajapinta koostuu kolmesta osasta: pyynnöistä (request), vastauksista (response) ja palveluista (services). Repositoryn `Services`-luokka toteuttaa kaikki palvelut, ja sen metodeja kutsutaan muualta koodista. Palvelut ovat funktioita, jotka suorittavat tietyn toiminnon. `Request`-parametrilla kerrotaan toiminnolle tarvittavat tiedot, ja `Response` palauttaa toiminnon tuloksen.
Repository-moduuli hyödyntää C#:n partial-luokkia, joiden avulla sekä palvelulogiikka (Services) että tietokantakonteksti (AppDbContext) on jaettu selkeämpiin, osa-aluekohtaisiin tiedostoihin. Tämä parantaa koodin luettavuutta ja ylläpidettävyyttä. Alla oleva kaavio kuvaa tätä rakennetta.
Vastaavasti kuin Services-luokka, myös AppDbContext on jaettu osiin partial-avainsanalla. Jokainen sovelluksen pääentiteetti (kuten User, Stamp, Device) saa oman DbSet-määrittelynsä omassa tiedostossaan. Tämä selkeyttää projektin rakennetta, kun kuhunkin toiminnallisuuteen liittyvä tietokantataulun määrittely löytyy omasta kansiostaan.
Soveluksessa ei ole oikestaan mitään normaalista poikeavaa.Ellei sellaiseksi lasketa hostprosesseja muuten normaalit DI-viritykset
routes-kansio
Reititysmääritykset, jotka alustetaan sovelluksen käynnistyessä. Nämä reitit palvelevat kaikkia API-asiakkaita.
Järjestelmässä käytetään post-metodeja myös dataa haettaessa, koska halutaan pitää hakuparametrit contentissa eikä urlissa.
Mikäli hakuparameterja ei ole niin silloin käy ihan hyvin get-metodi.
Käyttäjä sequence-kaavio
Laite sequence-kaavio
Asetukset sequence-kaavio
Leimauslajit sequence-kaavio
Leimaajat sequence-kaavio
Leimat sequence-kaavio
BackgroundServices Tällä hetkellä sovelluksessa on yksi taustatoiminto joka tallentaa laimaustapahtumat tietokantaan. Lyhyesti selostettuna. Leimauksen tallennus apikutsu vie tapahtuman cacheen. Taustaprosessi tallentaa cachen 30 sekunnin välein. Miksi tämä ratkaisu. Testiohjelmalla (joka löytyy asiaskasjärjestelmä koodeista). Tehtyjen testien perusteella esim 100 asiakas-clientilla 100 leimausta sekuntin välein eli 100 leimausta sekunnissa. Aiheutti satunnaisia lukitus vireitä kantatiedostoon.