Ich bin dabei, eine einseitige Webanwendung zu entwickeln, die ein Mehrbenutzer-Dokumentationssystem sehr vereinfacht. Das Frontend wird wahrscheinlich Angular2 verwenden.
Das Projekt hat eine kurze Frist, daher habe ich nach "Verknüpfungen" gesucht, dh nach verschiedenen vorgefertigten Diensten, anstatt alles von Grund auf neu zu implementieren.
Ich benötige eine Art Backend, um die Anwendungsdaten zu speichern. Ich habe mich umgesehen und Firebase gefunden, was die Arbeit beim Erstellen eines separaten Backends und einer API für die Kommunikation mit dem Frontend zu vereinfachen scheint.
Das bedeutet aber auch, dass ich die Geschäftslogik in der Angular2-Web-App in das Frontend stellen müsste, oder?
Wenn ich also eines Tages ein Frontend für mobile Apps erstellen möchte, müsste ich den Geschäftslogikcode duplizieren?
Ich denke, die Alternative wäre, ein Backend zu erstellen, das die Geschäftslogik enthält und Firebase für die Datenspeicherung verwendet, aber das scheint etwas seltsam (könnte ich nicht einfach ein ORM oder etwas direkt in meinem Backend verwenden, um das gleiche Ergebnis ohne zu erzielen viel mehr Arbeit?)
Wie strukturieren Menschen diese Art von Apps normalerweise, wenn sie beispielsweise Firebase nutzen möchten?
quelle
Antworten:
F: Das bedeutet aber auch, dass ich die Geschäftslogik in das Front-End der Angular2-Web-App einfügen müsste, oder ?
Ja. Wenn es nicht von einem Server unterstützt wird, sollte das Unternehmen irgendwo implementiert werden.
Nach der Übernahme von Google entwickelte sich Firebase zu einer Plattform für Entwickler mobiler Apps, die es sich nicht leisten konnten (oder müssen), ein eigenes Backend bereitzustellen. Während die meisten Dienste ziemlich transversal sind: Speicher-, Anmelde-, Analyse- und Nachrichtendienst, bietet es zwar auch Cloud-Funktionen (Art von Lambdas), mit denen einige geschäftsspezifische Regeln ausgeführt werden können. Für Unternehmensanwendungen oder große Anwendungen mit einer komplexen Domäne und Geschäftslogik ist diese Art der Unterstützung jedoch unzureichend.
Wie Sie vielleicht erraten haben, befreit uns Firebase nicht davon, dass das Backend für das Hosten und Ausführen geschäftsspezifischer Vorgänge vorgesehen ist.
F: Wenn ich eines Tages ein Front-End für mobile Apps erstellen möchte, muss ich den Geschäftslogikcode duplizieren.
Nicht unbedingt. Wenn die Web-App auf Angular basiert, können Sie mit plattformübergreifenden Funktionen wie NativeScript möglicherweise die Webkomponenten, Bibliotheken, Dienstprogramme, Modelle usw. wiederverwenden. Ich habe mich nicht mit dem Thema befasst, daher kann ich Ihnen keine vollständige Kompatibilität garantieren. Der Schlüssel liegt in TypeScript . Sowohl Angular als auch NativeScript erfordern, dass wir auf TS codieren.
Die Sache ist dann, wo das Javascript für seine Verteilung und Versionierung gehostet werden soll . Ein Wort CDN .
F: Ich denke, die Alternative wäre, ein Backend zu erstellen, das die Geschäftslogik enthält und Firebase für die Datenspeicherung verwendet, aber das scheint etwas seltsam (könnte ich nicht einfach ein ORM oder etwas direkt in meinem Backend verwenden, um dasselbe zu erreichen Ergebnis ohne viel mehr Arbeit?)
Einige Überlegungen.
Einerseits ist das Hosten, Ausrollen, Verwalten und Verwalten einer Datenbank keine Kleinigkeit. Ganz zu schweigen von Sicherheit, Skalierbarkeit, Verfügbarkeit usw. Es ist also interessant, einen DB-Anbieter zu haben, der sich um diese Dinge kümmert. Es ist heutzutage keine verrückte Idee, unsere Datenbank irgendwo in der Cloud zu haben. Natürlich würde ich dies nicht vorschlagen, wenn wir die Middleware und die Backends für eine Bank implementieren würden. Dies kann jedoch für die Sitzung des Kunden, die Benutzerprofile, die Einstellungen und diese Art von Daten, die normalerweise auf der Client-Seite gespeichert sind, oder für Daten, die uns nicht interessieren, sinnvoll sein.
Auf der anderen Seite ist es aus einem einfachen Grund nützlich, unser Backend zu haben, nämlich die Entkopplung .
Anstatt unsere Kunden an alle Arten von Diensten zu koppeln, die wir nicht verwalten und steuern, stellen wir eine serverseitige Anwendung bereit, von der aus wir uns um diese Dinge kümmern, damit sich unsere Kunden nicht um Probleme wie das Herunterfahren von Diensten oder das Unterbrechen von Diensten kümmern müssen Änderungen. Darüber hinaus gewinnen wir an Einfachheit, da unser Backend wie eine Fassade wirkt.
F: Wie strukturieren Menschen diese Art von Apps normalerweise, wenn sie beispielsweise Firebase nutzen möchten?
Es ist von Projekt zu Projekt sehr unterschiedlich. Zum Beispiel verwenden wir Firebase + Backend.
Firebase DB zum Freigeben von Daten zwischen Gerätekonten-Sitzungen . Auch als Änderungsprotokoll senden Clients die Schreibvorgänge an das Protokoll, das später synchronisiert wird, wenn unser Backend vorübergehend nicht verfügbar ist.
Firebase Cloud Messages bietet uns Upstream- / Downstream-Push-Benachrichtigungen und -Themen. Wir nutzen den Service für den Austausch von Pub- / Subnachrichten.
Firebase-Analyse Hauptsächlich für Metriken.
Backend für alles, was eng mit dem Geschäft zu tun hat
quelle
Kurze Antwort: Verwenden Sie keine Geschäftslogik.
Lange Antwort: Sie beschreiben eine Anwendung, die klein genug erscheint, um keine separate Geschäftslogik zu haben. bewerten Sie, ob Sie überhaupt eine solche Geschäftslogik haben; Ein Großteil der Geschäftslogik kann durch das Daten-Design und ein wenig durch die Präsentationsschicht reduziert werden. Viele kleine Systeme sind meistens CRUD und haben keine echte Geschäftslogik. Oft habe ich zwei oder drei Klassenebenen gesehen, die nur Passthrough-Objekte sind und Raum für eine Zukunft lassen, die niemals eintreffen wird.
Sie können mit einer API direkt aus Firebase heraus beginnen und später eine zusätzliche Ebene für die Geschäftslogik einführen, wenn Sie feststellen, dass ein wirklicher Bedarf dafür besteht, solange Sie Ihren Vertrag so gut gestalten, dass der Service eine stabile Signatur behält, während der Implementierung dahinter kann sich ändern.
quelle
Siehe /programming/54994228/how-to-minimise-firebase-function-latency
Cloud Firestore ist die primäre und einzige Verbindung zwischen Front-End und Back-End. Natürlich kann sich eine gewisse Logik im Front-End befinden, aber aus Sicherheitsgründen kann dies normalerweise nur offline zum Nutzen des Benutzers sein. Sie sollten die Sicherheit in den Cloud Firestore-Sammlungen selbst implementieren und die Rollen oder was auch immer Sie benötigen.
Verwenden Sie dann Cloud-Funktionen, die von einem Cloud Firestore-Trigger aufgerufen werden.
Sie sollten niemals eine Cloud-Funktion von einer Front-End-Anwendung aus aufrufen.
quelle