Я разрабатываю настольное приложение, и этому приложению для запуска требуется некоторая информация, но она не меняет эту информацию (данные должны загружаться при каждом запуске приложения, но данные никогда не изменяются). Данные должны храниться на том же компьютере, на котором запущено приложение (хранилище на стороне клиента?).
Также лучше, если пользователь не может легко изменить эту информацию (предположим, что он не обладает большими знаниями в области ИТ).
Как мне хранить такую информацию? Локальная база данных? XML, который отправляется с приложением?
Я использую WPF.
Ответы:
Двоичный файл был бы очевидным ответом, но это зависит от того, как вы его загружаете - вы можете также упростить себе жизнь, если сможете.
XML может быть хорошим выбором, так как в C # есть встроенные методы для чтения этого. Вы можете добавить контрольную сумму к своим данным, чтобы, если пользователь изменяет ее, контрольная сумма больше не совпадала (вам необходимо добавить проверку, чтобы убедиться, что контрольная сумма действительна)
Локальная БД может создать больше проблем, потому что у вас есть другие зависимости, вам нужно иметь возможность получить к ней доступ
источник
Если данные никогда не изменяются и доступны только для чтения , просто поместите их в файл кода в виде списка констант.
Если эти данные отличаются для каждого развертывания, тогда внешний файл подойдет.
.Net поставляется со встроенными файлами .config (App.Config). Следует использовать их, так как есть стандартные способы (встроенные в структуру), чтобы прочитать информацию из них.
Используйте файлы конфигурации на случай, если необходимо изменить настройку (никогда не говори никогда), поскольку это просто текстовые файлы (Xml). Если есть конфиденциальная информация, можно при необходимости зашифровать настройку.
источник
Вы всегда можете добавить файл в свой проект и установить его тип сборки
Embedded Resource
так, чтобы он был встроен непосредственно в само приложение.Или файл, который зашифрован и размещен в доступном месте.
источник
Если вы не хотите, чтобы пользователь даже смотрел на данные, вы должны сериализовать их в двоичный файл данных.
Только приложение будет знать длину фрагментов для чтения из него.
Я не знаю C #, но в Java вы могли бы создать файл следующим образом:
... и они читают это так:
источник