Vad är en N-nivåarkitektur?

Slutförd

En N-nivåarkitektur delar in ett program i logiska lager och fysiska nivåer. N representerar antalet fysiska nivåer som programmet är uppdelat i, vilket vanligtvis är kopplat till antalet lager. Det går att ha en arkitektur med två nivåer (klient-server) eller en med fem nivåer, men det vanligaste och ofta det bästa är att ha högst fyra nivåer.

Vi ska titta på vad lagren och nivåerna utgörs av.

Vad är lager?

Lager delar logiskt upp den programkod som utgör ett program. Varje lager har ett specifikt ansvarsområde, som att hantera begäranden från användare, köra affärslogik eller hantera lagring av data.

Genom att programmet delas upp i logiska lager behandlas lagren oberoende av varandra. Detta gör programmets komponenter modulära och gör det enklare för oss att underhålla appen. Vi kan optimera programmet för varje ansvarsområde. Det lager som hanterar webbförfrågningar fokuserar på sin primära uppgift: att hantera webbförfrågningar. Det behöver inte bry sig om datalagring eller att köra affärslogik. Dataåtkomstlagret fokuserar på att optimera kommunikationen med datalagringen och ignorerar informationen om hur data presenteras för användaren. Detta begrepp när fokus begränsas till specifika funktioner kallas problemseparering.

Här är ett diagram som visar lager i en gemensam N-nivåarkitektur. Varje lager hanterar en programaspekt. Företagslagret hanterar kommunikationen mellan användargränssnittslagret och dataåtkomstlagret.

Visualisering av lager.

Vad är nivåer?

Nivåerna representerar den fysiska avgränsningen mellan delar av programmet på separata beräkningsresurser. I allmänhet kör varje fysisk nivå ett logiskt lager av programmet.

Att dela upp arkitekturen i fysiska nivåer har flera fördelar:

  • Programkomponenterna kan skalas var för sig genom att resurser läggs till på de olika nivåerna.
  • Programmet kan vara mer motståndskraftigt genom att lägga till belastningsutjämning för att identifiera misslyckade resurser och omdirigera begäranden till felfria system.
  • Programmet kan vara säkrare genom att begränsa nätverkskommunikationen mellan nivåer och endast tillåta den åtkomst som krävs.

Kommunikationen mellan nivåerna bör ske uppifrån och ned. Varje nivå tillåts att prata med nästa nivå under den, men tillåts vanligtvis inte hoppa över nivåer. Detta förbättrar säkerheten genom att den exponerade ytan på varje nivå begränsas.

Visualisering av nivåer.

Arkitektur med tre nivåer

Av alla N-nivåarkitekturer är en arkitektur med tre nivåer vanligast. Ansvarsområdena och namnen för de olika lagren och nivåerna varierar beroende på program och verksamhet, men ett typiskt program med tre nivåer har en presentationsnivå, en program- eller mellannivå och en datanivå. Det här är det vanligaste N-nivåformatet. I den här modulen hänvisar vi hädanefter till en modell med tre nivåer där varje nivå kör ett enda programlager och vi kallar samtliga för nivåer.

Presentationsnivå

Presentationsnivån underlättar vanligtvis användarbegäranden. Det kan vara användare som har åtkomst till en webbsida eller offentlig åtkomst till ditt program via ett exponerat API. Fokus på den här nivån ligger på användarupplevelsen, att tillhandahålla sådant som ett intuitivt gränssnitt och säkerställa säker kommunikation mellan slutanvändaren och ditt program.

På den här nivån är du inte bekymrad över själva data, förutom hur de presenteras för användaren. Normalt sker ingen databearbetning eller dataåtkomst på den här nivån. Det sker i stället på de lägre nivåerna.

Programnivå

Programnivå (kallas också ofta mellannivån) fokuserar vanligtvis på att hantera programmets affärslogik. Nivån kan till exempel hantera kundorder, spåra en leverans eller uppdatera lagret baserat på material som tas emot. Den här nivån ansvarar också för att uppgifter som skapande, läsning, uppdatering och borttagning mot datanivån. Det är också en bra plats för anrop till beroende tjänster, som externa API:er.

Den här nivån bekymrar sig inte om hur informationen presenteras för användaren och inte heller hur data lagras och hämtas. Fokus ligger på den affärslogik som krävs för att slutföra de begäranden som programmet har tagit emot.

Datanivå

På den här nivån ligger fokus på datalagring. Ansvarsområdet för den här nivån är lagring av data i tabeller, filer eller andra media. Den här nivån tillhandahåller ett gränssnitt (till exempel T-SQL) för dataåtkomst. I en arkitektur med tre nivåer är det datalagret som ger dataåtkomst till programnivån.

Den här nivån fokuserar inte på hur data visas för användaren och inte heller på logiken kring data. Användningen av lagrade procedurer kan finnas på den här nivån, men det mesta av logiken kring själva informationen bör hanteras på en högre nivå.

När ska N-nivåarkitekturer användas?

Nu när vi har talat om vad en N-nivåarkitektur är ska vi beskriva när du ska använda en arkitektur av det här formatet. N-nivåarkitektur kan vara ett alternativ för:

  • Små till medelstora webbprogram
  • Migrering av lokala program till Azure med minsta möjliga omstrukturering
  • Användning av färdighetsuppsättningar och utvecklarkapacitet med lokal utvecklarupplevelse

Webbprogram är ett bra användningsfall för arkitekturer med det här formatet. Tack vare den minskade komplexiteten hos det här arkitekturformatet och den ofta naturliga uppdelningen mellan ansvarsområden i webbprogram kan en N-nivåarkitektur fungera bra. Det kan vara offentliga program eller verksamhetsapplikationer som används internt av en organisation. För mindre program eller mindre komplexa program kan det räcka med en arkitektur med två nivåer (klient/server), där presentationsnivån och programnivån kombineras i stället för att separeras.

N-nivåarkitekturer är mycket vanliga i traditionella lokala program, och lämpar sig därför för migrering av befintliga arbetsbelastningar till Azure. Program i det här formatet migreras ofta till Azure med minsta möjliga omstrukturering eller ändring, vilket gör den inledande migreringen enklare. När du är i Azure kan du dra nytta av PaaS-tjänster (plattform som en tjänst) för att förbättra ditt program ytterligare.

Eftersom det här är ett vanligt arkitekturformat har ingenjörer ofta en högre erfarenhet och kunskap om det. Genom att välja den här arkitekturen kan du använda befintliga kunskapsuppsättningar för att distribuera program utan att behöva skapa nya arkitekturmönster.

Testa dina kunskaper

1.

Ett program med tre lager behöver uppdateras för att integreras med ett partner-API. I vilket lager ska den här funktionen läggas till?

2.

I vilket lager är det acceptabelt att tillåta åtkomst till användare?