image.png

I eksempelvis en RazorPage appikation så vil man typisk ikke blande de forskellige lag (UI, BL, DATA) i de samme filer.

Præsentationslaget (UI-laget)

UI-laget – også kaldet brugergrænsefladen – er det lag, som brugeren møder og interagerer med. Det er her, input bliver indtastet, og output bliver præsenteret. I en konsolapplikation er det fx den tekst, brugeren skriver og læser i kommandoprompten. I en webapplikation er det selve hjemmesiden, brugeren klikker rundt på.

Formålet med UI-laget er at formidle kommunikationen mellem brugeren og resten af systemet, uden at det selv tager stilling til, hvad dataene betyder, eller hvordan de skal behandles og gemmes. Det sørger udelukkende for at modtage data fra brugeren og vise resultater.

UI-laget bør ikke indeholde forretningslogik eller viden om, hvordan data bliver gemt – den del skal håndteres af de bagvedliggende lag. På den måde bliver brugergrænsefladen nem at ændre, uden at det påvirker resten af systemet. Du kan fx skifte fra konsol til web – uden at skulle ændre på, hvordan data behandles eller gemmes.

UI laget er altså, det lag, som brugeren ser og interagerer med.

Logiklaget (Business Logic)

Logiklaget – også kaldet forretningslaget – fungerer som hjernen i applikationen. Det er her, systemet tager beslutninger, og hvor regler og funktionalitet er samlet. Når brugerens input kommer fra UI-laget, er det logiklaget, der vurderer, hvad der skal ske med det.

Her ligger forretningslogikken, altså de regler og det flow, som er særligt for det system, man bygger. Det kan fx være at kontrollere, at en besked ikke er tom, sortere data, beregne priser eller validere input.

Logiklaget kommunikerer både med UI-laget og med datalaget, men det forsøger at være uafhængigt af, hvordan data vises og hvor de gemmes. Det betyder, at man nemt kan ændre både UI og datalager uden at ændre på logikken – så længe grænsefladerne er de samme. Det gør systemet mere robust og lettere at vedligeholde.

Logiklaget er hjernen i applikationen – her bor reglerne og funktionerne.