it-swarm.com.de

Was sind die Unterschiede zwischen serverseitiger und clientseitiger Programmierung?

Ich habe Fragen gesehen (hauptsächlich zum Stapelüberlauf), denen dieses Grundwissen fehlt. Ziel dieser Frage ist es, denjenigen, die sie suchen, und denjenigen, die darauf verweisen, gute Informationen zu liefern.

Was sind im Zusammenhang mit der Webprogrammierung die Unterschiede zwischen der serverseitigen Programmierung und der clientseitigen Programmierung? Welche Sprachen gehören zu welcher und wann verwenden Sie jede von ihnen?

108
Madara's Ghost

Hintergrund

Bei der Webentwicklung dreht sich alles um Kommunikation. In diesem Fall Kommunikation zwischen zwei (2) Parteien über das HTTP-Protokoll:

  • Der Server - Diese Partei ist für die Bereitstellung von Seiten verantwortlich.
  • Der Client - Diese Partei Anfragen Seiten vom Server und zeigt sie dem Benutzer an. In den meisten Fällen ist der Client ein Webbrowser .
    • Der Benutzer - Der Benutzer verwendet der Client um im Internet zu surfen, Formulare auszufüllen, Videos online anzusehen usw.

Die Programmierung jeder Seite bezieht sich auf Code, der auf dem bestimmten Computer, dem Server oder dem Client ausgeführt wird.

Grundlegendes Beispiel

  1. Der Benutzer öffnet seinen Webbrowser (den Client ).
  2. Der Benutzer navigiert zu http://google.com .
  3. Der Client (im Namen des Benutzers ) sendet eine Anfrage an http://google.com (den Server ) für ihre Homepage.
  4. Der Server bestätigt dann die Anfrage und antwortet dem Client mit einigen Metadaten (genannt Header), gefolgt von die Quelle der Seite.
  5. Der Client empfängt dann die Quelle der Seite und rendert sie in eine von Menschen sichtbare Website.
  6. Die Benutzertypen  Stack Overflow in die Suchleiste und drückt Enter
  7. Der Client sendet diese Daten an den Server .
  8. Der Server verarbeitet diese Daten und antwortet mit einer Seite, die den Suchergebnissen entspricht.
  9. Der Client rendert diese Seite erneut, damit der Benutzer sie anzeigen kann .

Programmierung

Serverseitige Programmierung

Serverseitige Programmierung ist der allgemeine Name für die Arten von Programmen, die auf dem Server ausgeführt werden.

Verwendet

  • Benutzereingaben verarbeiten.
  • Kompiliert Seiten.
  • Webanwendungen strukturieren.
  • Interagiere mit permanentem Speicher (SQL, Dateien).

Beispielsprachen

  • PHP
  • Python
  • ASP.Net in C #, C++ oder Visual Basic.
  • Fast jede Sprache (C++, C #, Java). Diese wurden nicht speziell für diese Aufgabe entwickelt, sondern werden heute häufig für Webdienste auf Anwendungsebene verwendet.

Clientseitige Programmierung

Ähnlich wie auf der Serverseite ist die clientseitige Programmierung der Name für alle Programme, die auf dem Client ausgeführt werden.

Verwendet

  • Erstellen Sie interaktive Webseiten.
  • Machen Sie Dinge dynamisch auf der Webseite.
  • Interagieren Sie mit temporärem Speicher und lokalem Speicher (Cookies, localStorage).
  • Senden Sie Anforderungen an den Server und rufen Sie Daten von diesem ab.
  • Stellen Sie einen Remote-Service für clientseitige Anwendungen bereit, z. B. Softwareregistrierung, Bereitstellung von Inhalten oder Remote-Multiplayer-Spiele.

Beispielsprachen

  • JavaScript (hauptsächlich)
  • HTML *
  • CSS *
  • Jede Sprache, die auf einem Clientgerät ausgeführt wird, das mit einem Remotedienst interagiert, ist eine clientseitige Sprache.

* HTML und CSS sind an sich keine "Programmiersprachen". Dies ist eine Markup-Syntax, mit der der Client die Seite für den Benutzer rendert. .

125
Madara's Ghost

In Laienwörtern :

Hier werde ich nur über Webprogrammierung sprechen.

Client-Seite Programmierung hat hauptsächlich mit der Benutzeroberfläche zu tun, mit der der Benutzer interagiert. In der Webentwicklung ist es der Browser auf dem Computer des Benutzers, der den Code ausführt, und dies geschieht hauptsächlich in Javascript, Flash, usw. Dieser Code muss in einer Vielzahl von Browsern ausgeführt werden.

Seine Hauptaufgaben sind :

  • überprüfung der Eingabe (Die Überprüfung muss auf dem Server erfolgen. Eine redundante Überprüfung im Client kann verwendet werden, um Serveraufrufe zu vermeiden, wenn die Geschwindigkeit sehr kritisch ist.)
  • animation
  • bearbeiten von UI-Elementen
  • stile anwenden
  • einige Berechnungen werden durchgeführt, wenn die Seite nicht so oft aktualisiert werden soll

Die verantwortliche Person der Frontend-Programmierung muss wissen:

  • javascript
  • cSS
  • HTML
  • grundlegendes Grafikdesign
  • Ajax
  • vielleicht Flash
  • einige Javascript-Bibliotheken von Drittanbietern wie JQuery
  • UI-Design
  • informationsdesign usw.

Serverseite Programmierung hat mit der Erzeugung dynamischer Inhalte zu tun. Es läuft auf Servern. Viele dieser Server sind "kopflos". Die meisten Webseiten sind nicht statisch, sondern durchsuchen eine Datenbank, um dem Benutzer aktualisierte personalisierte Informationen anzuzeigen. Diese Seite interagiert mit dem Backend, beispielsweise mit der Datenbank.

Diese Programmierung kann in vielen Sprachen durchgeführt werden:

  • PHP
  • Java und jsp
  • asp
  • Perl
  • Python
  • Ruby on Rails usw.

Dieser Code hat zu tun mit:

  • Datenbank abfragen
  • Codieren Sie die Daten in HTML
  • Fügen Sie Informationen in die Datenbank ein und aktualisieren Sie sie
  • Geschäftsregeln und Berechnungen

Die für die serverseitige Programmierung verantwortliche Person muss Folgendes wissen:

  • einige der oben genannten Sprachen
  • HTML
  • SQL,
  • linux/Unix Shell-Scripting
  • OOP
  • geschäftsregeln usw.
27

Andere Antworten konzentrierten sich auf was ist clientseitige und serverseitige Programmierung: Welche Sprachen werden meistens verwendet, welche Aufgaben müssen ausgeführt werden usw.

Dies ist absolut richtig, aber ich vermisse ein wenig Konzentration auf was sind die Unterschiede zwischen beiden Arten der Programmierung im Kontext der Webprogrammierung. Lassen Sie mich versuchen, das anzusprechen.

Sicherheit und Berechtigungen

Bei der clientseitigen Programmierung haben Sie aus Sicherheitsgründen keinen Zugriff auf das gesamte System. Der Benutzer vertraut nicht unbedingt jedem einzelnen Code, der aus dem Internet heruntergeladen und auf seinem Computer ausgeführt wird. Dies ist das Hauptentwurfsziel der clientseitigen Umgebung (Browser und JavaScript-Engine): Bereitstellung einer isolierten Umgebung Hier kann Client-Code ausgeführt werden, aber nicht auf etwas außerhalb des zulässigen Bereichs zugreifen.

Bei der serverseitigen Programmierung empfiehlt es sich, auch den Zugriff jeder Anwendung auf das zugrunde liegende System zu beschränken. Dies wird Ihnen jedoch viel weniger auferlegt, da Sie oder Ihr Unternehmen letztendlich die Kontrolle über dieses System haben. Dieses "isolierte Käfig" -Design ist nicht in die serverseitigen Programmiertools und -sprachen integriert, wird jedoch durch die Installation eingerichtet (unter Verwendung dedizierter Benutzer mit eingeschränkten Berechtigungen, Auswahl von Ports, die erforderlich sind oder nicht erforderlich sind) Root-Berechtigungen usw.).

Bereitstellung und Plattform

Bei der serverseitigen Programmierung muss die Bereitstellung von außerhalb Ihres Codes mit einem Tool erfolgen (auch wenn es sich um make install Oder git clone Handelt). Diese Bereitstellung erfolgt normalerweise manuell - oder um Zumindest wird erwartet, dass dies halbüberwacht geschieht. Das System (dh das Betriebssystem), auf dem Sie bereitstellen, ist normalerweise auf mehreren Computern einheitlich, kann jedoch stark an Ihre Anforderungen angepasst werden.

Bei der clientseitigen Programmierung erfolgt die Bereitstellung über Ihren serverseitigen Code, der die Clients automatisch und ohne Aufsicht bedient. Das zugrunde liegende System (dh hauptsächlich der Browser) kann auf einer viel größeren Anzahl von Computern sehr unterschiedlich sein. Um eine Bereitstellung überhaupt möglich zu machen, müssen Standards beibehalten werden, und es gibt einen viel stärkeren Trend zu einer einzigen Sprache und Umgebung.

Aus diesem Grund kann das Kopieren von serverseitigem Code von einem Computer auf einen anderen Wochen dauern, während die Ausführung von clientseitigem Code auf verschiedenen Computern normalerweise trivial ist.

Staatliche und sekundäre Effekte

(Haftungsausschluss: Dies ist bei weitem der subjektivste Punkt von allen. Wahrscheinlich hat meine Argumentation viele falsche Aspekte. Meiner Ansicht nach ist dies nur eine interessante Hypothese.)

Bei der serverseitigen Programmierung ist der Status ein viel größeres Problem, dh, wie Daten auf Anforderung des Benutzers abgerufen und aktualisiert werden können, wobei Konflikte aufgrund von Parallelität auftreten können. Selbst wenn der größte Teil dieser Komplexität auf einen Datenbankserver verlagert wird, liegt es in der Verantwortung des serverseitigen Codes, der Datenbank zu ermöglichen, ihre Garantien für die Datenintegrität durch korrekte Verwendung ihrer Schnittstelle aufrechtzuerhalten (z. B. keinen Cache für Aktualisierungen zu verwenden, die von nie gesehen werden die DB), während es auch ein Ziel des serverseitigen Codes ist, die Datenbank nicht mit Arbeit zu überlasten und den Benutzer auf eine Antwort warten zu lassen.

Bei der clientseitigen Programmierung ist die Präsentation der Ergebnisse für den Benutzer ein viel größeres Problem, und dies impliziert sekundäre Effekte (meistens Drucken auf dem Bildschirm). Dies bedeutet nicht, dass kein Status beteiligt ist (z. B. Cookies), sondern nur, dass das Hauptziel des Codes darin besteht, tatsächlich mit dem Benutzer zu kommunizieren, und dies kann nicht ohne sekundäre Effekte geschehen.

Aus diesem Grund erfordert die clientseitige Programmierung normalerweise (irgendwann) das Betrachten des Bildschirms mit einer Demo, um zu überprüfen, ob alle Farben und das Layout korrekt sind, während die serverseitige Programmierung fast ausschließlich in einer textorientierten Umgebung erfolgen kann, in der sie automatisiert ist Tests überprüfen, ob die Logik immer noch das tut, was sie tun soll.

14
logc

Dies ist keineswegs als akzeptierte Antwort gedacht. Vielmehr biete ich es als ergänzenden Punkt an (als Antwort auf die when do you use each of them Frage), die in den anderen Antworten bisher noch nicht erwähnt wurde, nämlich:

Schutz des geistigen Eigentums

Quellcode, der sich auf der Clientseite befindet (z. B. in Javascript), ist leicht lesbar und/oder kann rückentwickelt werden, wenn er verschleiert wurde.

Quellcode, der sich auf der Serverseite befindet, kann jedoch proprietäre Algorithmen sicher schützen und nur das Ergebnis zurückgeben. eine Art Blackbox.

3
Kosta Kontos