Skip to content

MS_DahomeyCbor

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

Dahomey.Cbor

概要

詳細

(記載なし)

移行メモ: 原典の「概要」は 2 項目めが空(- のみ)で、
「詳細」節も見出しのみで本文が存在しない。

補足(Dahomey.Cbor の特徴): PeterO.Cborとの
比較表はそちらに掲げたので、ここでは使い勝手の面を補う。

Dahomey.Cbor は System.Text.Json に似た API を提供し、
既存の POCO をほぼそのまま CBOR に載せられる点が特徴である。

// シリアライズ
using var stream = new MemoryStream();
await Cbor.SerializeAsync(myObject, stream);

// デシリアライズ
stream.Position = 0;
var obj = await Cbor.DeserializeAsync<MyClass>(stream);

つまり、JSON で作っていた API を CBOR に置き換えるという
用途に向いている。

目的 効果
転送量の削減 JSON より小さい(数値・バイナリが効率的
パース速度 テキスト解析が不要な分だけ速い
バイナリをそのまま載せられる JSON のように Base64 にしなくてよい

特に IoT やモバイルIoT関連の通信プロトコル)では
帯域と電力の制約が厳しいため、

JSON  : {"id":1234,"data":"SGVsbG8="}   ← Base64 で 33% 増える
CBOR  : (バイナリのまま格納。短い)

という差が効いてくる。

ただし、

注意 内容
可読性が無い デバッグ時に中身が見えない(変換ツールが要る)
対応の広さ JSON ほど普遍的ではない(相手が対応している必要がある)
ライブラリ依存 標準ライブラリにはマッピング機能が無い

という制約がある。
JSON で足りるなら JSON を使うというのが基本方針で、
CBOR を選ぶのは帯域・電力・仕様上の要求がある場合になる
MessagePackProtocol Buffers
同種の選択肢である)。

参考


Tags: 移行, IT国際標準, プログラミング, 通信技術, .NET開発, .NET Core

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally