Ajax Datenaustausch?
Bin neu in der Web Entwicklung und gerade bei Ajax und jquery angelangt, da hab ich mir jetzt aber folgende Frage gestellt: Ajax kommuniziert ja mit dem Server via Datenaustausch... Sagen wir mal, man will Berechnungen ausführen. Da könnte man ja einerseits ein Skript beim client laufen lassen(via async) oder das halt über den server berechnen lassen und dem client dann wieder zukommen lassen... Wann macht jetzt aber was Sinn?Gibt es da nh Faust Regel ab welchem Rechenaufwand man was nimmt ?
1 Antwort
JavaScript sollte vorwiegend für View-Logik (Animationen, Elemente dynamisch verschieben, einfache Prevalidation von Feldern, u.ä.) eingesetzt werden.
Wenn es darum geht, Anwendungslogik zu implementieren, ist diese in der Regel im Backend besser aufgehoben. Gerade wenn es um Datensicherheit geht, die jeweilige Berechnung also unverfälscht ablaufen muss, sollte sie im Backend vorgenommen werden. Klassische Beispiele wären bei einem Shopsystem (Warenkorb/Berechnung des Preises) oder einem Login zu finden. Würden die Operationen im Frontend erfolgen, wären sie leicht manipulierbar.
Ein weiterer Aspekt ist Datenpersistenz. Einige Daten (z.B. Suchergebnisse auf bestimmte Queries, Prescaling von Bildern, ...) können serverseitig gecacht werden, da sie für alle Nutzer gleich sind. Sie müssen meist eh aus dem Backend (bspw. einer Datenbank) geholt werden, Filter- oder Sortierregeln kann man dort also auch gleich vornehmen.
Ja, in dem Fall kannst du es machen. Um nochmal zum Thema "Shop" zu kommen: Da kannst du für die reine Web-Ansicht auch den Preis per Javascript berechnen lassen. Wenn der Warenkorb abgeschickt wird, musst du aber natürlich auf dem Server den tatsächlichen Preis berechnen lassen. Wir machen es sogar so, dass wir die beiden Preise vergleichen und bei einer Abweichung die Bestellung abbrechen.
Mir fällt jetzt spontan kein Beispiel ein, wo es vom Rechenaufwand her Sinn macht, das auf dem Server berechnen zu lassen. Es gibt ja z.B. auch Excel als Web-Version, wo alle Berechnungen in Browser gemacht werden. Das läuft trotzdem schnell. Oder vielleicht kennst du auch "Scratch". Das ist eine Programmierumgebung, mit der Kinder programmieren lernen können. Das läuft komplett in JavaScript und es gibt manche, die damit einfache 3D-Spiele bauen
Ich meinte jetzt eigentlich Dinge, die rein vom Rechenaufwand zu aufwändig wären. Bei einer Volltextsuche über mehrere Seiten fehlen dem Client natürlich die Daten. Das Gleiche gilt auch z.B. für Tabellen, wo die Daten aus einer Datenbank geladen werden. Da macht es Sinn, die Daten per Ajax nachzuladen.
Alles klar, über die Sicherheit hatte ich noch garnicht nachgedacht... Was wenn man jetzt zb. Nh BMI Rechner programmiert, da hat man ja keine sensiblen Daten, also wäre es doch effektiver dies beim client zu berechnen, oder?