Gdzie umieścić logikę biznesową, jeśli używasz Firebase?


10

Zaraz zacznę tworzyć jednostronicową aplikację internetową, która bardzo uprościła system dokumentacji dla wielu użytkowników. Front prawdopodobnie użyje Angular2.

Projekt ma krótki termin, więc szukałem „skrótów”, tj. Korzystania z różnych gotowych usług zamiast wdrażania wszystkiego od zera.

Potrzebuję jakiegoś zaplecza do przechowywania danych aplikacji. Rozejrzałem się i znalazłem Firebase, który wydaje się zabierać część pracy związanej z tworzeniem osobnego zaplecza i interfejsu API do komunikacji z interfejsem użytkownika.

Ale to także oznacza, że ​​musiałbym umieścić logikę biznesową w interfejsie, w aplikacji internetowej Angular2, prawda?

Więc jeśli kiedyś chciałbym stworzyć interfejs aplikacji mobilnej, musiałbym powielić kod logiki biznesowej?

Wydaje mi się, że alternatywą byłoby utworzenie zaplecza zawierającego logikę biznesową i używającego Firebase do przechowywania danych, ale wydaje się to nieco dziwne (czy nie mogę po prostu użyć ORM lub czegoś bezpośrednio w backendie, aby osiągnąć ten sam wynik bez dużo więcej pracy?)

Jak ludzie zazwyczaj tworzą takie aplikacje, jeśli chcą na przykład skorzystać z Firebase?


Z jaką bazą danych / orm itp. Jesteś najbardziej zaznajomiony? Prawdopodobnie to zapewni ci najszybszy dostęp.
Robert Harvey

W tym projekcie prawdopodobnie użyłbym technologii, których wcześniej nie używałem, więc i tak będzie trochę nauki ...
Magnus W

Czy potrzebujesz tylko miejsca do przechowywania danych, czy też próbujesz skorzystać z możliwości natychmiastowego wypychania? Jeśli nie widzisz tego jako logiki biznesowej, każda technologia front-end może po prostu obsługiwać ją bezpośrednio za pomocą własnego kodu połączenia. Nie jestem pewien, czy ORM to zrobi.
JeffO,

Odpowiedzi:


2

P: Ale to oznacza również, że musiałbym umieścić logikę biznesową w interfejsie, w aplikacji internetowej Angular2, prawda ?

Tak. Jeśli nie jest wspierany przez serwer, firma powinna gdzieś zostać wdrożona.

Po przejęciu Google Firebase przekształciło się w platformę dla programistów aplikacji mobilnych, których nie było stać (lub nie trzeba) na wdrożenie własnego zaplecza. Chociaż większość usług ma charakter przekrojowy: przechowywanie, logowanie, analityka i obsługa wiadomości, to prawda, że ​​zapewnia również funkcje w chmurze (rodzaj lambdas), których można używać do wykonywania niektórych reguł biznesowych. Jednak w przypadku aplikacji korporacyjnych lub dużych aplikacji o złożonej logice domeny i biznesu tego rodzaju obsługa jest niewystarczająca.

Jak więc można się domyślić, Firebase nie zwalnia nas z posiadania zaplecza dedykowanego do hostowania i prowadzenia operacji biznesowych.

P: Więc jeśli kiedyś w przyszłości chciałbym stworzyć interfejs aplikacji mobilnej, musiałbym zduplikować kod logiki biznesowej?

Niekoniecznie. Jeśli aplikacja internetowa jest zbudowana na Angular, międzyplatformowe, takie jak NativeScript, mogą pozwolić ci na ponowne użycie komponentów internetowych, bibliotek, narzędzi, modeli itp. Nie zagłębiłem się w temat, więc nie mogę zapewnić pełnej kompatybilności. Klucz leży na TypeScript , zarówno Angular, jak i NativeScript wymaga od nas kodowania w TS.

Chodzi zatem o to, gdzie hostować Javascript w celu jego dystrybucji i wersjonowania . Słowo CDN .

P: Wydaje mi się, że alternatywą byłoby utworzenie zaplecza zawierającego logikę biznesową i wykorzystującego Firebase do przechowywania danych, ale wydaje się to trochę dziwne (czy nie mogę po prostu użyć ORM lub czegoś bezpośrednio w moim backendie, aby osiągnąć to samo wynik bez dużo więcej pracy?)

Kilka uwag.

Z jednej strony hosting, wdrażanie, zarządzanie i utrzymywanie bazy danych to niemała rzecz. Nie wspominając o obsłudze bezpieczeństwa, skalowalności, dostępności itp. Tak więc interesujący jest fakt, że dostawca DB zajmuje się tymi rzeczami. To nie jest szalony pomysł, aby nasza baza danych była gdzieś w chmurze. Oczywiście nie sugerowałbym tego, gdybyśmy wdrażali oprogramowanie pośrednie i zaplecze dla banku. Ale może mieć sens dla sesji klienta, profili użytkownika, preferencji i tego rodzaju danych, które zwykle znajdują się po stronie klienta lub danych, na których nam nie zależy.

Z drugiej strony posiadanie naszego zaplecza jest przydatne z prostego powodu, odsprzęgając .

Zamiast łączyć naszych klientów z różnego rodzaju usługami, którymi nie zarządzamy i nie kontrolujemy, wdrażamy aplikację po stronie serwera, z której dbamy o te rzeczy, aby nasi klienci nie musieli się martwić takimi problemami, jak zamykanie usług lub awarie zmiany. Dodatkowo zyskujemy na prostocie, ponieważ nasze zaplecze działa jak fasada.

P: Jak ludzie zazwyczaj tworzą takie aplikacje, jeśli chcą na przykład korzystać z Firebase?

Różni się znacznie w zależności od projektu. Na przykład używamy Firebase + back-end.

  • Firebase DB do udostępniania danych pomiędzy sesjami urządzeń-kont . Również jako dziennik zmian, gdy nasz backend jest chwilowo niedostępny, klienci wysyłają operacje zapisu do dziennika, który jest później synchronizowany.

  • Firebase Cloud Messages zapewnia nam powiadomienia push i tematy upstream / downstream. Korzystamy z usługi do wymiany wiadomości pub / sub.

  • Analizy Firebase Głównie dla metryk.

  • Back-end dla wszystkiego ściśle związanego z biznesem


1

Krótka odpowiedź: nie używaj logiki biznesowej.

Długa odpowiedź: opisujesz aplikację, która wydaje się na tyle mała, że ​​nie ma osobnej logiki biznesowej; oceń, czy naprawdę masz taką logikę biznesową; dużo logiki biznesowej można ograniczyć dzięki projektowi danych, a trochę warstwie prezentacji. Wiele małych systemów jest w większości CRUD i nie ma żadnej logiki biznesowej; wiele razy widziałem dwie lub trzy warstwy klas, które są po prostu obiektami przechodzącymi przez przestrzeń, pozostawiając przestrzeń dla przyszłości, która nigdy nie nadejdzie.

Możesz zacząć od interfejsu API bezpośrednio z Firebase, a później wprowadzić dodatkową warstwę dla logiki biznesowej, gdy okaże się, że jest to naprawdę potrzebne, pod warunkiem, że zaprojektujesz umowę wystarczająco dobrze, aby usługa zachowała stabilny podpis, podczas gdy wdrożenie może ulec zmianie.


Nie mogę powiedzieć, jak się z tym zgadzam. Pracuję w tej branży od 20 lat i pracowałem nad moją częścią małych aplikacji CRUD, ale prawie zawsze istnieje pewna logika biznesowa. Nawet jeśli są to tylko niestandardowe zatwierdzenia lub obliczenia podatkowe, zawsze coś jest.
Jules

Zgadzam się z twoim komentarzem. Nie twierdzę, że logika biznesowa jest zerowa; mówię, że nie jest wystarczająco duży, aby zasłużyć na osobną warstwę. Twierdziłbym, czy te walidacje lub obliczenia naprawdę należą do warstwy biznesowej, a nie warstwy danych lub prezentacji (szczególnie walidacje niestandardowe zwykle pasują do mojej definicji logiki danych), ale nie chodzi o to, aby określić, gdzie należy ją klasyfikować, ale pragmatycznie, gdzie go kodować.
Bruno Guardia

0

patrz /programming/54994228/how-to-minimise-firebase-function-latency

Cloud Firestore to podstawowe i jedyne połączenie między front-endem a backendem. Oczywiście niektóre elementy logiczne mogą znajdować się w interfejsie użytkownika, ale dla bezpieczeństwa, które zazwyczaj może być dostępne tylko dla korzyści użytkownika w trybie offline. Powinieneś wdrożyć zabezpieczenia w samych kolekcjach Cloud Firestore, zabezpieczając role i cokolwiek potrzebujesz.

Następnie użyj funkcji chmurowych wywoływanych z wyzwalacza Cloud Firestore.

NIE WOLNO wywoływać funkcji chmury z aplikacji front-end.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.