web-dev-qa-db-fra.com

Où mettre la logique commerciale si vous utilisez Firebase?

Je suis sur le point de commencer à développer une application Web unique qui est très simplifiée un système de documentation multi-utilisateurs. L'avant utilisera probablement angular2.

Le projet a une échéance courte, je suis donc à la recherche de "raccourcis", c'est-à-dire à l'aide de divers services prêts à l'emploi au lieu de tout mettre en œuvre à partir de zéro.

J'aurai besoin d'une sorte de backend pour stocker les données de l'application. J'ai regardé autour de moi et j'ai trouvé Firebase, qui semble emporter une partie du travail de créer un backend distinct et une API pour communiquer avec le front-end.

Mais cela signifie également que je devrais mettre la logique commerciale à l'avant, dans l'application Web angular2, non?

Donc, si j'aimerais que j'aimerais faire une application mobile avant, je devrais dupliquer le code de la logique d'entreprise?

Je suppose que l'alternative serait de créer un backend contenant la logique commerciale et utilise Firebase pour son stockage de données, mais cela semble un peu bizarre (ne pouvais-je pas simplement utiliser un orm ou quelque chose directement dans mon backend pour obtenir le même résultat sans beaucoup plus de travail?)

Comment les gens structurent-ils généralement ces types d'applications, s'ils veulent utiliser Firebase par exemple?

10
Magnus W

Q: Mais cela signifie aussi que je dois mettre la logique métier dans la fin de l'avant, dans l'application Web Angular2, à droite

Oui. Si ce n'est pas soutenu par un serveur, l'entreprise doit être mise en œuvre quelque part.

Après l'acquisition de Google, Firebase a évolué de devenir une plate-forme pour les développeurs d'applications mobiles qui ne pouvaient pas se permettre (ni ne pas avoir besoin) de déployer leur propre backend. Alors que la plupart des services sont des transversaux tout à fait des transversaux: le service de stockage, de connexion, d'analyse et de messages, il est vrai qu'il fournit également Fonctions cloud (sorte de Lambdas) qui peut être utilisée pour effectuer certaines entreprises. règles. Toutefois, pour les applications d'entreprise ou les grandes applications avec un domaine complexe et une logique commerciale, ce type de soutien tombe court.

Ainsi, comme vous le devez peut-être, Firebase ne nous exonte pas d'avoir du backend dédié à l'hôte et à la gestion des opérations spécifiques aux entreprises.

Q: ? Donc, si un jour je à l'avenir, je voudrais faire une application mobile avant la fin, je dois dupliquer le code de logique métier

Pas nécessairement. Si l'application Web est construite sur des plates-formes transversales angulaires telles que Naticscript Peut vous permettre de réutiliser les composants Web, les libs, les utilitaires, les modèles, etc. Je n'ai pas approuvé au sujet, donc je ne peux pas vous assurer une compatibilité complète. La clé repose sur Typescript , les deux Angular et NativeScript nous oblige à coder sur TS.

La question est alors où le Javascript pour l'hôte de sa distribution et versioning . Un mot [~ # ~] cdn [~ # ~ ~] .

Q: Je suppose que l'alternative serait de créer un arrière-plan qui contient la logique métier et utilise Firebase pour son stockage de données, mais cela semble un peu bizarre (je ne pourrais pas utiliser juste un ORM ou quelque chose directement dans mon back-end pour obtenir le même résultat sans beaucoup plus 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 petite chose. Sans parler de la gestion de la sécurité, de l'évolutivité, de la disponibilité, etc. Ainsi, avoir un fournisseur de DB s'occupant de ces choses est intéressant. Ce n'est pas une idée folle de nos jours avoir notre base de données quelque part sur le nuage. Bien sûr, je ne le suggérerais pas si nous mettions en œuvre le middleware et les back-fins d'une banque. Mais cela pourrait être logique pour la session du client, les profils de l'utilisateur, les préférences et ce type de données qui vit généralement sur le côté client ou les données que nous ne nous soucions pas.

D'autre part, avoir notre back-end est utile pour une simple raison, découplage .

Au lieu de coupler nos clients à toutes sortes de services, nous ne gérons pas et que nous ne contrôlons pas, nous déployons une application côté serveur de l'endroit où nous nous occupons de ces choses afin que nos clients ne soient pas à s'inquiéter des problèmes tels que les arrêts de services ou la rupture changements. De plus, nous gagnons sur la simplicité car notre back-end agit comme une façade.

Q: ? Comment les gens structurent habituellement ce genre d'applications, si elles veulent utiliser Firebase par exemple

Il varie considérablement d'un projet au projet. Par exemple, nous utilisons Firebase + Back-end.

  • DB Firebase pour partager des données entre appareils comptes-sessions . Également en tant que changelog, lorsque notre backend est temporairement indisponible, les clients envoient les opérations d'écriture au journal, qui est synchronisée ultérieurement.

  • Firebase messages Cloud nous fournit en amont/aval notifications Push et sujets. Nous utilisons le service pour l'échange de pub/sous-message.

  • analyse Firebase La plupart du temps pour les métriques.

  • back-end pour tout strictement lié à l'entreprise

2
Laiv

Réponse courte: N'utilisez pas la logique commerciale.

Réponse longue: Vous décrivez une application qui semblait suffisamment petite pour ne pas avoir une logique commerciale distincte; évaluer si vous avez vraiment une telle logique d'entreprise en premier lieu; Beaucoup de logique d'entreprise peuvent être réduits par la conception de données et un peu par la couche de présentation. De nombreux petits systèmes sont principalement crud et n'ont aucune logique commerciale réelle; Beaucoup de fois, j'ai vu deux ou trois couches de classes qui ne sont que des objets passthroughs laissant de l'espace pour un avenir qui n'arrivera jamais.

Vous pouvez commencer par une API en dehors de Firebase et introduisez plus tard une couche supplémentaire pour la logique des entreprises lorsque vous trouvez qu'il y a un besoin réel de celui-ci, tant que vous concevez votre contrat assez bien pour le service pour conserver une signature stable pendant que le la mise en œuvre derrière peut changer.

1
Bruno Guardia