XML, SQL Server Compact или что-то еще?

Я разрабатываю настольное приложение, которое должно будет собирать данные (от пользователя) и хранить их локально безопасным образом. Эти данные необходимо будет синхронизировать с центральной базой данных при наличии подключения к Интернету. Приложение WPF, и я хотел бы воспользоваться новыми функциями привязки данных WPF. Я действительно хочу, чтобы это приложение было легким и, следовательно, не имело формальных бизнес-объектов, а просто привязывалось непосредственно к файлу XML. Однако моя проблема с этим связана с безопасностью. Я мог видеть шифрование файлов XML, это реалистичный вариант. Еще одна причина, по которой я хотел использовать XML, — это взаимодействие с другими приложениями (на рабочем столе), что для приложений такого типа происходит часто.

С другой стороны, есть SQL Server Compact, но для его использования я, скорее всего, хотел бы, чтобы бизнес-объекты представляли таблицы, а для взаимодействия с другими приложениями мне все равно нужно было бы выдавать данные в XML. Безопасность была бы легкой, просто добавьте пароль в базу данных.

Что вы думаете, ребята? Есть ли что-то, что я не принимаю во внимание, достаточно ли я предоставил информации о своей проблемной области?


person Dylan Vester    schedule 04.07.2010    source источник


Ответы (2)


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

  • WPF
  • SQL Server СЕ
  • Структура сущности
  • Sync Framework ( -> SQL Server 2008 с использованием отслеживания изменений в моем случае)

Я понимаю, что вам нужно что-то легкое, но я должен сказать, что Entity Framework & Bindings снимает большую часть проблем с привязкой данных и созданием пользовательского интерфейса, поэтому вы можете сосредоточиться на проблеме, а не на технологии.

Я бы использовал WCF для привязки к внешним приложениям.

person Richard Harrison    schedule 04.07.2010
comment
Так вы привязывались напрямую к объектам? Вам приходилось писать методы поиска для всего, к чему вы хотели привязаться? Кроме того, для аналогичного приложения мы использовали Sync Framework, и из-за недостатков наших наборов данных нам пришлось отказаться от него. Сколько данных вы синхронизируете? - person Dylan Vester; 04.07.2010
comment
Я имею в виду привязку непосредственно к объектам, была ли у вас установка N-Tiered? - person Dylan Vester; 04.07.2010
comment
Привязка напрямую к объектам EF для настольного приложения, которое является структурированным/многоуровневым, а не многоуровневым. Синхронизация данных занимает небольшое количество МБ. Не могу представить, что было бы проще синхронизировать. с помощью XML. - person Richard Harrison; 04.07.2010
comment
Вы изучали платформу Azure? Это также то, что я рассматриваю. - person Dylan Vester; 04.07.2010
comment
Следующая версия почти наверняка будет синхронизироваться с SQL Azure вместо SQL 2008 — мне осталось только написать код. Первоначальные впечатления кажутся хорошими; использование SqlAzureDataSyncClient кажется легким, хотя я еще не использовал его... см. microsoft.com/downloads/ - person Richard Harrison; 04.07.2010

Если вам нужно какое-то локальное хранилище без лишних хлопот, обязательно обратите внимание на SQLite.

Он имеет отличную поддержку .NET, включая поддержку Entity Framework, и практически не требует установки сервера или что-нибудь подобное (просто включите некоторые DLL в развертывание вашего приложения - xcopy или иначе).

Он также позволяет зашифровать весь файл базы данных (*.s3db) для защиты его содержимого.

person marc_s    schedule 04.07.2010
comment
Нет установки? Это действительно помогло бы распространению. Пользователи, которых мы обслуживаем с помощью этого приложения, имеют очень строгие групповые политики на своих машинах, и было бы здорово установить на одну вещь меньше. Я провел немного времени с SQLite, когда смотрел на Google Gears. Как это соотносится с SQL Server Compact? - person Dylan Vester; 04.07.2010
comment
@Dylan Vester: хорошо, извините, я имею в виду, что нет необходимости устанавливать сервер или что-то в этом роде. Просто включите несколько DLL в ваше развертывание xcopy, и все готово. - person marc_s; 04.07.2010