jsdevel
@jsdevel
Java разработчик. Хороший парень, наверное.

Архитектурный вопрос. Может ли клиент иметь бизнес логику?

Архитектурный вопрос. Может ли клиент иметь бизнес логику?
Просто мне кажется, что сейчас начали путаться в определениях толстого и тонкого клиента.

Если SPA приложение получает с бек-енда объекты и согласно им соблюдает правила, принципы того или иного бизнеса позволяет отправить на бек-енд готовый JSON для сохранения, где бек-енд проверяет актуальность данных, повторяет бизнес-логику. Можно ли назвать SPA приложение тонким клиентом?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
@grinat
Путаницы нет, проблем в том что в ряде случаев клиенты стали настолько толстыми, что на клиент фактически выкачивается вся бд, потом по хитрой логике она синхронизируется. Как итог при сложных расчетах это все еле шевелится на клиенте, потому что на клиенте не выйдет купить еще плашку с озу либо добавить стойку. Поэтому и пошел тренд на тонкие клиенты. Spa может быть как толстым, когда выкачивается все с сервера, все это может работать оффлайн, когда есть интернет синхронизуется, так и тонким, когда просто получаются данные и отображаются, а за все что сложнее 2+2 отвечает сервер. Но большое приложение никак не выйдет сделать толстым spa, толстым можно сделать приложение на electron.
Клиент может иметь логику в рамках своей интерактивности, то есть если добавляются товары в корзину, то нет смысла делать отдельный запрос и считать сумму на сервере(при условии что например нет скидки которая зависит от всей истории заказов пользователя за последние годы и нет задачи обеспечить согласованность на всех устройсвах где залогинен польователь и мог паралельно сделать заказы и т.п.). Но за генерацию инвойса с итоговой суммой может отвечать только бакэнд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
Вкратце: Да.

Подлиннее:
Путались в определениях люди всегда и будут путаться. Да и сложно как-то взять определение которое было сделано давно для одних технологий и архитектур и натянуть на современные, другие реалии. Можно конечно и ежа на кактус натянуть, но лучше потратить эти усилия на что-то более полезное.
Даже термин SPA приложение уже не так актуален и не так хорошо ложится на то что сейчас пишут.

Называйте клиента клиентом, сервер сервером, и этого будет достаточно. Хотя конечно на нерд-вечеринке в конкурсе баззвордов вы возможно проиграете, если это для вас важно.
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
В общем случае может и даже должно, чтобы у клиента не тормозило приложение после каждой кнопки. Но бизнес-логика на клиенте должна быть разрешена только в рамках доверия к клиенту. То есть бекенд отправляет данные и условно готовые формулы на клиент, и он там дальше с ними играется в свое удовольствие. Но когда пользователь хочет закрепить результат в базе данных на беке - тут снова нужно проверять, что пользователь ничего не нахимичил, не ошибся и не является хакером.

Назвать тонким клиентом можно. Но зависит от того, сколько логики выносится на клиент. Если много, то это уже не тонкий клиент. Например, игра типа шутера - основная логика на сервере, но и на клиенте прилично вычислений.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы