Q: Mais cela signifie également que je devrais mettre la logique métier en front-end, dans l'application web Angular2, non ?
Oui. S'il n'est pas soutenu par un serveur, l'entreprise doit être implémentée quelque part.
Après l'acquisition de Google, Firebase a évolué pour devenir une plate-forme pour les développeurs d'applications mobiles qui ne pouvaient pas se permettre (ou n'avaient pas besoin) de déployer leur propre backend. Bien que la plupart des services soient assez transversaux: service de stockage, de connexion, d'analyse et de messages, il est vrai qu'il fournit également des fonctions cloud (sorte de lambdas) qui peuvent être utilisées pour exécuter certaines règles spécifiques à l'entreprise. Cependant, pour les applications d'entreprise ou les applications volumineuses avec un domaine et une logique métier complexes, ce type de support est insuffisant.
Ainsi, comme vous pouvez le deviner, Firebase ne nous dispense pas d'avoir un backend dédié à l'hébergement et à l'exécution d'opérations spécifiques à l'entreprise.
Q: Donc, si un jour je souhaite créer une application frontale pour les applications mobiles, je devrai dupliquer le code de la logique métier?
Pas nécessairement. Si l'application Web est construite sur Angular, des plates-formes croisées comme NativeScript peuvent vous permettre de réutiliser les composants Web, les bibliothèques, les utilitaires, les modèles, etc. Je ne me suis pas plongé dans le sujet, je ne peux donc pas vous assurer une compatibilité totale. La clé repose sur TypeScript , Angular et NativeScript nous oblige à coder sur TS.
Il s'agit alors de savoir où héberger le Javascript pour sa distribution et sa version . Un mot CDN .
Q: Je suppose que l'alternative serait de créer un backend qui contient la logique métier et utilise Firebase pour son stockage de données, mais cela semble un peu bizarre (ne pourrais-je pas simplement utiliser un ORM ou quelque chose directement dans mon backend pour obtenir le même résultat sans beaucoup de travail?)
Quelques considérations.
D'une part, l'hébergement, le déploiement, la gestion et la maintenance d'une base de données n'est pas une mince affaire. Sans parler de la gestion de la sécurité, de l'évolutivité, de la disponibilité, etc. Donc, avoir un fournisseur de base de données qui s'occupe de ces choses est intéressant. Ce n'est pas une idée folle de nos jours d'avoir notre base de données quelque part sur le cloud. Bien sûr, je ne suggérerais pas cela si nous implémentions le middleware et les back-ends pour une banque. Mais cela pourrait avoir un sens pour la session du client, les profils de l'utilisateur, les préférences et ce type de données qui vivent généralement du côté client ou des données qui ne nous intéressent pas.
D'un autre côté, avoir notre back-end est utile pour une raison simple, le découplage .
Au lieu de coupler nos clients à toutes sortes de services que nous ne gérons pas et ne contrôlons pas, nous déployons une application côté serveur à partir de laquelle nous nous occupons de ces choses afin que nos clients n'aient pas à se soucier de problèmes tels que les fermetures de services ou les interruptions. changements. De plus, nous gagnons en simplicité car notre back-end agit comme une façade.
Q: Comment les gens structurent-ils généralement ce type d'applications, s'ils souhaitent utiliser Firebase par exemple?
Cela varie considérablement d'un projet à l'autre. Par exemple, nous utilisons Firebase + back-end.
Firebase DB pour partager des données entre les périphériques-comptes-sessions . Également en tant que journal des modifications, lorsque notre serveur principal est temporairement indisponible, les clients envoient les opérations d'écriture au journal, qui est synchronisé ultérieurement.
Firebase Cloud Messages nous fournit des notifications push et des sujets en amont / en aval. Nous utilisons le service pour l'échange de messages pub / sub.
Analyses Firebase Principalement pour les mesures.
Back-end pour tout ce qui est strictement lié à l'entreprise