JavaRush /Java-Blog /Random-DE /Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur...

Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen

Veröffentlicht in der Gruppe Random-DE
Dieses Material ist Teil der Reihe „ Einführung in die Unternehmensentwicklung “. Der erste Teil über das Netzwerk ist hier . Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 1Softwarearchitektur ist die Struktur, auf deren Grundlage eine Anwendung erstellt wird und die Module und Komponenten des gesamten Programms interagieren. Programmierer haben schon sehr lange versucht, gute Architektur zu schaffen, daher ist es nicht verwunderlich, dass wir mittlerweile viele Architekturmuster kennen. Sie müssen sie verstehen: Wenn Sie eine Webanwendung schreiben, wird das Problem der Architektur akut, da sie mehr Komponenten und Module enthält als in einer regulären Anwendung. Ein Architekturmuster ist eine bereits durchdachte Möglichkeit, ein Software-Designproblem zu lösen. Sie sind wahrscheinlich bereits auf Designmuster wie Factory Method, Abstract Factory, Builder, Prototype, Singleton und vielleicht andere gestoßen. Sie werden verwendet, um einfach Code zu schreiben, Klassen zu erstellen und zu planen, wie sie interagieren. Architekturmuster werden auf einer höheren Abstraktionsebene verwendet – bei der Planung der Interaktion des Anwendungsbenutzers mit dem Server, Daten und anderen Komponenten des Projekts. Werfen wir einen kurzen Blick auf einige Vorlagen und deren Verwendung.

Client-Server-Architektur

Schon der Name vermittelt den Eindruck, dass bei diesem Thema alles einfach und klar ist. Aber lassen Sie uns einige Punkte klarstellen, damit Sie, wenn Sie mit dem Studium des bedingten Frühlings beginnen, genau verstehen, wovon wir sprechen. Nehmen wir an, Sie haben einen Chat geschrieben und Sie und Ihr Freund beginnen, ihn zu nutzen. Hier ist eine einfache Möglichkeit möglich: Sie senden sich gegenseitig direkt über das Internet eine Nachricht mit Ihnen bekannten IP-Adressen: Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 2Zunächst scheint es, als ob alles gut funktioniert, bis ein anderer Freund von Ihnen mit der Frage auftaucht: „Warum, Don?“ „Fügen Sie mich nicht zu Ihrem Chat hinzu?“ Und wenn Sie sich entscheiden, einen gemeinsamen Freund zum Chat hinzuzufügen, stehen Sie vor einem Architekturproblem: Jeder Chat-Benutzer muss Informationen über die Anzahl der Benutzer aktualisieren und die IP-Adresse des neuen Benutzers hinzufügen. Und wenn eine Nachricht gesendet wird, muss sie allen Teilnehmern zugestellt werden. Dies sind die offensichtlichsten Probleme, die auftreten werden. Im Code selbst werden noch viel mehr Probleme verborgen sein. Um sie zu vermeiden, müssen Sie einen Server verwenden , der alle Informationen über Benutzer speichert und deren Adressen kennt. Die Nachricht muss nur an den Server gesendet werden. Und er wiederum sendet die Nachricht an alle Empfänger. Wenn Sie sich entscheiden, Ihrem Chat eine Serverseite hinzuzufügen, beginnen Sie mit dem Aufbau einer Client-Server-Architektur.

Komponenten der Client-Server-Architektur

Lasst uns herausfinden, was sie ist. Die Client-Server-Architektur ist ein Entwurfsmuster, die Grundlage für die Erstellung von Webanwendungen. Diese Architektur besteht aus drei Komponenten: Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 3
  1. Client – ​​aus dem Namen geht hervor, dass es sich um einen Benutzer eines Dienstes (Webanwendung) handelt, der den Server kontaktiert, um Informationen zu erhalten.

  2. Server ist der Ort, an dem sich Ihre Webanwendung oder ihr Serverteil befindet. Er besitzt die notwendigen Informationen über Benutzer oder kann diese anfordern. Wenn ein Client Kontakt aufnimmt, gibt der Server außerdem die angeforderten Informationen zurück.

  3. Das Netzwerk ist einfach: Es gewährleistet den Informationsaustausch zwischen Client und Server.

Der Server kann eine große Anzahl von Anfragen verschiedener Benutzer verarbeiten. Das heißt, es kann viele Clients geben, und wenn sie Informationen untereinander austauschen müssen, muss dies über den Server erfolgen. Somit erhält der Server eine weitere Zusatzfunktion – die Verkehrskontrolle. Wenn wir über den von uns erstellten Mehrbenutzer-Chat sprechen, besteht der gesamte Programmcode aus zwei Modulen:
  • Client – ​​enthält eine grafische Schnittstelle zur Autorisierung und zum Senden/Empfangen von Nachrichten;

  • serverseitig – eine Webanwendung, die auf einem Server gehostet wird und Nachrichten von Benutzern empfängt, verarbeitet und dann an Empfänger sendet.

Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 4Wenn wir im Internet nach nützlichen (oder weniger nützlichen) Informationen suchen möchten, öffnen wir einen Browser, geben eine Suchanfrage in die Suchleiste ein und erhalten als Antwort Informationen von der Suchmaschine. In dieser Kette ist der Browser unser Client. Es sendet eine Anfrage mit Informationen darüber, wonach wir suchen, an den Server. Der Server verarbeitet die Anfrage, findet die relevantesten Ergebnisse, verpackt sie in ein für den Browser (Client) verständliches Format und sendet sie zurück. In so komplexen Diensten wie Suchmaschinen kann es viele Server geben. Zum Beispiel ein Autorisierungsserver, ein Server zum Suchen nach Informationen, ein Server zum Generieren einer Antwort. Davon weiß der Kunde aber nichts: Für ihn ist der Server etwas Einheitliches. Der Client kennt nur den Einstiegspunkt, also die Adresse des Servers, an den er die Anfrage senden muss. Erinnern wir uns an die Anwendung, die wir im vorherigen Teil betrachtet haben – zur Überwachung der durchschnittlichen Lufttemperatur in allen Ländern in Echtzeit. Seine Architektur wird in etwa so aussehen: Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 5Unsere Anwendung befindet sich auf einem Server. Nehmen wir an, es sendet alle fünf Sekunden Anfragen an die Server lokaler hydrometeorologischer Zentren, empfängt von ihnen Informationen über die Temperatur in einem bestimmten Land und speichert diese Informationen. Wenn sich ein Kunde mit der Anfrage an uns wendet, „die aktuelle Lufttemperatur in der Welt zu sehen“, senden wir die neuesten gespeicherten Informationen, sortiert nach Land, zurück. Somit ist unsere Anwendung sowohl ein Server (wenn sie Benutzeranfragen verarbeitet) als auch ein Client (wenn sie Informationen von anderen Servern empfängt).
Wichtig: Beim Serverbegriff geht es nicht um einen bestimmten Computer, sondern um die Beziehung zwischen Netzwerkteilnehmern .
Eine einfache Client-Server-Architektur wird sehr selten und nur für sehr einfache Anwendungen verwendet. Bei wirklich großen und komplexen Projekten kommen unterschiedliche Arten von Architekturen zum Einsatz, mit denen Sie in Zukunft noch vertrauter werden. Schauen wir uns nun ein Modell an, das einem Client-Server-Modell sehr ähnlich ist.

Dreistufige Architektur

Dies ist ein Architekturmuster, das einen dritten Akteur einführt: das Data Warehouse . Bei Verwendung dieses Musters werden die drei Ebenen üblicherweise als Ebenen bezeichnet: Teil 2. Lassen Sie uns ein wenig über Softwarearchitektur sprechen – 6
  1. Die Client-Schicht ist die Benutzeroberfläche. Dies kann ein Webbrowser sein, an den die HTML-Seiten gesendet werden, oder eine mit JavaFX geschriebene GUI-Anwendung. Die Hauptsache ist, dass der Benutzer mit seiner Hilfe Anfragen an den Server senden und dessen Antworten verarbeiten kann.

  2. Die Logikschicht ist der Server, auf dem Anfragen/Antworten verarbeitet werden. Sie wird oft auch als Serverschicht bezeichnet. Hier finden auch alle logischen Operationen statt: mathematische Berechnungen, Datenoperationen, Aufrufe anderer Dienste oder Datenspeicherung.

  3. Die Datenschicht ist der Datenbankserver: Unser Server greift darauf zu. Diese Schicht speichert alle notwendigen Informationen, die die Anwendung während des Betriebs verwendet.

Somit übernimmt unser Server alle Verpflichtungen zum Zugriff auf die Daten, ohne dass der Benutzer direkt darauf zugreifen kann.

Vorteile einer dreistufigen Architektur

Durch die Verwendung einer solchen Architektur erhalten wir viele Vorteile, darunter:
  1. Die Möglichkeit, einen Schutz gegen SQL-Injections aufzubauen, ist ein Angriff auf den Server, auf dem SQL-Code übertragen wird, und wenn dieser Code ausgeführt wird, kann der Angreifer unsere Datenbank beeinträchtigen.

  2. Abgrenzung der Daten, zu denen wir den Nutzerzugriff regeln wollen.

  3. Möglichkeit, Daten zu ändern, bevor sie an den Kunden gesendet werden.

  4. Skalierbarkeit – die Möglichkeit, unsere Anwendung auf mehrere Server zu erweitern, die dieselbe Datenbank verwenden.

  5. Geringere Anforderungen an die Qualität der Benutzerverbindung. Wenn wir eine Antwort auf dem Server generieren, nehmen wir oft viele verschiedene Informationen aus der Datenbank, formatieren sie und lassen nur das übrig, was der Benutzer benötigt. Auf diese Weise reduzieren wir die Menge an Informationen, die wir als Antwort an den Kunden senden.

Wie oft sollten Sie Architekturmuster verwenden?

Wenn Sie beispielsweise mit dem Entwurfsmuster der Factory-Methode vertraut sind , haben Sie sich wahrscheinlich gefragt, wann Sie es verwenden sollten. Manchmal ist es schwierig zu entscheiden, was zu tun ist: ein Objekt mit dem neuen Operator oder einer Factory-Methode erstellen. Aber mit der Zeit stellt sich das Verständnis ein. Bei architektonischen Mustern sieht die Sache etwas anders aus. Enterprise-Frameworks sind so konzipiert, dass der Programmierer damit ein Projekt erstellen kann, das auf einem allgemein akzeptierten Muster basiert. Bevor Sie das Spring Framework erlernen, müssen Sie daher unbedingt verstehen, was Client-Server-Architektur, dreistufige Architektur und MVC-Architektur sind. Keine Sorge: Über die MVC-Architektur sprechen wir später. Teil 1. Was Sie wissen müssen, bevor Sie Spring und JavaEE lernen. Teil 3. HTTP/HTTPS-Protokolle. Teil 4. Maven-Grundlagen. Teil 5. Servlets. Schreiben einer einfachen Webanwendung Teil 6. Servlet-Container Teil 7. Einführung in das MVC-Muster (Model-View-Controller) Teil 8. Schreiben einer kleinen Spring-Boot-Anwendung
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION