Является ли Embed Resource хорошим подходом для базы данных XML только для чтения? - PullRequest
3 голосов
/ 10 июня 2010

У меня есть приложение с открытым исходным кодом ( здесь )

Это приложение получает символ или предложение и дает некоторую информацию о юникоде.

Iuse Unicode Character Database, предоставленная Unicode.org, это XML-документ (130 МБ)

Сначала я встраиваю этот XML в свою DLL, но я не знаю, хороший это подход или нет. потому что рост размера DLL только из-за этого XML-документа. Я могу использовать его как любой другой ресурс, но пользователь может увидеть его.

Что мне делать? Каков лучший образец для этого? и почему?

ТИА

Ответы [ 4 ]

1 голос
/ 28 июня 2010

Полагаю, встроенный ресурс - хороший вариант , если , вы будете рады перекомпилировать и повторно развертывать каждый раз, когда происходят изменения;кроме того, только то, что вы, возможно, будете рады сделать это, не означает, что все будут:)

Очень распространенный подход состоит в том, чтобы абстрагироваться от любого вида доступа к данным за интерфейсом;если вы сделаете это, вы сможете позволить пользователям выбирать, какую реализацию они хотят (при условии, что вы предоставили пару), и это позволит им написать свою собственную.С точки зрения шаблонов это Dependancy Inversion (также известный как Inversion of Control).

Если вы управляете созданием провайдера через config (то есть: используя Factory ) вы сможете переключать поставщиков без необходимости повторного развертывания основной части приложения (части, которая потребляет данные).Таким образом, вы можете иметь столько разных провайдеров, сколько захотите: провайдер чтения из файла XML, провайдер данных SqlLite, провайдер на основе веб-сервисов / облачных сервисов и т. Д.

Мне нравится подход Rolands - вы могли быпостроить его как реализацию провайдера (чтение файла в память, быстрое реагирование на запросы из памяти).

Использование ресурсов в Visual Studio .NET

1 голос
/ 10 июня 2010

Я думаю, что XML - это не тот путь, по которому можно идти.Особенно, когда производительность критична.Если это так много, подумайте о переходе на встроенные базы данных (например, SQLite или что-то еще).

Чтобы узнать больше о XML против SQLite, проверьте этот вопрос: Xml или Sqlite, когда отбрасывать Xml для базы данных?

1 голос
/ 13 июня 2010

XML - это формат обмена данными. Поскольку вы уже рассматривали возможность встраивания XML-файла в вашу DLL, вероятно, никому не понадобится формат XML. Как насчет того, чтобы просто извлечь соответствующие данные из файла XML и сохранить их как ресурс в вашей DLL? Во-первых, это экономит ваше пространство, а во-вторых, вы уже можете организовать данные так, как вам потребуется позже.

0 голосов
/ 10 июня 2010

Какой размер, если вы сжимаете файл? Если экономия значительная, используйте сжатый ресурс, распакуйте ресурс в поток памяти, а затем загрузите поток в документ XML.

...