Applikasjonsarkitektur

Applikasjonen er bygd med følgende teknologier:

  • ASP.NET MVC Core 2.1: Microsofts nyeste web-plattform, skrevet fra bunnen av for å unngå bagasje fra gamle ASP.NET. Gir bedre ytelse, lettere oppsett av avhengigheter, konfigurasjon, logging og middleware.
  • Entity Framework Core: Vi har reverse-engineered en EF datamodell fra datasett-databasene. Det gir oss typesterk tilgang til databasen, og meget bra ytelse på genererte spørringer.
  • React & Redux: Facebooks view-bibliotek React kombinert med Redux for tilstandshåndtering. Gjør det mulig å bygge opp applikasjonen i form av enkeltkomponenter som kan kombineres og utvides. Redux gjør det enkelt å resonnere om applikasjonens tilstand, og forstå hvor endringer skjer.
  • TypeScript: Ved å bruke et typesterkt språk som kompilerer til JavaScript, fanger vi opp de aller fleste feil allerede i kompileringssteget. Vi kan også ta i bruk nyere ECMAScript-funksjoner som blir transpilert ned til kode som kjører i alle nettlesere.
  • MediatR: Et bibliotek for å løskoble requests fra implementasjon. Gjør at man kan lage mindre klasser som gjør færre ting, og dermed isolere endringer bedre.
  • xUnit: Vi bruker xUnit for å kjøre enhetstester og integrasjonstester.
  • Webpack: Webpack brukes til utvikling og kompilering av frontend-assets, med Hot Module Reloading. Det gjør at vi kan gjøre endringer i TypeScript-koden, og applikasjonen vil automatisk bli oppdatert uten å måtte manuelt refreshe.

Versjoner

Nøyaktige versjoner av alle avhengigheter kan finnes i package.json for frontend, og de ulike .csproj-filene for backend.

Prinsipper

  • Vertikale feature slices heller enn horisontale applikasjonslag. Separerer ansvar og isolerer endringer.
  • Én "Single-Page Application" per side. Gjør at man kun trenger laste inn koden for siden man er på, ikke andre sider.
  • Caching av ressurser som leses ofte, f.eks. områdeinfo og tilganger. Gir bedre responstid.

Struktur

Applikasjonen består av 3 prosjekter:

  • NaturBase.Common: Felles verktøy og klasser som ikke har direkte med Naturbase-domenet å gjøre
  • NaturBase.Data: Inneholder DB-contexts, entitets-klasser, migreringer og database-spesifikk logikk
  • NaturBase.Web: Inneholder selve applikasjonen, web-spesifikke verktøy, og alle features som utgjør applikasjonen

Under NaturBase.Web er det noen mapper som er verdt å merke seg:

  • ClientApp: All frontend-kode ligger her, inndelt i ulike mapper. Alle sider ligger under pages.
  • Features: Alle datasett ligger i hver sin feature-folder, som inneholder controllers, models og views for gitt feature.
  • wwwroot: Statiske filer som publiseres som applikasjonens rot. Inneholder også dokumentasjon, og LocalizationAdmin (tredjeparts verktøy for tekstredigering, se Tekstredigering)

results matching ""

    No results matching ""