Куди подіти бізнес-логіку, якщо використовуєте Firebase?


10

Я збираюся розпочати розробку веб-програми на одній сторінці, яка дуже спростила систему багатокористувацької документації. Передній кінець, ймовірно, використовуватиме Angular2.

Проект має короткий термін, тому я шукав "ярлики", тобто використовую різні готові сервіси замість того, щоб реалізовувати все з нуля.

Мені знадобиться якийсь бекенд, щоб зберігати дані програми. Я оглянувся і знайшов Firebase, який, здається, забирає частину роботи над створенням окремого бекенда та API для спілкування з передньою частиною.

Але це також означає, що я повинен був би поставити бізнес-логіку в передній частині, у веб-додатку Angular2, правда?

Отже, якщо я якось у майбутньому хотів би зробити передній край мобільного додатка, мені доведеться дублювати кодекс бізнес-логіки?

Я думаю, альтернативою було б створити бекенд, який містить ділову логіку та використовує Firebase для зберігання даних, але це здається трохи дивним (я не міг просто використовувати ORM або щось безпосередньо у своєму бекенді, щоб досягти такого ж результату без набагато більше роботи?)

Як люди зазвичай структурують такі програми, якщо вони хочуть, наприклад, використовувати Firebase?


З якою базою даних / ормою тощо ви найбільше знайомі? Це, мабуть, те, що найшвидше потрапить до вас.
Роберт Харві

Для цього проекту я, мабуть, використовував би якісь технології, які раніше не використовував, тому було б навчитися в будь-якому випадку ...
Magnus W

Вам просто потрібно зберігання даних або ви також намагаєтесь використовувати можливість миттєвого натискання? Якщо ви не сприймаєте це як ділову логіку, кожна передня технологія може просто обробляти її безпосередньо своїм власним кодом підключення. Не впевнений, що ОРМ зробить це.
JeffO

Відповіді:


2

Питання: Але це також означає, що мені доведеться розміщувати бізнес-логіку в передній частині, у веб-додатку Angular2, правда ?

Так. Якщо він не підтримується сервером, бізнес має бути десь реалізований.

Після придбання Google Firebase перетворилася на платформу для розробників мобільних додатків, які не могли дозволити собі (або не потребують) розгортання власного сервера. Хоча більшість сервісів є досить поперечними: зберігання, логін, аналітика та послуга повідомлень, правда, що вони також надають хмарні функції (на зразок лямбда), які можуть бути використані для виконання деяких бізнес-правил. Однак для корпоративних програм або великих додатків зі складною доменною та діловою логікою такий тип підтримки не вистачає.

Отже, як ви здогадуєтесь, Firebase не звільняє нас від того, що ми проводимо бекенд, присвячений розміщенню та виконанню бізнес-операцій.

З: Отже, якщо я колись у майбутньому мені хотілося б зробити мобільний додаток переднім, мені доведеться дублювати бізнес-логічний код?

Не обов'язково. Якщо веб-додаток побудовано на Angular, крос-платформи на зразок NativeScript можуть дозволити вам повторно використовувати веб-компоненти, бібліотеки, утиліти, моделі тощо. Я не заглиблювався в тему, тому не можу запевнити вас у повній сумісності. Ключ лежить на TypeScript , як Angular, так і NativeScript, вимагає від нас кодування на TS.

Тоді питання полягає в тому, де розмістити Javascript для його розповсюдження та версії . Слово CDN .

З: Я думаю, альтернативою було б створити бекенд, який містить бізнес-логіку і використовує Firebase для зберігання даних, але це здається трохи дивним (я не міг просто використовувати ORM або щось безпосередньо у своєму бекенде, щоб досягти того самого результат без значно більшої роботи?)

Деякі міркування.

З одного боку, хостинг, розгортання, управління та підтримка бази даних - це не мало. Не кажучи вже про безпеку роботи, масштабованість, доступність тощо. Тому цікаво мати постачальника баз даних, який доглядає за цими речами. Не божевільна ідея в наші дні база даних десь на хмарі. Звичайно, я б не пропонував цього зробити, якби ми впроваджували проміжне програмне забезпечення та резервні програми для банку. Але це може мати сенс для сеансу клієнта, профілів користувача, налаштувань і такого роду даних, які зазвичай перебувають на стороні клієнта або даних, які нам не цікаві.

З іншого боку, мати нашу задню частину корисно з простої причини, роз'єднання .

Замість того, щоб зв'язувати наших клієнтів із усіма видами послуг, якими ми не керуємо та не керуємо, ми розгортаємо серверну програму, з якої ми доглядаємо за цими речами, так що нашим клієнтам не потрібно хвилюватися з питань, таких як вимкнення послуг чи порушення роботи. зміни. Окрім того, ми отримуємо перевагу від простоти, оскільки наш бек-енд працює як фасад.

Питання: Як люди зазвичай структурують такі програми, якщо вони хочуть, наприклад, використовувати Firebase?

Він значно варіюється від проекту до проекту. Наприклад, ми використовуємо Firebase + бек-енд.

  • БД Firebase для обміну даними між пристроями-обліковими записами-сеансами . Також як журнал змін, коли наш сервер часу тимчасово недоступний, клієнти надсилають операції запису в журнал, який синхронізується пізніше.

  • Хмарні повідомлення Firebase надають нам сповіщення та теми, що надходять за течією та за течією. Ми використовуємо послугу для обміну повідомленнями pub / sub.

  • Аналітика Firebase Основно для показників.

  • Бек-енд для всього, що суворо пов'язане з бізнесом


1

Коротка відповідь: Не використовуйте ділову логіку.

Довга відповідь: ви описуєте додаток, який здається досить малим, щоб не мати окремої логіки бізнесу; оцініть, чи справді ви маєте таку ділову логіку в першу чергу; багато бізнес-логіки можна зменшити за допомогою дизайну даних і трохи за допомогою шару презентації. Багато малих систем здебільшого є CRUD та не мають реальної логіки бізнесу; я багато разів бачив два-три шари класів, які є просто перехожими предметами, що залишають простір для майбутнього, яке ніколи не настане.

Ви можете почати з API безпосередньо з Firebase, а пізніше ввести додатковий рівень для бізнес-логіки, коли виявите, що в ньому є реальна потреба, якщо ви досить добре розробите свій контракт, щоб послуга зберігала стабільний підпис під час реалізація позаду може змінитися.


Не можу сказати, як я згоден з цим. Я працював у цій галузі 20 років і працював над своєю часткою невеликих додатків CRUD, але майже завжди є певна логіка бізнесу. Навіть якщо це лише перевірка на замовлення або розрахунок податків, завжди є щось.
Жуль

Я згоден з вашим коментарем. Я не кажу, що логіка бізнесу є нульовою; що я говорю, це те, що вона недостатньо велика, щоб заслужити окремий шар. Я заперечую, якщо ці перевірки чи обчислення дійсно належать до бізнес-рівня, а не рівня даних або шару презентації (особливо спеціальні перевірки, як правило, відповідають моєму визначенню логіки даних), але справа не в тому, де слід класифікувати, але прагматично про те, куди це кодувати.
Бруно Гвардія

0

дивіться /programming/54994228/how-to-minimise-firebase-function-latency

Cloud Firestore є основним і єдиним з'єднанням між переднім і резервним. Звичайно, певна логіка може бути в рамках, але це стосується безпеки, яка може бути корисною тільки для користувача в автономному режимі. Ви повинні впроваджувати безпеку в самих колекціях Cloud Firestore, забезпечуючи ролі або все, що вам потрібно.

Потім використовуйте функції Cloud Cloud, які викликаються з тригера Cloud Firestore.

Ви НІКОЛИ НЕ повинні викликати функцію хмари з додаткової програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.