Приложение для мобильных устройств .NET CF — лучшая методология для борьбы с потенциальной автономностью?

StackOverflow https://stackoverflow.com/questions/224496

Вопрос

Я создаю мобильное приложение на VB.NET (компактная платформа) и мне интересно, как лучше всего подойти к потенциальному автономному взаимодействию на устройстве.В основном устройства поддерживают сотовую связь и стандарт 802.11, но могут быть отключены от сети (при плохом приеме и т. д.).Водитель будет сканировать коробки, когда они покидают свой грузовик, и я хочу обновить новое местоположение — немедленно, если есть сигнал сети, или поставить в очередь, если оно не в сети и обработано позже.Однако это заставило меня задуматься о том, как справляться с офлайн-зависимостью в целом.

  • Кэширую ли я на устройстве как можно больше данных, чтобы использовать их, если оно находится в автономном режиме? По сути, на каждом устройстве будет копия (соответствующих) производственных данных?Или лучше отключить определенные функции в автономном режиме, чтобы в дальнейшем избежать головной боли с синхронизацией?Я знаю, что это довольно специфический вопрос, который зависит от моего приложения, но мне интересно узнать, пошли ли по этому пути другие.
  • Создаю ли я само приложение так, чтобы оно действовало так, как будто оно всегда находится в автономном режиме, отправляя все в своего рода локальную очередь, принадлежащую локальному классу (по сути, абстрагируя онлайн-/оффлайн-вещи), а затем заставляю класс отправлять данные на сервер как он может?А как насчет поиска данных – как его можно обрабатывать в «полуживом» режиме?
  • Или мне следует, чтобы приложение попыталось отправить запросы на сервер напрямую, в режиме реального времени, и обработать их, если сам запрос не удался?Я вижу потенциальную проблему, заключающуюся в том, что пользователь будет ждать истечения тайм-аута, но является ли это наиболее надежным способом сделать это?

Я не ищу конкретного решения, а просто истории о том, как разработчики добиваются этого, обеспечивая максимально удобный пользовательский интерфейс, со ссылкой на инструкции, «вот что следует учитывать» или что-то в этом роде.Спасибо за ваши указания по этому поводу!

Это было полезно?

Решение

Мы не можем дать вам однозначный ответ, поскольку не существует «правильного» ответа, подходящего для всех сценариев использования.Например, если вы используете SQL Server на серверной стороне и SQL CE локально, вы всегда можете настроить репликацию слиянием, и механизм обработки данных сделает все это за вас.Это довольно чисто.Использование блока автономного приложения может решить эту проблему.Использование магазина и пересылки может быть вариантом.

Вы можете хранить локально, а затем выполнить собственную синхронизацию с прямым подключением, веб-службой службы WCF, используемой при обнаружении сети.Вы можете использовать MSMQ для доставки.

Вам нужно думать не о том, какой путь является «правильным», а о том, как ваша реализация повлияет на удобство использования приложения.Если вы отключите функции из-за отсутствия подключения, можно ли будет использовать приложение?Если у вас устаревшие данные, это проблема?Возможно, некоторые важные данные необходимо передать, если у вас есть GSM/GPRS (который обычно не бесплатен), и больше будет сделано, если у вас есть 802.11.Возможно, вы сможете работать весь день с открытыми утром справочными таблицами и загружать только транзакции, а устройство будет отслеживать внесенные изменения.

По сути, это действительно зависит от того, как оно используется, характера данных, важности транзакций данных между полевыми устройствами, влияния задержки данных и, возможно, других факторов, о которых я не могу вспомнить сразу.

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

Другие советы

Я сам этим не пользовался, но изучали ли вы возможности CF по принципу «хранения и пересылки»?Это может удовлетворить ваши потребности.Я считаю, что он использует почтовый ящик Exchange в качестве очереди сообщений для отправки пакетов SOAP на устройство и обратно.

Лучший способ добиться этого — всегда работать в автономном режиме, а затем использовать очереди сообщений для обработки отправки изменений на устройство и с него.Например, когда драйвер помечает что-то как доставленное, обновите этот элемент как доставленный в вашем локальном магазине, а также поместите сообщение в исходящую очередь, чтобы сообщить серверу, что оно доставлено.Когда соединение установлено, отправьте все элементы в очереди обратно на сервер и получите все сообщения, поставленные в очередь, с сервера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top