Где писать функционал приложения? На клиенте или на сервере?

Реализация “тонкого” или “толстого” клиента.

Допустим мы делаем приложение - ленту рекомендаций, на базе которого лежит алгоритм ранжирования, который принимает решения какие посты показывать, а какие нет.

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

Тонкий клиент
Отправляется Get запрос серверу. Сервер, запускает у себя программу ранжирования и запрашивает данные из базы данных и выдает оформленный в JSON ответ.

Толстый клиент
Делать на клиенте обработку (алгоритм ранжирования) и сразу (из приложения) опрашивать базу данных, при этом сократив серверные расходы (из-за того что вся обработка происходит на клиенте). Ведь алгоритмы на клиентской машине (Android/IOS) будут исполняться быстрее, чем ждать, когда ответит сервер.

Как обычно делают?
  • Вопрос задан
  • 468 просмотров
Пригласить эксперта
Ответы на вопрос 6
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Что клиент не должен видеть в исходном коде страницы - то на сервер.
Остальное - на клиенте.
Ответ написан
Комментировать
Интеллектуальный труд, который вложен в алгоритм ранжирования я бы не стал перекладывать на клиентов.
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Это очень холиварный вопрос.

Толстые клиенты обычно делают когда приложение держит в себе огромный кеш данных для работы в оффлайне или условиях плохого интернета.

Толстый клиент + "простой" сервер обычно дороже в разработке и поддержке чем тонкий клиент и "сложный" сервер.

С точки зрения нагрузки, функционал на клиент выносят когда соблюдаются условия:
- обработка данных дорогая (сортировка массива к этому не относится)
- в логике обработки данных нет ценности
- специфические случаи когда критично быстродействие ux, а обработка данных на клиенте получается быстрее обработки на сервере + время на пересылку данных.

Я считаю что без очень веских оснований делать толстый клиент не нужно.
Ответ написан
@xoma99
Тут имхо, все зависит от сложности вычеслений.
Но я как разработчик бэка, обычно все вычисления отдаю серваку, зачастую мощей у него больше.
Но повторюсь, надо смотреть на алгоритмы, их сложность и тяжеловесность.
Имхо
Ответ написан
@Andrey_Dolg
Это сервер обычно, но ранжирование может быть ограничено и пересчёт ранжирования не быть постоянным при каждом запросе, а скажем просто раз в сутки. Точек оптимизации довольно много. Остальное вам верно ответили.
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы