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?
źródło
Odpowiedzi:
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
źródło
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.
źródło
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.
źródło