Когда пользователь заходит на сайт, на стороне клиента и сервера создается пустая корзина покупок. Когда он добавляет продукт в SC, выполняется вызов RPC для добавления продукта на стороне сервера. Нам нужно сделать ту же самую клиентскую сторону, чтобы синхронизировать и обновить интерфейс. Если мы этого не сделаем и перейдем к представлению, которое имеет ссылку на старый SC. Пользовательский интерфейс не будет обновляться соответствующим образом (пустой SC, тогда как в нем есть один продукт).
Раствор 1
Вызов RPC возвращает обновленный SC и делает clientSC = returnedSC
. Это не очень эффективно, так как по сети передается много данных.
Решение 2
Вызов RPC возвращает добавленный продукт, а на клиентской стороне вызывает метод addProduct
, который добавляет продукт в список, а не хранит его в хранилище данных (как на стороне сервера).
Решение 3
То же, что и в решении 2, но используется событие для уведомления докладчиков (я использую шаблон MVP), имеющих ссылку на SC.
Какой из них лучше, в целом, как лучше синхронизировать модель клиента и сервера?