Andere Antworten haben sich auf , was ist clientseitige und serverseitige Programmierung: Welche Sprachen meist verwendet werden, welche Aufgaben durchgeführt werden müssen, usw.
Das ist absolut richtig, aber ich vermisse es, mich ein wenig auf die Unterschiede zwischen beiden Arten der Programmierung im Kontext der Webprogrammierung zu konzentrieren. 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 Code, der aus dem Internet heruntergeladen und auf seinem Computer ausgeführt wird. Dies ist das Hauptziel der clientseitigen Umgebung (Browser und JavaScript-Engine): Bereitstellung einer isolierten Umgebung wo Client-Code ausgeführt werden kann, aber nicht auf etwas außerhalb des zulässigen Bereichs zugreifen kann.
Bei der serverseitigen Programmierung empfiehlt es sich, den Zugriff jeder Anwendung auf das zugrunde liegende System zu beschränken, dies wird Ihnen jedoch weitaus 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, sondern wird über das Installationssetup (unter Verwendung dedizierter Benutzer mit eingeschränkten Berechtigungen, Auswahl von Ports, die Root-Berechtigungen erfordern oder nicht erfordern usw.) erreicht.
Bereitstellung und Plattform
Bei der serverseitigen Programmierung muss die Bereitstellung von außerhalb des Codes mithilfe eines Tools (auch wenn es sich um make install
ein Tool oder ein git clone
solches handelt) erfolgen. Diese Bereitstellung erfolgt normalerweise manuell - oder wird zumindest in einem halbüberwachten Verfahren erwartet Weg. Das System (dh das Betriebssystem), auf dem Sie das Produkt bereitstellen, ist in der Regel für mehrere Computer einheitlich. Es 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 Überwachung bedient. Das zugrunde liegende System (dh hauptsächlich der Browser) kann auf einer viel größeren Anzahl von Computern sehr unterschiedlich sein. Damit die Bereitstellung überhaupt möglich ist, müssen Standards eingehalten 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 das Ausführen von clientseitigem Code auf verschiedenen Computern normalerweise trivial ist.
Zustands- und Nebeneffekte
(Ausschlussklausel: Dies ist bei weitem der subjektivste Punkt von allen. Wahrscheinlich hat meine Argumentation viele falsche Aspekte. Es ist aus meiner Sicht 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, dass die Datenbank ihre Garantien für die Datenintegrität beibehält, indem sie ihre Schnittstelle korrekt verwendet (z. B. keinen Cache für Aktualisierungen verwenden, die von keinem gesehen werden 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 das Drucken auf dem Bildschirm). Dies soll nicht heißen, dass es sich nicht um einen Zustand handelt (z. B. Cookies), sondern dass das Hauptziel des Codes darin besteht, tatsächlich eine Schnittstelle mit dem Benutzer herzustellen, und dies kann nicht ohne Sekundäreffekte geschehen.
Aus diesem Grund muss bei der clientseitigen Programmierung normalerweise (zu einem bestimmten Zeitpunkt) mit einer Demo auf den Bildschirm geschaut werden, um sicherzustellen, dass alle Farben und das Layout richtig sind. Die serverseitige Programmierung kann fast ausschließlich in einer textorientierten Umgebung erfolgen, in der sie automatisiert ist Tests überprüfen, ob die Logik noch das tut, was sie tun soll.