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. Den här separationen gör programmets komponenter modulära och gör att vi enklare kan 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 handlar inte om lagring av data eller att köra affärslogik. Omvänt fokuserar dataåtkomstskiktet på att optimera kommunikationen till datalagret och bortser från information 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.

Visualization of layers.

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åerna och endast tillåta nödvändig åtkomst.

Arkitekturen kräver att kommunikationen mellan nivåerna ska vara uppifrån och ned. Varje nivå kan kommunicera med nästa nivå under den, men i allmänhet är det inte tillåtet att hoppa över nivåer. Den här designen förbättrar säkerheten genom att begränsa den exponerade ytan på en nivå.

Visualization of tiers.

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å. Den här arkitekturen är den vanligaste N-nivåstilen. För resten av den här modulen refererar vi till en modell med tre nivåer där varje nivå kör ett enda lager i programmet och refererar till dem synonymt som nivåer.

Presentationsnivå

Presentationsnivån underlättar vanligtvis användarbegäranden. Dessa begäranden 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. Tillhandahålla saker som ett intuitivt gränssnitt och säkerställa säker kommunikation mellan slutanvändaren och ditt program.

På den här nivån bryr du dig inte om själva data, förutom hur de visas för användaren. Normalt sker ingen databehandling 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 bryr sig inte om hur informationen presenteras för användaren och bryr sig inte heller om 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 presenteras för användaren och fokuserar inte heller på någon logik kring data. Användningen av lagrade procedurer kan finnas på den här nivån, men det mesta av logiken kring data bör hanteras på en högre nivå.

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

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

  • Små till medelstora webbprogram.
  • Att migrera ett lokalt program till Azure med minsta möjliga omstrukturering.
  • Använda de lokala utvecklarnas kunskaper, funktioner och erfarenheter.

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. Dessa program kan vara offentliga eller verksamhetsspecifika program 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. Väl i Azure kan du dra nytta av PaaS-tjänster (plattform som en tjänst) för att ytterligare förbättra ditt program.

Eftersom det här är en vanlig arkitekturstil har ingenjörer ofta en högre nivå av erfarenhet och kunskaper om den. Om du väljer den här typen av arkitektur kan du använda befintliga färdighetsuppsättningar för att distribuera program utan att behöva använda nya arkitekturmönster.

Testa dina kunskaper

1.

Du måste uppdatera ett program med tre nivåer för att integrera med ett partner-API. Vilket lager ska du lägga till den här funktionen i?

2.

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