2

リモート サーバー ( http://xxxx.com/myfile.xml )にある XML ファイルを取得する小さなアプリを開発しています。このファイルは比較的大きく、地理位置情報の大きなリストと必要な他の情報が含まれています。私のアプリに使用します。したがって、このファイルをリモートで一度読み取り、小さな SqlCE ファイル (database.sdf) に挿入します。

したがって、ジオロケーション #1 にアクセスする必要がある場合は、毎回 XML ファイル全体をロードするのではなく、このデータベースに SELECT ステートメントを作成するだけです。

しかし、.sdf ファイルを使用せずにこれを行うことが可能かどうか知りたいですか?

最も効率的な方法(最速)は何ですか?

大きなXMLファイルを一度ローカルに保存して、アプリを起動してデータセットにロードするたびにロードしますか? これにより、毎回アプリをロードするのに少し時間がかかります

大きな XML ファイルを一度ローカルに保存し、ノードを 1 つずつ読み取ってジオロケーション #1 を探しますか?

または、ファイル全体を読み取らずに、リモート xml ( http://xxxx.com/myfile.xml )から地理位置情報 #1 を直接取得することは可能ですか?

他にアイデアはありますか?

ありがとう

4

3 に答える 3

2

大きな XML ファイルを読み込み、適切な別のデータ構造に変換し、効率的な形式でファイルに保存します。(XML はそれほど効率的ではありません。)

私は、Marc Gravell の Protocol Buffers実装が Compact Framework で動作すると信じています...

(protobuf の実装はまだ本番環境に対応しているとは見なされていませんが、いくつかは近いものがあります。テスターが必要です!)

于 2008-10-09T14:54:23.980 に答える
1

protobuf-net に関しては、現時点では CF バージョンの個別のダウンロードはありませんが、ソースには CF 2.0 と CF 3.5 の両方の csproj があります。

あなたの質問を明確にするために; 実際、protobuf-net は (現時点では) .proto ファイルさえ使用しません。.proto ファイルは、データが何であるかを説明するだけです。protobuf-net は単にクラスを見て、そこからスキーマを推測します (XmlSerializer / DataContractSerializer などの動作と同様)。したがって、.protoはありません。データのように見えるクラスだけです。

ただし、データに似たクラスの作成に着手する前に、単に GZIP や [PK]ZIP を使用してデータを圧縮し、「そのまま」転送できないのではないかと思います。Xml は通常、非常によく圧縮されます。もちろん、CF の GZIP (など) 実装を見つけることが問題になります。

もちろん、ここで protobuf-net を使用したい場合は、問題が発生した場合などに喜んでアドバイスします...

もう 1 つのオプションは、CF アプリがローカルにデータを持つ Web サービスを呼び出すことです...

于 2008-10-09T15:50:31.230 に答える
0

このためにファイル全体を CE デバイスにプルするのはなぜですか? これは帯域幅の浪費であり、組み込みプロセッサでルックアップを行うと、ストレージ形式に関係なく、サーバーよりも確実に遅くなります。必要な単一の地理位置情報を要求できるサービス (Web、WCF など) が必要です。

于 2008-10-09T17:15:57.750 に答える