Silverlight Aislado almacenamiento y carga de archivos de gran tamaño
-
25-09-2019 - |
Pregunta
En una aplicación de Windows Phone 7, me gustaría consultar un archivo XML grande (lista de ciudades) almacenados usando aislado. Si lo hago de esta manera, será el archivo se carga en la memoria (> 5 meses)? Si es así, ¿qué otra solución tengo?
Editar:
Más detalles. Quiero usar AutoCompleteBox (http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/), pero en lugar de utilizar un servicio web (esto se fija de datos, no hay necesidad de estar en línea), quiero consulta a un almacenamiento de archivos / base de datos / aislado ... tengo una lista fija de las ciudades. He dicho en los comentarios Es 40k, pero finalmente parece más cerca de 1k filas.
Solución
en lugar de utilizar IsolatedStorage para esto, sería una opción para que pueda utilizar un servicio web en lugar ... o hacer el diseño de su aplicación para un enfoque fuera de línea?
consultar un servicio web, WCF o JSON servicio web habilitado es muy simple, y será más fácil para que usted pueda mantener:)
Otros consejos
En lugar de tener un gran archivo que contiene todos los datos puede que no se descomponen en un montón de archivos más pequeños. (Uno para cada ciudad?)
podría tener un archivo separado para mantener un índice de todos ellos si es necesario. Por otra parte, en función de los nombres de los archivos, es posible que pueda utilizar IsolatedStorageFile.GetFileNames
para obtener una lista de todos los archivos.
Me gustaría crear mi propio formato de archivo, utilizando, por ejemplo, un separador entre los campos, con una fila para cada registro. De esa manera se puede leer el archivo línea por línea para llenar su estructura de datos con estas ventajas:
- hay necesidad de tirar de todo el archivo en la memoria
- ninguna sobrecarga XML (en una aplicación de escritorio que puede no ser un problema, pero en el contexto de teléfono un archivo de texto 5 MB puede llegar a ser un poco más pequeño)
ejemplo Dumb:
New York City; 12345
Berlin; 25635
...
EDIT: dado que el volumen no es tan grande que no es necesario ningún tipo de indexación o carga bajo demanda. Me almacenar las ciudades como se ha dicho registro, una por línea-, cargarlos en una lista y el uso de LINQ para seleccionar los elementos que necesita. Esto probablemente será rápido y mantener su aplicación muy sensible.
En este caso, en mi opinión, XML no es la mejor herramienta para el trabajo. Su estructura es muy simple y el almacenamiento en XML, probablemente el doble del tamaño del archivo, que es una preocupación para un dispositivo móvil, y que también ralentizar el análisis, también es una preocupación en este caso.