CodeGym/Java blogg/SlumpmÀssig/Del 2. LÄt oss prata lite om mjukvaruarkitektur
John Squirrels
NivÄ
San Francisco

Del 2. LĂ„t oss prata lite om mjukvaruarkitektur

Publicerad i gruppen
Detta material Àr en del av serien "Introduktion till företagsutveckling" . Den första delen, om nÀtverkande, Àr hÀr . Del 2. LÄt oss prata lite om mjukvaruarkitektur - 1Mjukvaruarkitektur avser strukturen som skapas inom en applikation, dvs hela programmets moduler och komponenter och hur de samverkar. Programmerare har arbetat med bra arkitekturer under en mycket lÄng tid, sÄ det Àr inte förvÄnande att vi har hört talas om mÄnga arkitektoniska mönster. Du mÄste förstÄ dem: nÀr du skriver en webbapplikation Àr det viktigt att komma med en bra arkitektur, eftersom en webbapplikation har fler komponenter och moduler Àn en vanlig applikation. Ett arkitektoniskt mönsterÀr ett smart sÀtt att lösa vissa mjukvarudesignproblem. Du har förmodligen stött pÄ designmönster som fabriksmetod, abstrakt fabrik, byggare, prototyp, singleton och möjligen andra. Vi anvÀnder dem nÀr vi skriver kod, skapar klasser och planerar hur klasserna ska interagera. Arkitektoniska mönster anvÀnds pÄ en högre abstraktionsnivÄ, nÀr man planerar anvÀndarens interaktion med servrar, data och andra komponenter. LÄt oss ta en snabb titt pÄ nÄgra mönster och hur man anvÀnder dem.

Klient-server-arkitektur

Namnet skapar intrycket att allt med detta mönster Àr enkelt och tydligt. Men lÄt oss förtydliga nÄgra punkter, sÄ att nÀr du börjar studera Spring kommer du att förstÄ vad vi pratar om. LÄt oss sÀga att du har skrivit en chattapp och att du och en vÀn börjar anvÀnda den. Du kan anvÀnda ett mycket enkelt tillvÀgagÄngssÀtt, skicka meddelanden till varandra direkt via Internet med hjÀlp av kÀnda IP-adresser: Del 2. LÄt oss prata lite om mjukvaruarkitektur - 2Till en början verkar allt fungera bra tills en annan av dina vÀnner ber om att fÄ gÄ med i chatten. SÄ nÀr du bestÀmmer dig för att lÀgga till din gemensamma vÀn till chatten stÄr du inför ett arkitektoniskt problem: för varje chattdeltagare mÄste du ge aktuell information om antalet anvÀndare och IP-adressen för nya anvÀndare. Och nÀr ett meddelande skickas mÄste det levereras till alla deltagare. Det Àr de mest uppenbara problemen som kommer att uppstÄ. Ytterligare ett gÀng problem kommer att döljas i sjÀlva koden. För att undvika dem mÄste du anvÀnda en server, som kommer att lagra all information om anvÀndare, inklusive deras adresser. Meddelanden behöver bara skickas till servern. Den skickar i sin tur meddelanden till var och en av mottagarna. NÀr du bestÀmmer dig för att lÀgga till en serverdel i din chattapp börjar du bygga en klient-server-arkitektur.

Komponenter i klient-server-arkitekturen

LÄt oss se vad det handlar om. En klient-serverarkitektur Àr ett designmönster som anvÀnds för att skapa webbapplikationer. Denna arkitektur bestÄr av tre komponenter: Del 2. LÄt oss prata lite om mjukvaruarkitektur - 3
  1. Klient — FrĂ„n dess namn kan vi sĂ€ga att den hĂ€r komponenten anvĂ€nder nĂ„gon tjĂ€nst (webbapplikationen), och kontaktar en server för att begĂ€ra information.

  2. Server — Det Ă€r hĂ€r din webbapplikation eller serverdelen av den finns. Den lagrar nödvĂ€ndig anvĂ€ndarinformation eller kan begĂ€ra den. Dessutom, nĂ€r en klient skickar en begĂ€ran Ă€r det servern som returnerar den begĂ€rda informationen.

  3. NĂ€tverk — Den hĂ€r delen Ă€r enkel. Det underlĂ€ttar utbytet av information mellan klienten och servern.

Servern kan hantera ett stort antal förfrÄgningar frÄn olika anvÀndare. Det gör att det kan finnas mÄnga kunder. Om de behöver utbyta information sinsemellan mÄste detta ske via servern. Servern har alltsÄ en annan funktion: trafikkontroll. NÀr det gÀller vÄrt chattprogram för flera anvÀndare kommer hela applikationen att bestÄ av tvÄ moduler:
  • en klientmodul — innehĂ„ller ett grafiskt grĂ€nssnitt för att logga in och skicka/ta emot meddelanden

  • en servermodul — en webbapplikation som finns pĂ„ en server och som tar emot meddelanden frĂ„n anvĂ€ndare, bearbetar dem och sedan skickar dem till mottagare

Del 2. LÄt oss prata lite om mjukvaruarkitektur - 4NÀr vi vill titta pÄ anvÀndbar (eller inte sÀrskilt anvÀndbar) information pÄ Internet öppnar vi en webblÀsare, anger en frÄga i sökfÀltet och fÄr information frÄn sökmotorn som svar. I denna kedja Àr webblÀsaren klienten. Den skickar en förfrÄgan med information om vad vi letar efter till servern. Servern bearbetar förfrÄgan, hittar de mest relevanta resultaten, paketerar dem i ett format som webblÀsaren (klienten) kan förstÄ och skickar tillbaka dem. Komplexa tjÀnster som sökmotorer kan ha mÄnga servrar. Till exempel en auktoriseringsserver, en server för att hitta information, en server för att generera svaret, etc. Men klienten Àr omedveten om och bryr sig inte om nÄgot av detta: för klienten Àr servern en enhetlig enhet. Kunden kÀnner bara till ingÄngspunkten, dvs. adressen till servern som förfrÄgningar ska skickas till. Kom ihÄg ansökan som vi granskade iföregÄende del av denna serie . Det var för att övervaka den genomsnittliga lufttemperaturen i alla lÀnder i realtid. Dess arkitektur ser ut ungefÀr sÄ hÀr: Del 2. LÄt oss prata lite om mjukvaruarkitektur - 5VÄr applikation finns pÄ servern. LÄt oss sÀga att det var femte sekund skickar förfrÄgningar till servrar som drivs av lokala meteorologiska stationer, tar emot temperaturinformation för ett visst land frÄn servrarna och lagrar denna information. NÀr kunden ber oss att "se vÀrldens aktuella lufttemperatur" returnerar vi den senast lagrade informationen, sorterad efter land. SÄledes fungerar vÄr applikation bÄde som en server (nÀr den behandlar anvÀndarförfrÄgningar) och en klient (nÀr den tar emot information frÄn andra servrar).
HÀr Àr en viktig punkt: konceptet med en server handlar inte om en specifik dator, utan snarare om förhÄllandet mellan nÀtverksenheter .
En enkel klient-server-arkitektur anvÀnds mycket sÀllan och endast för mycket enkla applikationer. För riktigt stora och komplexa projekt anvÀnder vi olika arkitekturer, som du kommer att möta i framtiden. LÄt oss nu titta pÄ en modell som Àr mycket lik klient-server-arkitekturen.

Trestegsarkitektur

Detta Àr ett arkitektoniskt mönster som introducerar en tredje modul - datalagring . I det hÀr mönstret kallas de tre nivÄerna vanligtvis för lager eller nivÄer: Del 2. LÄt oss prata lite om mjukvaruarkitektur - 6
  1. Klientlagret Àr anvÀndargrÀnssnittet, Àven kallat presentationsnivÄn. Det kan vara en webblÀsare som tar emot HTML-sidor, eller ett grafiskt anvÀndargrÀnssnitt skrivet med JavaFX. Huvudsaken Àr att detta lager lÄter anvÀndaren skicka förfrÄgningar till servern och bearbeta dess svar.

  2. Det logiska lagret Àr servern som behandlar förfrÄgningar/svar. Ofta kallas det Àven för serverlagret. Det Àr ocksÄ hÀr alla logiska operationer Àger rum: matematiska berÀkningar, dataoperationer, anrop till andra tjÀnster eller datalagringar etc.

  3. Datalagret Àr databasservern: vÄr server interagerar med den. Detta lager lagrar all information som behövs för att applikationen ska fungera.

SÄledes tar vÄr server pÄ sig allt ansvar för att komma Ät data och tillÄter inte anvÀndaren att komma Ät den direkt.

Fördelar med en arkitektur i tre nivÄer

En arkitektur som denna ger oss mÄnga fördelar, inklusive:
  1. Möjligheten att skydda mot SQL-injektion (detta Àr en attack pÄ en server; det innebÀr att skicka SQL-kod som, nÀr den exekveras, tillÄter en angripare att pÄverka vÄr databas).

  2. Separation av data som vi vill kontrollera anvÀndarÄtkomst till.

  3. Möjligheten att Àndra data innan de skickas till klienten.

  4. Skalbarhet (möjligheten att utöka vÄr applikation till flera servrar som kommer att anvÀnda samma databas.

  5. Mindre strÀnga krav pÄ kvaliteten pÄ anvÀndaranslutningar. NÀr vi genererar ett svar pÄ servern fÄr vi ofta mycket olika information frÄn en databas och formaterar den, sÄ att bara det som anvÀndaren behöver lÀmnas kvar. Genom att göra detta minskar mÀngden information som vi skickar i vÄrt svar till kunden.

Hur ofta ska arkitektoniska mönster anvÀndas?

Om du Àr bekant med, sÀg, fabriksmetodens designmönster , har du förmodligen undrat nÀr du ska anvÀnda det. Ibland Àr det svÄrt att bestÀmma vad man ska göra: skapa ett objekt med den nya operatorn eller med en fabriksmetod. Men med tiden kommer förstÄelsen. Saker och ting Àr lite annorlunda nÀr det kommer till arkitektoniska mönster. Enterprise-ramverk Àr utformade för att tillÄta en programmerare att skapa ett projekt baserat pÄ nÄgot allmÀnt accepterat mönster. Följaktligen, innan du lÀr dig Spring Framework, bör du definitivt förstÄ klient-server-arkitekturen, treskiktsarkitekturen och MVC-arkitekturen. Oroa dig inte: vi kommer Ànnu att prata om MVC-arkitekturen. Del 3. HTTP/HTTPS Del 4. Grunderna i Maven Del 5. Servlets och Java Servlet API. Att skriva en enkel webbapplikation Del 6. ServletbehÄllare Del 7. Introduktion av MVC-mönstret (Model-View-Controller)
Kommentarer
  • PopulĂ€r
  • Ny
  • Gammal
Du mÄste vara inloggad för att lÀmna en kommentar
Den hÀr sidan har inga kommentarer Àn