2014-08-29 5 views
3

Фон: Я собираюсь начать проект, требующий сначала мобильного. Я использую AngularJS для клиентской стороны, SQL для БД и .net WEBApi2 для связи. Я прочитал о BreezeJS и хотел бы использовать его в качестве моей функции обработки данных в автономном режиме, прежде всего потому, что я использую EF6 на стороне .NET, и мне нравится идея о том, что Бриз может управлять и создавать объекты с помощью метаданных EF.BreezeJS оффлайн/онлайн-управление

При разработке приложения я застрял в идее, как точно управлять внезапной потерей сети. Я понимаю, что BreezeJS хранит его EntityManager в рабочей памяти, поскольку он используется. Если пользователь работает в сети, а затем браузер выходит из строя или компьютер выключается, а затем веб-приложение повторно открывается в автономном режиме, значит, Breeze изящно восстанавливается или используется в качестве прецедента, который мне нужно обрабатывать?

Вопрос: Я думаю, мой вопрос просто, есть ли способ, что я могу заставить BreezeJS НЕ использовать рабочую память, но отрабатывать LocalStorage вместо этого? Если нет, должен ли я экспортировать события в локальное хранилище при каждом изменении или есть лучший способ справиться с этим конкретным вариантом использования?

ответ

2

Breeze не может автоматически работать с localStorage, однако вы можете создать таймер, который периодически сохраняет состояние EntityManager в localStorage. Не уверен, что это отличная идея.

Вы должны различать случай, когда сервер недоступен, и в этом случае имеет смысл хранить EntityManager в localStorage, чтобы вы могли сохранять любые изменения при возврате сервера. В отличие от беспокойства по поводу сбоя браузера/клиента, в этом случае я думаю, что лучше просто не обрабатывать этот случай. Сложность и первоочередные последствия довольно велики, и если вы действительно беспокоятся об этом, тогда просто выполняйте сохранение (на сервер) после каждого изменения (опять же не обязательно рекомендуемый подход, но он доступен).

+0

Основная проблема заключается в том, что приложение будет использоваться людьми в местах, где батареи внезапно или неожиданно будут умирать. Мне нужно убедиться, что ВСЕ информация, которая вводится до той точки, где батарея умирает, сохраняется. Таймер - хорошая альтернатива, но я думаю, что после каждого изменения мне нужно будет обновить локальное хранилище, чтобы убедиться, что все данные есть. – JakeHova