Повторное использование моделей Backbone.js на стороне сервера с Node.js и Websockets - PullRequest
29 голосов
/ 19 сентября 2011

Я проработал свой путь:

http://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node

У меня есть несколько вопросов о совместном использовании моделей на стороне сервера и несколько вопросов о переопределении синхронизации.Архитектура синхронизации моделей в реальном времени ftw.

  1. Models
    Так что в этом примере он синхронизирует все свое состояние приложения.Часть моего состояния приложения - это модель User, которая обрабатывает такие вещи, как вход в систему, поиск типа платформы, которую они используют, и т. Д. Я использую это неправильно?У меня есть данные сеанса на стороне клиента в этой модели, что-то, что действительно не должно быть на сервере, я должен все равно поместить их на сервер?

    Для других моделей, которые являются строго прикладными данными, которые должны быть синхронизированыс сервером, как мне управлять этими моделями на сервере?Существует ли компонент типа «представление», который обрабатывает изменения в модели и воздействует на модель в зависимости от потребностей сервера?

  2. Синхронизация
    Я хочупереопределите метод синхронизации для синхронизации с сервером и любыми другими клиентами, которым нужны обновленные данные.Как вы могли бы написать метод синхронизации, который работает клиент -> сервер и сервер -> клиент, чтобы независимо от того, где он вызывался, все обновлялись?

1 Ответ

4 голосов
/ 15 октября 2011

Есть пара аспектов, которые делают магистраль очень подходящей для клиентских приложений, но совсем не полезной для серверных сред.

Ядром магистрали является ее модуль Events, который является структуройпостроен на основе (модели - это в основном коллекции, управляемые событиями, представления - это связующий код для рендеринга, основанный на изменениях событий модели и т. д.), практически бесполезен на сервере: единственное реальное событие, которое вы когда-либо получаете, это запросили различные события для данных сокета, и оба обрабатываются (и учитываются) промежуточным программным обеспечением и самим узлом.

Модели:

  • Если вы используете какой-либо ORM на своем сервере, он уже должен обеспечивать обработку событий, необходимую для работы с изменениями модели.А поскольку вы не выполняете никаких динамических обновлений представлений на сервере, вам не требуется какой-либо из базовых компонентов инфраструктуры для моделей.

  • , если вы не используете ORM (как в реальном времени, никогда не регистрируемый чат :), вы можете использовать модели Backbone, но они не подходят для больших наборов данных или любого типа хранилища, и, в конце концов, вы все еще используете Hash / с подчеркиваниемМассив.

...