Three-tier architecture ( three-tier architecture , eng. three-tier ) er en arkitektonisk model af et softwarekompleks, der antager tilstedeværelsen af tre typer komponenter (niveauer, links): klientapplikationer (som brugerne arbejder med ), applikationsservere (som klientapplikationer arbejder med) og databaseservere (som applikationsservere arbejder med) [1] .
Klienten ( klientlaget ) er en komponent af det komplekse (normalt grafiske ), der leveres til slutbrugeren. Dette niveau bør ikke have direkte forbindelser til databasen (for sikkerheds- og skalerbarhedskrav), være indlæst med hovedforretningslogikken (for skalerbarhedskrav ) og gemme applikationstilstanden (for pålidelighedskrav ) . Kun den enkleste forretningslogik tages normalt til dette niveau: autorisationsgrænseflade , krypteringsalgoritmer , kontrol af inputværdier for gyldighed og formatoverholdelse, enkle operationer med data (sortering, gruppering, tælleværdier), der allerede er indlæst på terminalen .
Applikationsserveren ( mellemlag , mellemlag ) er placeret på andet niveau, det meste af forretningslogikken er koncentreret om den. Kun fragmenter, der eksporteres til klienten (terminaler), samt logiske elementer nedsænket i databasen (lagrede procedurer og triggere), forbliver uden for den. Implementeringen af denne komponent leveres af middlewaren . Applikationsservere er designet på en sådan måde, at tilføjelse af yderligere instanser til dem sikrer horisontal skalering af softwarepakkens ydeevne og ikke kræver ændringer af applikationskoden.
Databaseserveren (datalaget ) sørger for datalagring og er placeret på et separat niveau, implementeret som regel ved hjælp af databasestyringssystemer , forbindelsen til denne komponent leveres kun fra applikationsserverniveauet.
I de enkleste konfigurationer kan alle komponenter eller nogle af dem kombineres på én computernode. I produktive konfigurationer bruges som regel en dedikeret computerknude til databaseserveren eller en klynge af databaseservere; for applikationsservere en dedikeret gruppe af computernoder, som klienter (terminaler) er direkte forbundet til.
Sammenlignet med en to-lags klient-server- arkitektur eller en fil-server- arkitektur, giver en tre-lags arkitektur som regel større skalerbarhed (på grund af applikationsserverens horisontale skalerbarhed og forbindelsesmultipleksing), større konfigurerbarhed (pga. isolering af niveauer fra hinanden). Implementeringen af applikationer, der er tilgængelige fra en webbrowser eller fra en tynd klient , involverer som regel implementering af en softwarepakke i en tre-lags arkitektur. Samtidig er udviklingen af trelags softwaresystemer normalt vanskeligere end for tolagssystemer, og tilstedeværelsen af yderligere middleware kan medføre yderligere omkostninger ved administrationen af sådanne komplekser.