2010-11-17 3 views
0

В приложении Windows Phone 7 я хотел бы запросить большой XML-файл (список городов), хранящийся с помощью Isolated Storage. Если я так сделаю, будет ли файл загружен в память (> 5 мес)? Если да, то какое другое решение у меня есть?Silverlight Isolated Хранение и загрузка больших файлов

Редактировать:

Подробнее. Я хочу использовать AutoCompleteBox (http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/), но вместо использования веб-службы (это фиксированные данные, не нужно быть в сети), я хочу для запроса файла/базы данных/изолированного хранилища ... У меня есть фиксированный список городов. Я сказал в комментариях, что это 40k, но в конце концов он кажется ближе к 1k строкам.

ответ

0

вместо использования изолированного хранилища для этого, можно ли использовать веб-сервис вместо этого ... или вы создаете приложение для автономного подхода?

запрашивая WebService, ФОС или JSon включен веб-сервис очень прост, и будет проще для вас, чтобы поддерживать :)

+0

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

+0

.. тогда вы могли подумать о том, чтобы разбить его на более мелкие файлы, по одному для каждого города, и использовать идентификаторы IsolStorageFile.GetFileNames, для перечисления всех файлов и выбора соответствующего города, будет быстрее чем запрос одного файла :) –

+0

, как я сказал Мэтту, город * это * информация. У меня 40k строк и только два столбца на строку (zipcode и название города). Так что 40k-файлы выглядят не так –

0

Вместо того, чтобы иметь большой файл, содержащий все данные, вы можете не разбить его на множество файлы меньшего размера. (Один для каждого города?)

У вас может быть отдельный файл, чтобы сохранить индекс, если это необходимо. В качестве альтернативы, в зависимости от наименования файлов, вы можете использовать IsolatedStorageFile.GetFileNames, чтобы получить список всех файлов.

+0

Я не думаю, что это будет то, что я ищу.В моей базе данных sqlite у меня осталось менее 40 тыс. Записей (планируя преобразовать ее в xml для моего приложения wp7), содержащую в каждой строке имя города и его почтовый индекс. Так что не уверены, что 40k-файлы - это то, что вы имеете в виду. –

+0

@ Файлы Thomas No 40k не могли бы пойти. (Но если бы у вас было много данных о небольшом количестве городов, это могло бы.) 26 файлов, основанных на первой букве названия города, могут работать. –

0

Я бы создал свой собственный формат файла, используя, например, разделитель между полями, по одной строке для каждой записи. Таким образом, вы можете читать файл строка за строкой, чтобы заполнить структуру данных с этими преимуществами:

  1. нет необходимости тянуть весь файл в память
  2. нет XML накладных (в настольном приложении оно может не должно быть проблемой, но в контексте телефона текстовый файл 5 МБ может стать совсем немного меньше)

Тупой пример:

New York City; 12345 
Berlin; 25635 
... 

EDIT:, учитывая, что объем не такой большой, вам не нужна никакая форма индексации или загрузки по требованию. Я бы сохранил города, как указано выше, - одну запись в строке, - загрузите их в список и используйте LINQ, чтобы выбрать нужные вам элементы. Это, вероятно, будет быстрым, и ваше приложение будет очень отзывчивым.

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

+0

это кажется действительно взломанным для чего-то рассмотренного основного usign базы данных ... Я хочу, чтобы иметь возможность делать простые SELECT LIKE xxx * statements –

+0

Я не вижу, чтобы это было «взломанным», но каждому свое :-) Я все еще считают, что во встроенном устройстве важна оптимизация производительности и хранения. Кстати, если вы загружаете свои города в список (для ex), то с помощью Linq вы можете делать все запросы Select, которые вам нужны. –