Eile zur Client-Seite in der Webentwicklung

10

In den letzten Monaten habe ich eine große Begeisterung für clientseitiges Scripting in der Webentwicklung festgestellt. Während serverseitige Technologien ausgereift, stabil und von Backend-Entwicklern gut akzeptiert sind, sind clientseitige Technologien unausgereift (dh im Vergleich zu großen serverseitigen Frameworks) und werden von vielen langjährigen Entwicklern nicht gemocht. Trotzdem macht heutzutage jeder eine clientseitige Entwicklung. Ich persönlich erwarte, dass diese großen serverseitigen Frameworks in etwa zwei bis fünf Jahren verschwinden und den aktuellen Trend beobachten.

Warum ist das so? Wie könnte die neue und "diffuse" clientseitige Entwicklung in HTML5 / JS großen und gut durchdachten serverseitigen Lösungen überlegen sein?

Bruno Schäpper
quelle
4
Haben Sie Quellen, um Ihre Annahmen zu überprüfen? Javascript ist fast so alt wie das Internet selbst, und ich sehe keine serverseitige Programmierung, die bald irgendwohin führt.
tdammers
1
Zur Verdeutlichung beschränken sich meine Annahmen auf das Frontend. Ich sehe eine Verschiebung in Richtung Client-Seite, in der UI-Logik, im Rendering und in solchen Dingen. Natürlich wird die Serverseite niemals weg sein, sondern auf eine REST-API (oder SOAP) reduziert.
Bruno Schäpper
3
Diese Verschiebung kommt und geht. Normalerweise wird die Front-End-Entwicklung populärer, sobald neue coole Technologien eingeführt werden (Shockwave, Flash, JavaFX, Flex) oder große neue js-Frameworks versuchen, die Welt zu übernehmen (Motools, JQuery usw.)
Andrzej Bobak,
1
@VainFellowman: Sie möchten SOAP wirklich nicht in clientseitigen Skripten verwenden. Es ist viel zu viel Aufwand, das Parsen ist ein Schmerz, und Sie gewinnen nicht viel, weil Javascript mit seiner dynamischen Typisierungsdisziplin die Typinformationen von SOAP ohnehin nicht in großem Umfang nutzen kann.
tdammers
1
@tdammers Ich will nicht, wirklich nicht. Ich sehe keinen Sinn darin, SOAP über HTTP zu verwenden. REST ist für fast alles geeignet.
Bruno Schäpper

Antworten:

7

Das ist wahr:

Eile zur Client-Seite in der Webentwicklung

Es ist jedoch nicht auf die Clientseite beschränkt, sondern eine vollständige Stapelbewegung.

Ich weiß, dass dies überraschend sein kann. Bitte, hör mir zu.

Warum ist das so? Wie könnte die neue und "diffuse" clientseitige Entwicklung in HTML5 / JS großen und gut durchdachten serverseitigen Lösungen überlegen sein?

Zunächst einmal sind beide gut durchdacht.

Zweitens, weil es besser ist.

Gute Frage.

Aber "besser" ist subjektiv, daher lautet die Antwort auf Ihre Frage: Was ist konkret besser?

Besuchen Sie die Frage erneut:

Wie könnte die "diffuse" clientseitige Entwicklung in HTML5 / JS großen serverseitigen Lösungen möglicherweise überlegen sein?

Because small is nimble.
And big is clunky.

Es ist Flexibilität.

Scheint keine große Sache zu sein. Macht es? Flexibilität.

Flexibilität liegt jedoch allem zugrunde. Eine Verbesserung der Flexibilität - verbessert alles.

Wartbarkeit. Erweiterbarkeit. Skalierbarkeit. Modularität. Benutzerfreundlichkeit. UX.

Und es ist schneller zu implementieren. Das ist die Realität. Schneller und besser.

This is why Windows 8 made JS a first-class citizen.

HTML5 - JS ist keine Modeerscheinung und wird nicht verschwinden. Wir sehen nur die Keime einer Technologie, die wachsen wird, um Tablets Computerinhalte und Interaktionsverhalten bereitzustellen. Tablets.

Smartphones waren die schnellste Akzeptanz in den Massenmedien seit dem Fernsehen in den 1950er Jahren. Jetzt haben wir nicht nur Smartphones, sondern auch Tablets.

Bereits in der Entwicklung bei Mozilla und Windows das Betriebssystem, das auf zukünftigen Geräten in ihren Märkten laufen wird -> HTML / JS.

Viele Lösungen und Innovationen bleiben bestehen.

Aufgrund der Flexibilität entsteht ein vollständiger Stapel von JS.

Ich hoffe das hilft.

Jack Stone
quelle
1
Gute Antwort! Aber serverseitige Frameworks versprechen die gleichen Vorteile, nicht wahr?
Bruno Schäpper
1
Ja, Sir, serverseitige Frameworks versprechen die gleichen Vorteile, ja. Es muss bekannt sein, dass die aufkommende Technologie zusätzliche Vorteile bietet, die unerwartet auftreten. Es befindet sich auf der untersten Ebene (c) im io. Die Threads warten. In JS hat es einen Rückruf. Es wartet nicht. Es gibt also eine Io-Optimierung auf der untersten Ebene. Diese Erkenntnis wird nun stillschweigend von Microsoft weitgehend übernommen. Deshalb ist ihr Betriebssystem JS. Letztendlich ergibt dies Optimierungen und Metaoptimierungen - auf allen Ebenen. Weil die Sprache flexibel ist. Eine einfach unsichtbare Sache. Nicht bekannt. Hoffentlich hilft das.
Jack Stone
1
Ich habe diese Antwort akzeptiert, weil sie die vollständigste ist. Alle anderen haben gute Punkte, aber dies ist der schlüssigste. Vielen Dank an alle!
Bruno Schäpper
9

Diese Geschichte hatte immer zwei Seiten; Sowohl serverseitiger als auch clientseitiger Code haben Vor- und Nachteile.

Zu den Vorteilen von clientseitigem Scripting gehören:

  • Kann reaktionsschneller gestaltet werden, umfangreiche Änderungen sind ohne Server-Roundtrips möglich.
  • Code wird auf dem Client ausgeführt, wodurch die Ressourcennutzung auf dem Server verringert wird.
  • Die Trennung zwischen Logik und Präsentation wird physisch.
  • Manchmal ist der Lastausgleich einfacher, insbesondere wenn die Authentifizierung pro Anforderung verwendet wird.

Aber serverseitiges Skript hat auch viele Vorteile:

  • Sie steuern die Maschine, auf der der Code ausgeführt wird.
  • Es ist so ziemlich alles möglich - wenn Ihr Server dies kann, kann dies auch Ihr Skript.
  • Benutzer können Ihr Skript nicht ändern, bevor Sie es ausführen.
  • Benutzer können keine Skriptblocker verwenden, um die Ausführung Ihres Skripts zu verhindern.
  • Benutzer können nicht sehen, was Ihr Skript tut, sie können nur die Ausgabe beobachten.
  • Der Code funktioniert zuverlässig mit jedem Client, den Sie sich vorstellen können, einschließlich Bildschirmlesegeräten, Webbrowsern in Textform, Suchmaschinenspinnen, Scrapern, Akkumulatoren, IRC-Bots, Super-Low-End-Computern und Browsern mit Skriptblockierung.
  • Benutzer-Plugins brechen seltener.

Für hochdynamische Webanwendungen war der clientorientierte Ansatz schon immer eine beliebte Wahl, da nur so eine anständige reaktionsschnelle Desktop-ähnliche Benutzererfahrung erzielt werden kann: Ohne clientseitiges Scripting erfordert jede Aktion des Benutzers eine Rundung. Auslösung, was eine Verzögerung von mindestens einer halben Sekunde bedeutet, normalerweise mehr. Für eine Informationsseite, bei der es sich im Grunde nur um eine Reihe statischer Seiten handelt, die aus einer Datenbank (z. B. Wikipedia) bereitgestellt werden, ist der Vorteil jedoch gering, während die Vorteile von serverseitigem Scripting immer noch überwältigend sind.

Der beobachtete Hype beruht auf einer Kombination von zwei jüngsten Entwicklungen:

  1. HTML5 und seine Korona verwandter Technologien. Es hat viel zu lange gedauert, aber jetzt haben wir endlich einen Standard, der alles enthält, was Sie brauchen, um diese dynamischen Desktop-ähnlichen Webanwendungen zu erstellen, ohne Hacks anzuhäufen, und Mainstream-Browser, die sie ordnungsgemäß implementieren.
  2. Verfügbare Rechenleistung. Die heutigen Standard-Desktop-PCs sind genauso leistungsfähig wie ein Webserver der Einstiegsklasse, Mobiltelefone der Kundenklasse sind praktisch die Desktop-Computer des Jahres 2005, und moderne Javascript-Implementierungen sind effizient genug, um das Leistungsgleichgewicht zu verbessern: Inzwischen sind clientseitige Ressourcen billiger als Server Ressourcen.

Tatsächlich hat sich nichts daran geändert, wozu die server- und clientzentrierten Ansätze gut sind. Was sich geändert hat, ist, dass die Kundenorientierung jetzt einfacher und billiger durchzuführen ist und eine bessere Leistung als vor einigen Jahren bietet. Dies macht sie zu einer praktikablen Wahl für viel mehr Anwendungen als früher.

tdammers
quelle
harte Wahrheiten ... +1.
Jack Stone
8

Die Serverseite wird immer verfügbar sein. Sie können nicht für alles auf der Client-Seite sitzen. Beispielsweise möchten Sie kein Backbone.js MVC-Design für Ihren Mikrocontroller verwenden, das Ihnen Parameter in Echtzeit von einem Fertigungskran sendet.

Glaube dem Hype nicht.

lwm
quelle
Sag mir. Ist JS in Windows 8 ein Hype? -1. Ich stimme dem ersten Punkt zu, aber Ihr zweiter Punkt zum Hype muss geklärt werden.
Jack Stone
JS ist nicht exklusiv für den Client und schon eine Weile nicht mehr.
Erik Reppen
@ClintNash ya eigentlich. Ms ermöglichte j's, Win8-Apps zu erstellen, um die potenzielle Anzahl von Entwicklern für ihre Plattform zu erhöhen. Es ist eine Reaktion auf Menschen, die diese Technologien über Desktop-Technologien lernen möchten. Aber als eine Version, die c # / wpf bereits kennt, sehe ich keinen Grund, eine win8-App mit html / js zu erstellen.
Andy
@ErikReppen das ist wahr, aber js allein schneidet es nicht auf dem Server, Sie brauchen ein Framework zum Einbauen. Ehrlich gesagt verwirrt mich der Wunsch, Skript auf dem Server zu verwenden. Das haben wir schon gemacht, es war klassisches ASP, und ich habe nicht wirklich den Wunsch, diese Erfahrung zu wiederholen.
Andy
@Andy Bei klassischem ASP (insbesondere bei Webformularen) gibt es kein Ende der Übereinstimmung mit einem JS-Entwickler, der das Unglück hatte, mit diesen Tools in Kontakt zu kommen, die wir definitiv nicht mehr dorthin zurückkehren möchten. Aber das ist das am wenigsten in Erinnerung gebliebene tagbasierte serverseitige Scripting-Tool von gestern und wahrscheinlich die vehement verachteteste Thin-Client-Lösung, die jemals einen gewissen Bekanntheitsgrad erreicht hat. Wenn man das mit so etwas wie Python und jetzt mit JS auf der Serverseite vergleicht, grenzt man die Leute an ein Pferd.
Erik Reppen
6

Ich habe 2009 von einem serverseitigen PHP-Framework zu einer clientseitigen ExtJS-Lösung gewechselt, die an serverseitige Webdienste gebunden ist.

Gründe für die Migration waren für mich:

  1. Bessere Sicherheit durch Reduzierung der Anzahl der Endpunkte und des Codes auf dem Server.
    Wenn Sie zu Webdiensten wechseln, überprüfen Sie die Eingabe an der Grenze des Webdienstes und haben eine genauere Kontrolle über die E / A Ihres Servers. Es gibt keine serverseitige UI-Schicht, die Ihre Sicherheitsarchitektur durcheinander bringt.
  2. Verbesserte Leistung durch weniger Server-Roundtrips
    Die Architektur ändert sich, sodass Datenabrufe seltener auftreten und Daten lokal zwischengespeichert werden können, wobei für das UI-Rendering überhaupt kein Roundtrip erforderlich ist. Roundtrips beeinträchtigen die Leistung von Web-Apps.
  3. Verbesserte Leistung aufgrund der Cachefähigkeit der Benutzeroberfläche
    Die Benutzeroberflächenebene kann vollständig auf einem CDN gehostet werden. Ich habe sogar Offline-Webanwendungen erstellt, indem ich den UI-Code in den HTML5-App-Cache verschoben habe.
  4. Höhere Wiedergabetreue der Benutzeroberfläche (umfangreiche clientseitige Steuerelemente)
  5. Entwickler von Drittanbietern können dieselbe API verwenden, die mein eigenes Front-End verwendet, und ich kann APIs problemlos modulübergreifend wiederverwenden, wenn sie Funktionen gemeinsam nutzen.
    Dies bedeutet weniger Entwicklung, Qualitätssicherung, Dokumentation, ...
  6. Ich programmiere lieber in JavaScript als in PHP, Python oder Java

Aber machen Sie keinen Fehler, was jetzt passiert, ist ein Hype. Es wird vorbei sein und viele Web-Apps werden wieder eine serverseitige UI-Architektur verwenden.

Joeri Sebrechts
quelle
Was, Hype? -1 Viel Glück damit, wenn Windows 8 JS zu einem erstklassigen Bürger macht. Ja, serverseitige UI-Architektur, die möglicherweise in node.js geschrieben ist. Wir müssen es lernen, weil es nicht blockiert.
Jack Stone
Ich glaube nicht, dass wir bald zu Thick-Client-Lösungen zurückkehren werden. Aber wenn ich mit ExtJS für ein Problem gesattelt würde, das komplizierter wurde, als die vorgefertigte Web-Benutzeroberfläche (dh alle Probleme unabhängig vom ursprünglichen Plan) zu kacken, könnte ich sehen, warum die Alternative möglicherweise nicht ideal erscheint.
Erik Reppen
6

Ein weiterer Faktor, der die Begeisterung für clientseitige Lösungen steigert, ist das Wachstum mobiler Apps. Wenn Sie eine Website erstellen, die stark auf clientseitigem JavaScript und AJAX basiert, und auch native iOS- und Android-Apps erstellen, besteht eine gute Chance, dass alle drei dieselben REST-Services verwenden können, um alle ihre Daten hin und her zu übertragen .

Carson63000
quelle
Gut gesagt ... +1.
Jack Stone
Sehr guter Punkt.
Bruno Schäpper
4

Erstens sieht der Benutzer nicht (und manchmal ist es ihm sogar egal), was nicht der Server ist. Unabhängig davon, wie gut der serverseitige Code geschrieben ist, werden die Benutzer die Anwendung nicht schätzen, wenn der Client-Teil nicht gut ausgeführt wird. Manchmal ist sogar die nette Benutzeroberfläche wichtiger als die Funktionalität.

Ein großes und leistungsfähiges Server-Hosting ist ziemlich teuer. Es ist viel billiger, einen Teil der Logik (außer der Validierung) auf der Clientseite zu implementieren. Sie könnten also ein kleineres (daher billigeres) Server-Hosting verwenden, da es nicht so stark geladen wäre.

Dies ist der Grund, warum clientseitige Technologien trotz der Instabilität immer beliebter werden. Außerdem werden JS und HTML / CSS von (fast) allen modernen Browsern unterstützt.

Diese beiden Teile von Anwendungen können nicht getrennt existieren. Und das Internet scheint in naher Zukunft nirgendwo zu verschwinden.
Ich denke nicht, dass das big server-side frameworkswahrscheinlich auch verschwinden wird. Es wird immer Unternehmen geben, die sich diese leisten können und ihre bedeutenden Vorteile nutzen.

superM
quelle
4

Die clientseitige Webentwicklung ist stark an Webbrowser gekoppelt und ändert sich im Laufe der Zeit. Die Lösung, die Sie jetzt bereitstellen, funktioniert möglicherweise in einigen Monaten nicht mehr, da sich die Seitenrendering-Engines von Webbrowsern erheblich geändert haben. Einige Browser sind / waren nicht mit Standards kompatibel und erforderten daher von den Entwicklern noch mehr zusätzlichen Aufwand, um das erwartete Ergebnis zu erzielen.

Es gibt einige Lösungen, die versuchen, dieses Problem zu beheben. Wenn Sie beispielsweise jquery verwenden, können Sie sicher sein, dass Ihr Skript in den von dieser speziellen jquery-Bibliothek unterstützten Browsern funktioniert. Es liegt jedoch nur an den Autoren, Ihnen Kompatibilität mit einigen / den meisten / allen Browsern zu bieten. Die Frage ist, welches Team Sie besser unterstützt. Wird es ein Motools-Team, ein JQuery-Team oder ein anderes Team sein? Wenn sie einen bestimmten Webbrowser nicht unterstützen, funktioniert Ihr Projekt möglicherweise nicht in diesem Browser.

Die Aufregung, die Sie zu haben scheinen, gibt es schon lange. Ich habe es gesehen, als Shockwave und sein Nachfolger Flash vorgestellt wurden. Es gab ein "großes Comeback" der umfangreichen Benutzeroberflächen, als komplexe js-Bibliotheken ausgeliefert wurden, zuerst mit Motools, dann mit jquery (ich habe angefangen, sie in dieser Reihenfolge zu verwenden). Es gab Flex und JavaFX. Aber keiner von ihnen kann einen großen Marktanteil erreichen. Einige erfordern Plugins, die den Endbenutzer mit der Zeit häufig Sicherheitslücken aussetzen, andere funktionieren möglicherweise auf der Clientseite aufgrund einiger benutzerdefinierter Einstellungen nicht (z. B. deaktiviertes JavaScript im Browser des Clients).

Auf der anderen Seite wird die serverseitige Lösung normalerweise nur einmal geschrieben. Sie müssen sich keine Sorgen machen, dass alles fehlschlägt und neu geschrieben werden muss, sobald neues Firefox / Chrome / IE / Opera ausgeliefert wird. Sie müssen sich auch keine Sorgen machen, dass der Client versucht, Ihre App zu manipulieren und / oder die Daten zu beschädigen.

Andrzej Bobak
quelle
1
Ist das nicht reine Einbildung? Möglicherweise müssen Sie Ihre serverseitigen Inhalte ändern, wenn sich Clients ändern, da Sie irgendwann nicht mehr in der Lage sind, HTML / JS / CSS zu generieren.
Bruno Schäpper
1
Eine weitere Sache: "Die clientseitige Webentwicklung ist stark mit Webbrowsern gekoppelt" - Webtechnologien sind offizielle Standards, solange Sie sich daran halten, implementieren Sie einen Standard und koppeln Ihre Anwendung nicht an einen Browser. Während dies vor nicht allzu langer Zeit nicht wirklich wahr war, scheint es im Moment zu sein.
Bruno Schäpper
Lesen Sie zunächst, wie einige Browser einfach nicht den Standards entsprechen (z. B. Internet Explorer). Einige Dinge haben sich im Laufe der Zeit geändert, aber selbst mit IE7 hatte ich schreckliche Probleme aufgrund seiner eigenen Art zu interpretieren, was ich geschrieben habe. Lesen Sie auch einige Artikel über browserübergreifende Kompatibilitäten. Dieses Problem würde nicht bestehen, wenn jeder Webbrowser-Anbieter die Standards befolgen würde. Zweitens, wenn sich der Datensatz ändert, müssen Sie Ihre Geschäftslogik ändern, das ist offensichtlich. Aber wenn ein neuer IE ausgeliefert wird und Sie ungefähr 30% des Codes neu schreiben müssen, damit der Code in einem neuen Browser funktioniert - etwas stimmt nicht
Andrzej Bobak
Natürlich weiß ich, wie schmerzhaft es ist und war, alles in jedem Browser zum Laufen zu bringen. Diese Arbeit muss jedoch unabhängig von der Server- oder Clientseite ausgeführt werden (da Sie am Ende ohnehin einen Browser verwenden müssen). Ich stimme Ihrem zweiten Punkt auf jeden Fall zu. Ich sehe jedoch nicht, dass 30% umgeschrieben werden. Möglicherweise sind einige Änderungen erforderlich, aber ich bezweifle, dass es so schlimm ist wie früher. Auf der anderen Seite müssen Sie alles basierend auf der Service-Schicht wiederholen, wenn Sie Ihren serverseitigen Stack ersetzen möchten. Sie sind also SEHR eng mit Ihrer serverseitigen Implementierung verbunden. Möglicherweise von der Oberseite der Benutzeroberfläche bis zum Modell.
Bruno Schäpper
-1

Stimmen Sie absolut mit Ihren Gefühlen überein. Ich glaube auch, dass über das, was Sie sagen, ein dramatischer Rückgang des REST und ein massiver Anstieg der Websockets hinausgehen werden, vor allem, wenn Websites auf ihre Server zurück kommunizieren. Vert.x, Node.js usw. Die gesamte Serverseite sowie die Clientseite wechseln zur ereignisgesteuerten Programmierung. Java EE, PHP, Rails usw. müssen sich alle anpassen, sonst verlieren sie sehr schnell.

Codierung
quelle
Ohne eine Erklärung kann diese Antwort unbrauchbar werden, wenn jemand anderes eine andere Meinung vertritt. Wenn zum Beispiel jemand eine Behauptung wie "Wir werden keinen dramatischen Rückgang des REST und einen massiven Anstieg der Websockets sehen" veröffentlicht, wie würde diese Antwort dem Leser helfen, diese unterschiedlichen Meinungen auszuwählen? Erwägen Sie , es in eine bessere Form zu bringen
Mücke