Облачная база данных (WCF) или случайно подключенная архитектура с помощью Microsoft Sync?

Я работаю над приложением.NET 4 Winforms, и у меня возникла проблема с выбором наилучшего способа обработки базы данных. Мы хотим предложить облачную систему баз данных, в которой приложение может взаимодействовать с "облаком" через службы WCF и, по сути, делать то же самое, что и подключение к локальной базе данных (локально SQL Express, SQL Server 2008 R2 на сервере).

Мы видим два варианта:

1) Используйте WCF и выполняйте все звонки в облачную базу данных. 2) Используйте локальную базу данных и используйте Microsoft Sync Framework для синхронизации облака.

В конечном итоге у нас будет веб-приложение, которое также будет использовать облачные данные в качестве другого интерфейса пользователя.

Дилемма, очевидно, что использовать. Если мы перейдем к варианту 1, то нам не нужно устанавливать SQL Express везде, где используется программное обеспечение, например, в общедоступном месте, и данные пользователя могут быть загружены в эту БД. Опция WCF позволяет всем данным оставаться центральными.

В конечном итоге мы добавим мобильные устройства, чтобы iPhone, iPad и Android также могли синхронизироваться с облаком.

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

Спасибо.

1 ответ

Если вы хотите разрешить сценарии автономного / временного подключения, почему бы просто не использовать оба варианта 1) и 2) по мере необходимости? Если вы используете одну и ту же n-уровневую архитектуру через WCF для доступа к базе данных независимо от того, где она находится (облачная или локальная база данных), ваш код всегда будет одинаковым, единственное отличие будет состоять в том, что иногда подключенное приложение будет синхронизировать данные (также предположительно) через WCF).

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

Если вы можете предоставить больше информации о том, что именно решение собирается сделать, это также может помочь.

Другие вопросы по тегам