技術的な回答をまとめていますが、要件の1つは、狭帯域ネットワーク(10バイト/秒程度)で拡張可能なフォーマットを使用してメッセージを渡すことです。 1000年代のデバイスからの情報を受信するサーバー上で簡単に生活を楽しめるように、私はXMLを使いたいと思います。帯域幅の問題を解決するために、私は圧縮されたXmlを使用することができましたが、オンザフライで圧縮を行うためにomphを持たないかもしれない組み込み機器からデータが来ています。誰もがより良いアイデアを持っていれば、メッセージが狭帯域で受信されると、理想はXmlに縮小される小さな拡張可能なフォーマットになります。狭帯域拡張メッセージフォーマット
答えて
プロトコルバッファは、効率的な、まだ拡張可能な形式で構造化されたデータを符号化する方法です。 Googleは、ほとんどすべての内部RPCプロトコルとファイル形式に対してプロトコルバッファを使用しています。
YAMLは、デバイス間でシリアル化された情報を渡すのに理想的な非常に簡潔なフォーマットです。ほとんどのプログラミング言語で利用できるライブラリがあるため、サーバーはおそらくこれを直接理解することができ、XMLに変換する必要はありません。
さらに詳しい情報が役立ちます。それは答えがASCIIであることが述べられているので。数字、浮動小数点、度、名前を伝えることを考えていましたか?おそらくASN.1のようなもっと難解なものでしょう。または、他の提案と同様に、完全に気違いになる可能性があります。
GoogleプロトコルバッファまたはApache Thriftは、非常に普及しているバイナリシリアル化ツールです。つまり、各フィールドにタグを付けて(スキーマを変更する際に、後方/前方互換性の制限された形式を実現するため)、オーバーヘッドがあります。
Apache Avroはそのタグ付けを行わず、そのためにスペースを少し節約できます。
一般的に、XMLを使用することでサーバの寿命を延ばすことはできません。 XMLの「機能」(名前空間、エンティティ、エスケープ、国際化など)を使用するとXML解析コードが複雑になり、通常XMLの解析はJSONなどの他のフォーマットの解析よりも遅くなります。コードページに単純なJSONエンコーダ/デコーダを書くことができますが、XMLやYAMLの場合でも複雑さは増します。依存関係のフットプリントを増やすことはできますが、AvroとThriftとGoogleプロトコルバッファは良い選択です。
実際に10バイト/秒に制限されている場合は、多くの引用や構文がないエンコードが必要になる可能性があります。手作りの長さ接頭辞付きのプロトコル、またはprotobufのバイナリエンコーディングのようなものはおそらくあなたが望むものです。
- 1. スピーチの転写:狭帯域または広帯域?
- 2. MATLABで狭帯域フィルタを設計する
- 3. ワトソンのスピーチ - テキスト:広帯域よりも優れた結果を出す狭帯域?
- 4. 帯域幅モニタ
- 5. 帯域幅
- 6. Mininetエラー帯域幅
- 7. Pingと帯域幅
- 8. ビデオストリーミングの帯域幅のための帯域幅
- 9. DevExpressレポート - コンテンツに合わせて帯域を拡張するにはどうすればいいですか?
- 10. Djangoのメッセージフォーマット
- 11. 携帯電話に拡張リアリティ写真を配置する
- 12. OAuth2帯域外ユーザ認証
- 13. GTX 970帯域幅計算
- 14. Ejabberdと帯域内登録
- 15. 最大クライアント帯域幅
- 16. AJAXチャットポーリング帯域効率
- 17. ミニリンクのデフォルトリンク帯域幅
- 18. メモリ帯域幅使用量
- 19. XHR帯域幅削減
- 20. SNMPネットワーク帯域幅ロガーモニタ
- 21. jQueryの(拡張)(拡張中)
- 22. SilverStripeモジュール拡張の拡張
- 23. 単一精度でのCUDA帯域幅と倍精度での帯域幅
- 24. ビューのタッチ領域を拡張する方法
- 25. OS Xでオーバースクロール領域に要素を拡張
- 26. ラベルなしchechboxクリック可能な領域を拡張
- 27. サファリ拡張と大域変数に注入されたスクリプト
- 28. Graphics.DrawImageで描画領域を拡張する方法C#
- 29. 画像を拡張し、python pilを使用して拡張領域にテキストを追加
- 30. パフォーマンス:拡張バイナリイメージ(形態学的拡張)
また、.netバージョン - http://code.google.com/p/protobuf-net/私が必要とするもの - 歓声 – MrTelly