Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m290_guko:learningunits:lu15:theorie:a_backend_server [2025/12/07 21:17] – gkoch | modul:m290_guko:learningunits:lu15:theorie:a_backend_server [2025/12/07 21:37] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 7: | Zeile 7: | ||
| * Sie verstehen, warum eine Webapplikation besser auf einem **3-Tier-Modell** basiert als auf einem direkten Datenbankzugriff. | * Sie verstehen, warum eine Webapplikation besser auf einem **3-Tier-Modell** basiert als auf einem direkten Datenbankzugriff. | ||
| - | ===== 3-Tier-Webarchitektur ===== | + | ===== 3-Tier-Webarchitektur |
| Die 3-Tier-Architektur teilt eine Webapplikation in drei Schichten: | Die 3-Tier-Architektur teilt eine Webapplikation in drei Schichten: | ||
| - **Presentation Layer (Frontend)** – Oberfläche im Browser oder in einer App | - **Presentation Layer (Frontend)** – Oberfläche im Browser oder in einer App | ||
| - | - **Application Layer (Backend)** – Geschäftslogik, Regeln, Validierung | + | - **Application Layer (Backend)** – Logik, Regeln, Validierung |
| - **Data Layer (Datenbank)** – Speichern und Verwalten der Daten | - **Data Layer (Datenbank)** – Speichern und Verwalten der Daten | ||
| - | {{:modul:m290: | + | {{:modul:m290_guko: |
| Jede Schicht hat eine klar definierte Aufgabe und spricht nur mit der direkt angrenzenden Schicht. | Jede Schicht hat eine klar definierte Aufgabe und spricht nur mit der direkt angrenzenden Schicht. | ||
| - | Das bringt Ihnen: | + | Vorteile von einer 3-Tier-Architektur: |
| * bessere **Sicherheit** | * bessere **Sicherheit** | ||
| Zeile 27: | Zeile 27: | ||
| ===== Wichtige Begriffe im Node.js-Ökosystem ===== | ===== Wichtige Begriffe im Node.js-Ökosystem ===== | ||
| + | <WRAP round center box> | ||
| ^ Begriff | ^ Begriff | ||
| | **Node.js** | | **Node.js** | ||
| - | | **npm** | + | | **npm** |
| | **Express** | | **Express** | ||
| | **nodemon** | | **nodemon** | ||
| | **Port** | | **Port** | ||
| | **API** | | **API** | ||
| + | </ | ||
| ===== Warum überhaupt ein Backend-Server? | ===== Warum überhaupt ein Backend-Server? | ||
| - | Bis jetzt haben Sie im Modul M290: | + | Bis jetzt haben Sie im Modul M290 vor allem mit der Datenbank gearbeitet: |
| - | * direkt | + | * Sie haben in **WebStorm** mit dem Datenbank-Plugin gearbeitet. |
| - | * SQL-Statements | + | |
| + | | ||
| - | Das ist ideal zum Lernen von SQL – aber für eine echte Webapplikation **nicht | + | Für eine **richtige |
| - | | + | ==== Was wäre, wenn der Browser direkt auf die Datenbank zugreifen würde? ==== |
| - | * Die Datenbank soll **geschützt** im Hintergrund laufen. | + | |
| - | * Zwischen Browser und Datenbank | + | Stellen Sie sich vor: |
| + | |||
| + | | ||
| + | * Jede Benutzerin / jeder Benutzer hätte direkten Zugriff auf Tabellen und könnte eigene SQL-Befehle schicken. | ||
| + | |||
| + | Das führt zu mehreren Problemen: | ||
| + | |||
| + | | ||
| + | * **Keine Kontrolle über die Logik**: Es gäbe keine zentrale Stelle, die prüft, ob eine Aktion erlaubt ist (z.B. darf ein:e Lernende:r wirklich Noten ändern?). | ||
| + | * **Schwierige Wartung**: Wenn sich die Struktur der Datenbank | ||
| + | | ||
| + | |||
| + | |||
| + | ==== Die Lösung: eine zusätzliche | ||
| + | |||
| + | Statt den Browser direkt mit der Datenbank sprechen zu lassen, schalten wir eine **Zwischenschicht** dazwischen: | ||
| + | den **Backend-Server**. | ||
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| **3-Schichten-Architektur in unserem Modul** | **3-Schichten-Architektur in unserem Modul** | ||
| - | Client (Browser / App) | + | Client (Browser / Postman) |
| ⇄ **Backend-Server (Node.js/ | ⇄ **Backend-Server (Node.js/ | ||
| ⇄ Datenbank (MySQL) | ⇄ Datenbank (MySQL) | ||
| </ | </ | ||
| - | Vorteile des Backend-Servers: | + | * Der **Client** (z.B. Browser oder Postman) sendet **HTTP-Anfragen** (z.B. '' |
| + | * Der **Backend-Server**: | ||
| + | - nimmt die Anfrage entgegen, | ||
| + | - prüft die Daten, | ||
| + | - entscheidet, | ||
| + | - führt die passenden **SQL-Befehle** auf der Datenbank aus, | ||
| + | - formatiert das Ergebnis (z.B. als JSON) und sendet es zurück. | ||
| + | * Die **Datenbank** kennt nur den Server und führt dessen SQL-Kommandos aus – aber kein Client greift direkt darauf zu. | ||
| + | |||
| + | |||
| + | ==== Vorteile des Backend-Servers | ||
| + | |||
| + | **1. Sicherheit** | ||
| + | |||
| + | * Die Datenbank ist nicht direkt aus dem Internet erreichbar. | ||
| + | * Nur der Backend-Server hat Zugang zur Datenbank (z.B. über einen eigenen '' | ||
| + | * Der Server entscheidet: | ||
| + | - welche SQL-Befehle erlaubt sind, | ||
| + | - welche Daten angezeigt oder verändert werden dürfen. | ||
| - | | + | **2. Businesslogik & Validierung** |
| - | Die Datenbank ist nicht direkt aus dem Internet erreichbar. Der Server entscheidet, | + | |
| - | * **Businesslogik & Validierung** | + | |
| - | Regeln (z.B. '' | + | |
| - | * **Mehrere Frontends möglich** | + | |
| - | Dieselbe API kann von einer Website, einer Mobile-App oder einem anderen Service genutzt werden. | + | |
| - | * **Wartbarkeit** | + | |
| - | Datenbank, Backend-Logik und Frontend können unabhängig voneinander angepasst werden. | + | |
| + | * Fachliche Regeln werden im Backend umgesetzt, z.B.: | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | * Der Browser darf nicht über eigene SQL-Befehle mit der Datenbank kommunizieren, | ||
| + | (z.B. '' | ||
| + | * So ist klar geregelt, was das System darf und was nicht. | ||
| - | ===== Kein Website-Frontend, | + | **3. Einheitliche Schnittstelle (API)** |
| - | Wichtig für diese Learning Unit: | + | * Der Backend-Server stellt eine **API** bereit (z.B. ''/ |
| + | * Diese API kann von verschiedenen Clients genutzt werden: | ||
| + | - einer Webseite, | ||
| + | - einer Mobile-App, | ||
| + | - Tools wie Postman. | ||
| + | * Die Datenbank-Struktur kann sich im Hintergrund ändern – die API kann stabil bleiben. | ||
| - | | + | **4. Bessere Wartbarkeit & Erweiterbarkeit** |
| - | | + | |
| - | * Der Browser dient hier nur als **Client**, der eine Anfrage schickt und die Antwort (Text oder JSON) anzeigt. | + | |
| - | In den nächsten Seiten erstellen Sie: | + | * Änderungen an der Datenbank (z.B. neue Tabelle, anderes Feld) werden zuerst im Backend angepasst. |
| + | * Frontends müssen nur die API kennen, nicht die Details der Datenbank. | ||
| + | * Neue Funktionen (z.B. zusätzlicher Filter, neue Berechnung) können im Backend ergänzt werden, | ||
| + | ohne dass direkt SQL im Frontend geändert werden muss. | ||
| - | * ein neues Node.js/ | + | In dieser Phase des Moduls gehen wir den nächsten Schritt: |
| - | * Ihren ersten kleinen Backend-Server, | + | |
| - | * und verstehen | + | |
| + | * Wir schreiben **keine SQL-Befehle, | ||
| + | * sondern wir bauen einen **Backend-Server mit Node.js/ | ||
| + | * Im Unterricht verwenden wir dazu zunächst den Browser und **Postman** als Client, später könnten auch echte Frontends (Web oder Mobile) diese API nutzen. | ||