2009-07-09 7 views
3

技術的な回答をまとめていますが、要件の1つは、狭帯域ネットワーク(10バイト/秒程度)で拡張可能なフォーマットを使用してメッセージを渡すことです。 1000年代のデバイスからの情報を受信するサーバー上で簡単に生活を楽しめるように、私はXMLを使いたいと思います。帯域幅の問題を解決するために、私は圧縮されたXmlを使用することができましたが、オンザフライで圧縮を行うためにomphを持たないかもしれない組み込み機器からデータが来ています。誰もがより良いアイデアを持っていれば、メッセージが狭帯域で受信されると、理想はXmlに縮小される小さな拡張可能なフォーマットになります。狭帯域拡張メッセージフォーマット

答えて

4

Google Protocol Buffers

プロトコルバッファは、効率的な、まだ拡張可能な形式で構造化されたデータを符号化する方法です。 Googleは、ほとんどすべての内部RPCプロトコルとファイル形式に対してプロトコルバッファを使用しています。

+0

また、.netバージョン - http://code.google.com/p/protobuf-net/私が必要とするもの - 歓声 – MrTelly

0

YAMLは、デバイス間でシリアル化された情報を渡すのに理想的な非常に簡潔なフォーマットです。ほとんどのプログラミング言語で利用できるライブラリがあるため、サーバーはおそらくこれを直接理解することができ、XMLに変換する必要はありません。

0

さらに詳しい情報が役立ちます。それは答えがASCIIであることが述べられているので。数字、浮動小数点、度、名前を伝えることを考えていましたか?おそらくASN.1のようなもっと難解なものでしょう。または、他の提案と同様に、完全に気違いになる可能性があります。

0

GoogleプロトコルバッファまたはApache Thriftは、非常に普及しているバイナリシリアル化ツールです。つまり、各フィールドにタグを付けて(スキーマを変更する際に、後方/前方互換性の制限された形式を実現するため)、オーバーヘッドがあります。

Apache Avroはそのタグ付けを行わず、そのためにスペースを少し節約できます。

0

一般的に、XMLを使用することでサーバの寿命を延ばすことはできません。 XMLの「機能」(名前空間、エンティティ、エスケープ、国際化など)を使用するとXML解析コードが複雑になり、通常XMLの解析はJSONなどの他のフォーマットの解析よりも遅くなります。コードページに単純なJSONエンコーダ/デコーダを書くことができますが、XMLやYAMLの場合でも複雑さは増します。依存関係のフットプリントを増やすことはできますが、AvroとThriftとGoogleプロトコルバッファは良い選択です。

実際に10バイト/秒に制限されている場合は、多くの引用や構文がないエンコードが必要になる可能性があります。手作りの長さ接頭辞付きのプロトコル、またはprotobufのバイナリエンコーディングのようなものはおそらくあなたが望むものです。

関連する問題