[Wcf] Разработка Windows Mobile - с чего начать?


Answers

SqlCE - это только один из вариантов, доступных для локального хранения данных на устройстве Windows Mobile, и хотя это отличная база данных, она имеет ограничения. Во- первых , SqlCE не будет работать (период) под шифрованием (другими словами, если ваш пользователь шифрует место, где находится ваш SDF-файл, вы больше не сможете получить доступ к данным).

Вторая (и самая критическая) слабость SqlCE заключается в инструментах RDA / Merge Replication. SqlCE Merge Replication не на 100% надежна в ситуациях, когда сетевое соединение может упасть во время репликации (очевидно, очень распространено в устройствах Windows Mobile). Если вам нравится пытаться объяснить отсутствующие или поврежденные данные для ваших клиентов, продолжайте использовать SqlCE и репликацию слиянием.

Oracle Lite является хорошей альтернативой SqlCE, хотя он тоже не работает должным образом при шифровании. Если шифрование является потенциальной проблемой, вам нужно найти механизм базы данных, который работает под шифрованием (я не знаю об этом), или написать свой собственный компонент persistence с использованием XML или что-то в этом роде.

Написание приложения WM в качестве интерфейса, которое в первую очередь взаимодействует с веб-службой в режиме реального времени, будет работать только в постоянно связанной среде. Лучший подход заключается в том, чтобы написать приложение как интерфейс, который в основном взаимодействует с локальными данными (SqlCE, Oracle Lite, XML или что-то еще), а затем создает отдельный компонент синхронизации, который обрабатывает нажатие и вытягивание данных.

Опять же, репликация слияния SqlCE делает это толкание и вытягивание красиво и элегантно - оно просто не работает все время. Если вы хотите, чтобы механизм репликации работал надежно, вам придется писать свои собственные. В Oracle Lite есть что-то, называемое таблицей моментальных снимков, которая очень хорошо работает для этой цели. Таблица снимков в дорожках Olite изменяется (например, добавляет, обновляет и удаляет) и позволяет вам отдельно запрашивать изменения и обновлять центральную базу данных (через веб-службу) для соответствия.

Question

Хорошо, я скоро начну путь развития мобильных приложений Windows. Я ничего не знаю об этом предмете, и я ищу людей с опытом, чтобы сообщить мне о любых gottchas, о которых вы, возможно, знаете.

Прямо сейчас у меня даже нет недостатка в том, что требуется, но предположение заключается в том, что приложение будет очень немного больше, чем куча CRUD-форм для обновления данных. Единственное, что у меня есть, - это то, что приложение будет нуждаться в поддержке автономного хранилища, когда нет доступного сигнала. Это, в свою очередь, очевидно, потребует какой-то синхронизации, когда сигнал возвращается.

Мои первоначальные мысли состоят в том, что приложение будет в первую очередь быть интерфейсом для взаимодействия с уровнем веб-сервиса. Я полагаю, что WCF будет подходящей технологией для создания этих услуг? Я также подумал, что SQL Server CE станет хорошим маршрутом для решения проблем автономного хранилища.

Любое знание, которое, по вашему мнению, полезно в этом домене, будет оценено по достоинству. Советы, ссылки, книги, что-то ценное.

EDIT: Было отмечено, что есть два способа перехода с автономной синхронизацией. Чтобы либо использовать некоторую форму очереди сообщений, либо использовать инструменты синхронизации SQL. Может ли кто-нибудь предложить хорошее сравнение и введение в них?

РЕДАКТИРОВАНИЕ 2: После немного большего количества рытья у меня создается впечатление, что в принципе я могу использовать 3 разных подхода:

  1. Embededed Database, чтобы запросить синхронизацию в онлайн-режиме, когда это возможно
  2. MSMQ вместе с удалением .NET
  3. WCF с привязками ExchangeWebServiceMailTransport с использованием Exchange Server.

Теперь в первом выпуске было несколько замечательных моментов, и я думаю, что на каком-то уровне я понимаю проблемы, с которыми я столкнулся. Но я хотел бы получить немного больше информации о реализации MSMQ и использовании новых привязок WCF.




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

Теперь подавляющим советом здесь является использование встроенной базы данных, хотя теперь у меня есть варианты использования, и мне кажется, что мне потребуется синхронизация документа, а также реляционные данные. С учетом этого взаимодействие рабочего слоя кажется неизбежным. Поэтому мой вопрос заключается в том, как я могу обмениваться общими объектами и интерфейсами между слоями?




Вы не должны быть запуганы для разработки мобильных приложений Windows. Он мало чем отличается от разработки настольных систем. Я настоятельно рекомендую использовать .NET Compact Framework для разработки, а не C ++ / MFC.

Некоторые полезные ссылки:

  • Мобильный раздел в проекте Code. Вы найдете много статей, нужно немного копать, чтобы найти подходящий.
  • Smart Device Framework от OpenNetCF предлагает ценные расширения для компактной структуры.
  • Когда вы устанавливаете Mobile SDK, вы найдете ссылки на папки сообщества для блогов блога Windows Mobile и CF. Это также ценные ресурсы.

Что касается вашего приложения, вы правы в WCF и SQL Server CE. Это правильные способы обработки связи и хранения.

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

  • У вас должно быть какое-то управление питанием. Устройство может автоматически перейти в состояние приостановки. Кроме того, вы не должны потреблять энергию, когда вам это не нужно.
  • Сетевое подключение - сложная проблема. Вы можете регистрировать уведомления, когда какая-либо сеть (Wi-Fi, GPRS) становится доступной или недоступной. Вы также можете установить предпочтительные способы связи.
  • Сделайте интерфейс максимально простым. Пользователь использует большой палец и / или ручку, и он, вероятно, находится в движении.
  • Испытайте в реальном устройстве как можно раньше.



Для разработки мобильных приложений для Windows вы должны иметь базовые инструменты, такие как silverlight, visual studio, эмулятор Windows Phone и sqlite в качестве хранилища баз данных.







Owen вы можете совместно использовать код из Compact Framework -> Desktop, это только Desktop -> Compact Framework, который имеет проблемы совместимости, если вы используете определенные объекты, которые не поддерживаются CF.

Хотя рабочий стол lib не работает на CF, CF lib WILL работает на рабочем столе, вы также можете запускать CF.exes на рабочем столе!

Просто создайте библиотеку CF в качестве проекта, который определяет ваши базовые объекты / интерфейсы и т. Д.




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

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

Я поддержал предложение SqlLite BTW. MS не сохранила свою историю сохранения, но для CE.




Я должен был сделать это один раз. Странная настройка с Mac для разработки, и все мы были программистами на Java. И короткий срок. Макросы PowerPC тоже, поэтому нет возможности установить Windows для разработки Visual Studio, неважно, что деньги для этого никогда не появятся.

Мы закончили писать приложения с использованием Java, работающие на виртуальной машине IBM J9, с SWT для пользовательского интерфейса. Полностью бесплатный стек разработки. Простота развертывания. Код работал на любой платформе, которую мы хотели, а не только PocketPC / WinMob.

Большая часть работы была на стороне сервера - база данных, сервер веб-сервисов. Логика. Механизм отчетности. Клиентская сторона была не совсем простой: получить шаблоны форм с сервера (потому что они часто менялись), детали сайта (многосайтовое развертывание), создавать пользовательский интерфейс из шаблона формы (с использованием некоторых компонентов GUI GUI, которые замечательный для разработки PocketPC, например, ExpandBar), собирайте данные с помощью интерфейса точки и щелчка (минимизируя ввод клавиатуры, если это возможно), а затем отправляйте его обратно на сервер.

Для автономного хранения мы использовали XML-файлы на самом устройстве. Более чем достаточно для наших нужд, но ваши могут отличаться. Может быть, рассмотреть SQLite?




Links