Silverlight 分離ストレージと大きなファイルの読み込み
-
25-09-2019 - |
質問
Windows Phone 7 アプリケーションで、次を使用して保存された大きな XML ファイル (都市のリスト) をクエリしたいと考えています。 隔離されたストレージ. 。この方法で実行すると、ファイルはメモリにロードされますか (> 5 か月)?もしそうなら、他にどのような解決策がありますか?
編集:
さらに詳しく。AutoCompleteBox (http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/) を使用したいのですが、Web サービス (これは固定データなのでオンラインである必要はありません) を使用する代わりに、ファイル/データベース/分離ストレージをクエリするには...都市の固定リストがあります。コメントでは 40k だと言いましたが、最終的には 1k 行に近づいたようです。
解決
代わりに、このためにisolatedstorageを使用して、それはあなたの代わりにWebサービスを使用するためのオプションだろう...か、
?オフラインでのアプローチのためにアプリを設計しますWebサービス、WCFを照会またはJSONは、Webサービスが本当に簡単で、あなたが維持するために容易になります有効:)
他のヒント
あなたは小さなファイルの多くにそれを打破することはできませんすべてのデータを含む大きなファイルを持っているのではなく。 (各都市の一つ?)
必要であれば、あなたはそれらすべてのインデックスを維持するために別のファイルを持つことができます。また、ファイルの命名に応じて、あなたはすべてのファイルのリストを取得するにはIsolatedStorageFile.GetFileNames
を使用することができます。
たとえば、フィールド間の区切り文字を使用して、レコードごとに 1 行を含む独自のファイル形式を作成します。こうすることで、ファイルを 1 行ずつ読み取り、データ構造に次のような利点を加えることができます。
- ファイル全体をメモリに取り込む必要はありません
- XML オーバーヘッドなし (デスクトップ アプリケーションでは問題にならないかもしれませんが、電話のコンテキストでは 5 MB のテキスト ファイルはかなり小さくなる可能性があります)
愚かな例:
New York City; 12345
Berlin; 25635
...
編集: ボリュームがそれほど大きくない場合、オンデマンドでのインデックス作成やロードは必要ありません。上記のように都市を保存し (1 行に 1 レコード)、それらをリストに読み込み、LINQ を使用して必要な項目を選択します。これはおそらく高速であり、アプリケーションの応答性を非常に高く保つことができます。
この場合、私の意見では、XML はこの仕事に最適なツールではありません。構造は非常に単純で、XML に保存するとファイル サイズが 2 倍になる可能性があり、これはモバイル デバイスにとって懸念事項であり、解析も遅くなりますが、これもこの場合の懸念事項です。