Gibt es einen Grund, eine Webanwendung nicht nur clientseitig zu machen?

8

Ich habe kürzlich angefangen, eine Simulationsanwendung für die Pfadfindungsalgorithmus in Python zu schreiben.

Es nimmt Benutzereingaben entgegen, generiert zufällig ein 2D-Diagramm und zeigt die Simulation über die GUI an.

Was ich nun fand, war, dass Python und eigenständige Anwendungen nicht sehr geeignet sind, um diese Art von Anwendung zu teilen, da Sie die Leute dazu bringen müssen, sie auf ihrem eigenen Computer usw. auszuführen. Es wäre viel praktischer, einfach zu leiten sie auf eine Website.

Offensichtlich müssen die Anzeige- und Steuerelemente auf der Clientseite geschrieben werden.

Der eigentliche Pfadfindungsalgorithmus kann jedoch entweder auf der Client- oder der Serverseite geschrieben werden.

Da kein serverseitiges Backend (dh keine Datenbank) erforderlich ist, kann die gesamte Webanwendung in clientseitigem HTML / JavaScript ausgeführt werden.

Die Frage ist, gibt es einen guten Grund, dies nicht zu tun?

Die Art und Weise, wie ich es sehe, würde es die Komplexität erheblich reduzieren, da es nicht erforderlich ist, die Interaktion zwischen Client und Server fortzusetzen. Der Server dient nur dazu, dem Client zunächst das Javascript bereitzustellen.

Auf der anderen Seite ... müsste ich das Ganze in Javascript schreiben ...

Auch die Idee, ein wiederverwendbares Modellmodul zu haben, gefällt mir. Z.B. Wenn ich später eine eigenständige Anwendung haben möchte, muss ich nur die View / Control-Module schreiben.

Ich frage mich, was die allgemein akzeptierte Praxis hier sein würde.

Dwjohnston
quelle
2
Die allgemein akzeptierte Praxis besteht darin, den Ansatz zu wählen, der den funktionalen und nicht funktionalen Anforderungen Ihrer Software am besten entspricht. Wenn Sie beispielsweise keine serverseitigen Daten oder Berechnungen benötigen und das Ganze im Browser gespeichert werden kann, erhalten Sie nicht nur die Verfügbarkeit einer Plattform, die bereits auf allen Computern (dem Browser) installiert ist, sondern auch Sie Sie erhalten auch kostenlosen plattformübergreifenden Support. Warum magst du in anderen Nachrichten kein Javascript?
Robert Harvey
Es stehen Python-zu-JavaScript-Konverter zur Verfügung, die den Großteil der Übersetzungsarbeit erleichtern können.
Andrew Morton
Die Validierung sollte auch serverseitig erfolgen, insbesondere für Websites mit Client-Ausrichtung, da sonst das Risiko besteht, dass diese umgangen werden.
Garryp
Gibt es einen Grund, warum Sie nicht zulassen möchten, dass nur jemand die App ausführt? Wenn ja, müssen Sie sie auf einem Server authentifizieren, damit es nicht 100% clientseitig sein kann (aber meistens immer noch)
Mawg sagt, Monica am
Ich habe eine solche Web-App erstellt und bin sehr zufrieden mit den Ergebnissen. Wohlgemerkt, meine Web-App stützte sich auf eine REST-API, die von einem Server eines Drittanbieters bereitgestellt wurde. Ich frage mich auch, warum nicht mehr Web-Apps auf diese Weise erstellt werden.
Leif81

Antworten:

8

Sie haben die Vorteile der App-Client-Seite beschrieben. Hier sind einige mögliche Nachteile: Wenn einige oder alle zutreffen, sollten Sie auf eine serverbasierte Lösung umsteigen:

  • Performance. Wäre eine clientbasierte Lösung merklich langsamer als eine serverbasierte (einschließlich Datenverkehr)? Javascript ist heutzutage schnell, aber ein rechenintensiver Algorithmus erfordert möglicherweise dedizierte serverseitige Hardware oder HPC-Farmen.
  • Produktivität. Wenn Sie ein Python-Entwickler ohne JS-Hintergrund sind, ist die zum Erlernen einer neuen Sprache und ihrer Redewendungen erforderliche Zeit möglicherweise unerschwinglich oder zumindest länger als die Implementierung der Client / Server-Logik. Darüber hinaus können nützliche Python-Bibliotheken verwendet werden, die für JS nicht verfügbar sind, was die Entwicklungszeit erheblich verlängern würde.
  • Geistiges Eigentum. Wenn Sie diesen Algorithmus schützen möchten, kann es ein Problem sein, den Code auf Clientcomputern verfügbar zu haben.
  • Kompatibilität. Mehr browserbasierter Code bedeutet mehr Probleme mit der Browserkompatibilität. Dies ist heutzutage viel einfacher, kann jedoch je nach Zielgruppe und Reichweite dennoch ein Problem darstellen.

Kurz gesagt, clientseitiges Javascript ist eine perfekt funktionierende Plattform für algorithmisches Computing und kann problemlos sowohl in einem Browser als auch als eigenständige App (unter Verwendung einer Browser-Engine wie Awesomium) bereitgestellt werden. Es hat jedoch einige Einschränkungen. Gehen Sie sie durch, um eine fundierte Entscheidung zu treffen.

Avner Shahar-Kashtan
quelle