JavaRush /Java Blog /Random-IT /Parte 2. Parliamo un po' dell'architettura software

Parte 2. Parliamo un po' dell'architettura software

Pubblicato nel gruppo Random-IT
Questo materiale fa parte della serie " Introduzione allo sviluppo aziendale ". La prima parte sulla rete è qui . Parte 2. Parliamo un po' dell'architettura software - 1L'architettura software è la struttura sulla base della quale viene creata un'applicazione e interagiscono i moduli e i componenti dell'intero programma. I programmatori cercano di creare una buona architettura da molto tempo, quindi non sorprende che ora conosciamo molti modelli architettonici. Devi capirli: quando scrivi un'applicazione web, il problema dell'architettura diventa acuto, perché ci sono più componenti e moduli che in un'applicazione normale. Un modello architettonico è un modo già pensato per risolvere alcuni problemi di progettazione del software. Probabilmente ti sei già imbattuto in modelli di progettazione come Factory Method, Abstract Factory, Builder, Prototype, Singleton e forse altri. Vengono utilizzati semplicemente per scrivere codice, creare classi e pianificare il modo in cui interagiscono. I modelli architettonici vengono utilizzati a un livello di astrazione più elevato, quando si pianifica l'interazione dell'utente dell'applicazione con il server, i dati e altri componenti del progetto. Diamo una rapida occhiata ad alcuni modelli e a come utilizzarli.

Architettura client-server

Dal nome si ha l'impressione che tutto su questo argomento sia semplice e chiaro. Ma chiariamo alcuni punti affinché quando inizierete a studiare il condizionale Primavera, capiate esattamente di cosa stiamo parlando. Diciamo che hai scritto una chat e tu e il tuo amico iniziate a usarla. Qui è possibile una semplice opzione: vi inviate un messaggio direttamente via Internet utilizzando gli indirizzi IP che conoscete: Parte 2. Parliamo un po' dell'architettura software - 2all'inizio può sembrare che tutto funzioni bene, finché non appare un altro vostro amico con la domanda: "Perché non non mi aggiungi alla tua chat?" E quando decidi di aggiungere un amico comune alla chat, ti trovi di fronte a un problema architettonico: ogni utente della chat deve aggiornare le informazioni sul numero di utenti, aggiungere l'indirizzo IP del nuovo utente. E quando si invia un messaggio, deve essere consegnato a tutti i partecipanti. Questi sono i problemi più evidenti che si presenteranno. Molti più problemi saranno nascosti nel codice stesso. Per evitarli, è necessario utilizzare un server che memorizzi tutte le informazioni sugli utenti e conosca i loro indirizzi. Il messaggio dovrà solo essere inviato al server. E lui, a sua volta, invierà il messaggio a tutti i destinatari. Quando decidi di aggiungere un lato server alla tua chat, inizierai a costruire un'architettura client-server.

Componenti dell'architettura client-server

Scopriamo cosa è. L'architettura client-server è un modello di progettazione, la base per la creazione di applicazioni web. Questa architettura è composta da tre componenti: Parte 2. Parliamo un po' dell'architettura software - 3
  1. Client - dal nome risulta chiaro che si tratta di un utente di un servizio (applicazione web) che contatta il server per ottenere alcune informazioni.

  2. Il server è il luogo in cui si trova la tua applicazione web o la sua parte server. Possiede le informazioni necessarie sugli utenti o può richiederle. Inoltre, quando un client contatta, il server restituisce le informazioni richieste.

  3. La rete è semplice: garantisce lo scambio di informazioni tra il client e il server.

Il server può elaborare un numero enorme di richieste da diversi utenti. Cioè, possono esserci molti client e, se hanno bisogno di scambiare informazioni tra loro, ciò dovrà essere fatto tramite il server. Pertanto, il server riceve un'altra funzione aggiuntiva: il controllo del traffico. Se parliamo della chat multiutente che abbiamo creato, l'intero codice del programma sarà composto da due moduli:
  • client - contiene un'interfaccia grafica per l'autorizzazione, l'invio/ricezione di messaggi;

  • lato server: un'applicazione Web ospitata su un server che riceve messaggi dagli utenti, li elabora e quindi li invia ai destinatari.

Parte 2. Parliamo un po' dell'architettura software - 4Quando vogliamo cercare informazioni utili (o meno utili) su Internet, apriamo un browser, inseriamo una query nella barra di ricerca e in risposta riceviamo informazioni dal motore di ricerca. In questa catena, il browser è il nostro cliente. Invia una richiesta con le informazioni su ciò che stiamo cercando al server. Il server elabora la richiesta, trova i risultati più rilevanti, li impacchetta in un formato comprensibile al browser (client) e li rimanda indietro. In servizi complessi come i motori di ricerca possono esserci molti server. Ad esempio, un server di autorizzazione, un server per la ricerca di informazioni, un server per generare una risposta. Ma il cliente di questo non ne sa nulla: per lui il server è qualcosa di unificato. Il client conosce solo il punto di ingresso, ovvero l'indirizzo del server a cui deve inviare la richiesta. Ricordiamo l'applicazione che abbiamo esaminato nella parte precedente : per monitorare in tempo reale la temperatura media dell'aria in tutti i paesi. La sua architettura sarà simile a questa: Parte 2. Parliamo un po' dell'architettura software - 5La nostra applicazione si trova su un server. Diciamo che ogni cinque secondi invia richieste ai server dei centri idrometeorologici locali, riceve da loro informazioni sulla temperatura in un particolare paese e memorizza queste informazioni. Quando un cliente ci contatta con la richiesta di "vedere l'attuale temperatura dell'aria nel mondo", restituiamo le ultime informazioni archiviate, ordinate per paese. Pertanto, la nostra applicazione è sia un server (quando elabora le richieste degli utenti) che un client (quando riceve informazioni da altri server).
Importante: il concetto di server non riguarda un computer specifico, ma la relazione tra gli abbonati alla rete .
Una semplice architettura client-server viene utilizzata molto raramente e solo per applicazioni molto semplici. Per progetti davvero grandi e complessi vengono utilizzate diverse tipologie di architetture, con le quali acquisirai più familiarità in futuro. Consideriamo ora un modello molto simile al modello client-server.

Architettura a tre livelli

Si tratta di un modello architetturale che introduce un terzo attore: il data warehouse . Quando si utilizza questo modello, i tre livelli sono solitamente chiamati livelli: Parte 2. Parliamo un po' dell'architettura software - 6
  1. Il livello client è l'interfaccia utente. Potrebbe trattarsi di un browser Web a cui vengono inviate le pagine HTML o di un'applicazione GUI scritta utilizzando JavaFX. La cosa principale è che con il suo aiuto l'utente può inviare richieste al server ed elaborare le sue risposte.

  2. Il livello logico è il server su cui vengono elaborate le richieste/risposte. Viene spesso chiamato anche livello server. Qui si svolgono anche tutte le operazioni logiche: calcoli matematici, operazioni sui dati, chiamate ad altri servizi o memorizzazione dei dati.

  3. Il livello dati è il server del database: il nostro server vi accede. Questo livello memorizza tutte le informazioni necessarie che l'applicazione utilizza durante il funzionamento.

Pertanto, il nostro server si assume tutti gli obblighi di accesso ai dati, senza consentire all'utente di accedervi direttamente.

Vantaggi di un'architettura a tre livelli

Utilizzando tale architettura, otteniamo numerosi vantaggi, tra cui:
  1. La capacità di creare protezione contro le iniezioni SQL è un attacco al server in cui viene trasmesso il codice SQL e quando questo codice viene eseguito, l'aggressore può influenzare il nostro database.

  2. Delimitazione dei dati ai quali vogliamo regolare l'accesso degli utenti.

  3. Possibilità di modificare i dati prima di inviarli al cliente.

  4. Scalabilità: la capacità di espandere la nostra applicazione su più server che utilizzeranno lo stesso database.

  5. Meno requisiti per la qualità della connessione dell'utente. Quando generiamo una risposta sul server, spesso prendiamo molte informazioni diverse dal database, le formattiamo lasciando solo ciò di cui l'utente ha bisogno. In questo modo riduciamo la quantità di informazioni che inviamo in risposta al cliente.

Quanto spesso dovresti usare i modelli architettonici?

Se hai familiarità, ad esempio, con il modello di progettazione Factory Method , probabilmente ti sarai chiesto quando utilizzarlo. A volte è difficile decidere cosa fare: creare un oggetto utilizzando l'operatore new o utilizzando un metodo factory. Ma col tempo arriva la comprensione. Con i modelli architettonici le cose sono leggermente diverse. I framework aziendali sono progettati per consentire al programmatore di utilizzarli per creare un progetto basato su un modello generalmente accettato. Pertanto, prima di apprendere Spring Framework, devi assolutamente capire cosa sono l'architettura client-server, l'architettura a tre livelli e l'architettura MVC. Non preoccuparti: dell'architettura MVC parleremo più avanti. Parte 1. Cosa devi sapere prima di imparare Spring e JavaEE Parte 3. Protocolli HTTP/HTTPS Parte 4. Nozioni di base su Maven Parte 5. Servlet. Scrittura di una semplice applicazione web Parte 6. Contenitori servlet Parte 7. Presentazione del pattern MVC (Model-View-Controller) Parte 8. Scrittura di una piccola applicazione spring-boot
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION