Erstellen von Webanwendungen auf der Serverseite oder auf der Clientseite oder auf der Hybridseite? [geschlossen]

27

Derzeit gibt es mehrere Ansätze zum Erstellen von Webanwendungen:

1. Nur serverseitig

Dies ist ein klassischer Ansatz, bei dem Sie Seiten auf dem Server mit einem Webframework wie Ruby on Rails, Django, Express, Play! Framework und etc.

Typischer Workflow : Erstellen Sie alle Ihre Geschäftslogiken, Modelle und Ansichtsvorlagen auf dem Server im Rahmen Ihrer Wahl.

2. Clientseitige + REST-API

Vor relativ kurzer Zeit hat die gesamte Web-Community damit begonnen, clientseitige Anwendungen in Angular, Backbone, Ember und einigen Dutzend anderer JavaScript MV * -Frameworks zu erstellen. Und jetzt haben wir auch React.js dabei.

UPDATE : Es gibt kein Missverständnis. Was ich nur mit Klientenseite gemeint habe, ist die vollständige Trennung von Bedenken. Sie haben einen REST-API-Server und eine clientseitige Anwendung, die mit diesem Server kommuniziert. Abhängig von Ihrem Anwendungsfall wird es wahrscheinlich nie eine echte clientseitige Anwendung geben, die weder für die Authentifizierung noch für die Datenpersistenz eine Verbindung zu einem Back-End herstellt.

Typischer Workflow : Verbringen Sie Stunden damit, sich für Angular vs. Backbone vs. Ember vs. X zu entscheiden. Dann erstellen Sie Ihre Routen, Modelle, Ansichten und Controller auf dem Client. Nachdem Sie fertig sind, erstellen Sie nun Modelle, Controller und Routen auf dem Server. In gewisser Weise erledigen Sie die doppelte Menge an Arbeit.

3. Hybrid

Ich weiß nicht viel über diesen Ansatz, aber wenn ich raten sollte, rendern Sie Ihre Ansichten (Ansicht des MVC-Frameworks) auf dem Server. Als Ergebnis erhalten Sie SEO-Unterstützung sowie schnellere Seitenaufrufe.

Auf der Hybrid- Front gibt es ein Airbnb- Rendr , das angeblich Backbone und Express miteinander verbindet.

Eric Florenzo hat heute auf seinem Blog gepostet: React: Endlich ein großartiger Server / Client-Webstack .

Die Möglichkeiten zum Erstellen von Webanwendungen sind einfach überwältigend. Und für jemanden, der Webentwicklung lernt, kann dies zu einem Problem werden. Wie entscheidet man sich für einen Ansatz, um die nächste Anwendung zu erstellen?

Bewertet R
quelle
1
"Nur clientseitig: ... Nachdem Sie fertig sind, erstellen Sie Modelle, Controller und Routen auf dem Server." Dies wird nicht analysiert.
user16764
@ user16764 hat meine Frage aktualisiert.
Bewertet mit R
Ein paar interessante Links: kreuzwerker.de/de/blog/posts/… , branchandbound.net/blog/web/2012/11/…
dagnelies 13.10.14

Antworten:

13

Ich denke, Sie haben "Client Side Only" völlig falsch verstanden.

Erstens sollte es mit "Client Centric" gekennzeichnet sein. Dieser ganze Punkt von Frameworks wie Angular ist, dass die "VC" -Teile von MVC vollständig im Browser in Javascript implementiert sind. Die übergeordnete "M" -Logik des "M" -Teils - das Modell - ist im Browser implementiert, und die untergeordnete "CRUD" -Logik ist auf dem Server implementiert.

Die Geschäftslogik wird einmal entwickelt. Die Sichtlogik wird einmal entwickelt. Die Steuerungslogik wird einmal entwickelt - alles im Javascript-Framework Ihrer Wahl. Die Datenzugriffslogik wird ebenfalls nur einmal entwickelt, diesmal jedoch auf jedem RESTy- oder SOAPy-Framework, das Sie auf der Serverseite auswählen.

In extremen Fällen können Sie das Modell vollständig im Client implementieren, wenn es akzeptabel ist, von nur einem Browser auf einem Computer auf die Daten zuzugreifen und die Daten jedes Mal verwerfen zu lassen, wenn die Option "Cookies löschen" ausgewählt wird.

James Anderson
quelle
Es ist wirklich schwierig, zumindest einen Teil der Geschäftslogik nicht zweimal zu entwickeln. Für eine gute Benutzererfahrung müssen Sie sicherstellen, dass der Benutzer seine E-Mail-Adresse eingibt, um fortzufahren. Sie können dem Client jedoch nicht vertrauen, sodass Sie die Regel auch auf dem Server implementieren müssen. Zumindest hoffe ich wirklich, dass Sie nicht sagen, dass Sie die Geschäftslogik in JS auf dem Client implementieren.
Andy
@Andy das ist genau mein Punkt. Als ich eine Ember-App erstellte, musste die grundlegende Formularüberprüfung auf dem Client, aber auch auf dem Server durchgeführt werden. Ich hatte einmal ernsthafte Probleme, weil ich meine Daten auf dem Server nicht validiert habe und dem Client vollständig vertraute.
Bewertet mit R
Andy et all - werfen Sie einen Blick auf Google Docs. Abgesehen vom Laden des Dokuments, der Tabellenkalkulation usw. vom Server, dem Speichern am Ende und dem gelegentlichen Sichern zwischendurch findet alles andere in Ihrem Browser statt. Die Google Text & Tabellen-Website fungiert lediglich als Datenspeicher und Authentifizierungsserver.
James Anderson
3
@JamesAnderson Google Docs unterscheidet sich deutlich von einem Online-Shop. Sie bearbeiten Ihr eigenes Dokument, es ist nur ein Datenblock, den sie speichern, ohne sich wirklich darum zu kümmern, was die Daten bedeuten. Glauben Sie wirklich, dass die Auftragsbestätigung NUR auf dem Client erfolgen sollte? Sie fordern nur Leute auf, sich selbst kostenlose Produkte zu geben, wenn Sie so eine App erstellen. Anscheinend nehmen Sie auch an, dass Google tatsächlich keine Datenüberprüfung auf dem Server durchführt. Wir können nicht wirklich wissen, was los ist.
Andy
9

Die Antwort auf die Frage ist, dass es auf die Anforderungen ankommt. Ein zumindest flüchtiger Blick auf die Geschichte der "Web" -Entwicklung deutet auf eine Cowboy-Kultur hin, in der das Gespräch mit Stakeholdern, Kunden und das Sammeln von Anforderungen oft übersehen wird.

Ich hatte das Glück, vor einigen Jahren an einem Vortrag teilzunehmen, bei dem ich etwas hörte, das mir wirklich in den Sinn kam: "Sie wählen das Design, das den Anforderungen entspricht, nicht die Anforderungen, die dem Design entsprechen." Wenn Sie also mit einer solchen Frage konfrontiert werden, müssen Sie herausfinden, was die Leute, die Sie zum Erstellen dieser Software auffordern, tatsächlich benötigen.

Ihre Aufgabe ist es, die Vor- und Nachteile jedes Ansatzes zu erläutern.

RibaldEddie
quelle
1
Vielen Dank. Was Sie sagen, macht Sinn. Ich hatte gehofft, es gäbe eine "Silberkugel", eine echte Möglichkeit, Dinge zu tun. Ich habe 2011 mit einem Python-Webframework namens Django begonnen. Bald darauf gab es einen großen Schub in Richtung clientseitiger MV * -Frameworks wie Backbone, Angular und Ember. Und plötzlich ist die Art und Weise, wie Rails und Django Web-Apps erstellen, veraltet. Aber heute scheinen wir einen Schritt zurück zu gehen und die Client-Seite erneut mit der Server-Seite zu mischen, um eine bessere Leistung zu erzielen.
Bewertet mit R
Leider gibt es keine Silberkugel. :). Der Trick besteht jedoch darin, zu verstehen, wie die Teile zusammenpassen, um die besten Ergebnisse für die jeweilige Aufgabe zu erzielen, und eine Kultur des rücksichtslosen Umgestaltens zu unterstützen, sodass Sie jederzeit Änderungen vornehmen können, wenn Ihre ursprüngliche Ausrichtung nicht erfolgreich war.
RibaldEddie
1
Dies ist in Ordnung, und bis auf einige Ausnahmen sind beide Ansätze machbar. In diesem Fall benötigen Sie etwas anderes als die Anforderung, um eine Entscheidung zu treffen.
Ced
5

Ich denke, einer der wichtigsten Punkte der neueren Ansätze und Frameworks ist, dass weniger Kopplung zwischen den Front-End-Technologien und den Back-End-Technologien besteht.

Die Idee ist, dass Sie jedes Framework auf dem Client verwenden und unabhängig vom serverseitigen Framework Daten und / oder Ansichten aus einer beliebigen Anzahl von Quellen abrufen können.

Auf diese Weise können wir die besten Tools für die Erledigung der Aufgabe auswählen und unsere Entscheidungen können unabhängig voneinander getroffen werden.

Zugegeben, ich habe weder Angular noch Backbone verwendet, daher kann ich keine erfahrenen Empfehlungen aussprechen. Mein aktueller Basisstack besteht aus der schlanksten serverseitigen MVC oder aus erholsamen Diensten, die ich finden kann. Meistens Vorlagen und Daten liefern. Die Daten werden clientseitig gerendert und / oder nachfolgende Daten abgerufen, wobei zumeist nur einfaches, altes Javascript, jquery und css verwendet werden.

Ich fange hier an und baue darauf auf, wo ich muss. Die Vorteile dieses Ansatzes liegen auf der Hand, wenn Sie über die Unterstützung mehrerer Clientplattformen nachdenken - Browser, Mobilgeräte usw. Wenn Sie clientspezifisches Rendering benötigen, sollten Sie keine massiven Änderungen auf der Serverseite vornehmen müssen.

Wiege
quelle