DevToys Web Pro iconDevToys Web Proوبلاگ
به ما امتیاز دهید:
افزونه مرورگر را امتحان کنید:

کُدک CBOR / MessagePack

قالب:
جهت:
خروجی:

ورودی JSON

  • خروجی هگز

  • جزئیات فنی

    مبدل CBOR و MessagePack چگونه کار می‌کند

    این ابزار چه کاری انجام می‌دهد

    این ابزار داده‌های JSON را به قالب‌های دودویی CBOR (Concise Binary Object Representation) یا MessagePack کدگذاری می‌کند و بارهای دودویی را دوباره به JSON قابل‌خواندن برای انسان رمزگشایی می‌کند. این ابزار بایت‌های خام هگز را در کنار ساختار رمزگشایی‌شده نمایش می‌دهد و بررسی کدگذاری‌های دودویی فشرده‌ای را که در محیط‌های محدود استفاده می‌شوند آسان می‌کند. هر دو جهتِ کدگذاری از اشیای تو‌در‌تو، آرایه‌ها و انواع استاندارد JSON پشتیبانی می‌کنند.

    موارد استفادهٔ رایج برای توسعه‌دهندگان

    توسعه‌دهندگان IoT از این ابزار برای بررسی بارهای CBOR از پیام‌های CoAP یا توکن‌های امضاشده با COSE بدون نوشتن کدِ دی‌سریال‌سازی استفاده می‌کنند. مهندسان بک‌اند فریم‌های WebSocket کدگذاری‌شده با MessagePack، بافرهای پروتکل Redis یا بارهای RPC را با چسباندن دامپ‌های هگز و مشاهده JSON رمزگشایی‌شده دیباگ می‌کنند. همچنین برای مقایسه اندازه بار بین JSON، CBOR و MessagePack مفید است تا کارآمدترین قالب انتقال (wire format) برای سیستم‌های با محدودیت پهنای باند انتخاب شود.

    قالب‌ها، نوع‌ها یا گونه‌های داده

    CBOR (RFC 8949) یک قالب دودویی خودتوصیف‌گر است که برای کوچک بودن اندازه کد و اندازه پیام طراحی شده و در استانداردهای IoT مانند LwM2M و FIDO2/WebAuthn به‌طور گسترده پذیرفته شده است. MessagePack یک سریال‌سازی دودویی مشابه است که هدفش تا حد ممکن فشرده بودن، در عین بدون‌شِما (schema-free) ماندن است و معمولاً توسط Redis، Fluentd و بسیاری از چارچوب‌های RPC استفاده می‌شود. هر دو قالب از JSON فشرده‌تر هستند، اما برای کارایی، خوانایی انسانی را قربانی می‌کنند.

    دام‌های رایج و حالت‌های لبه‌ای

    CBOR از انواع داده‌ای پشتیبانی می‌کند که JSON به‌صورت بومی نمی‌تواند نمایش دهد؛ مانند رشته‌های بایتی، تگ‌ها و کانتینرهای با طول نامعین — رفت‌وبرگشت دادن آن‌ها از طریق JSON اطلاعات نوع را از بین می‌برد. MessagePack بین بایت‌های خام و رشته‌های UTF-8 تمایز قائل می‌شود، در حالی که JSON همه را به یک نوع رشته تبدیل می‌کند. دقت اعداد صحیح می‌تواند متفاوت باشد: هر دو قالب از اعداد صحیح با طول دلخواه پشتیبانی می‌کنند، اما رمزگشایی در JavaScript ممکن است فراتر از Number.MAX_SAFE_INTEGER باعث از دست رفتن دقت شود.

    چه زمانی از این ابزار استفاده کنیم در برابر کُد

    از این ابزار مرورگری برای بررسی موردیِ بارهای دودوییِ ثبت‌شده از ترافیک شبکه، دیباگ پیام‌های دستگاه‌های IoT، یا مقایسه سریع اندازه‌های کدگذاری استفاده کنید. برای سریال‌سازی در محیط تولید داخل کد برنامه، از کتابخانه‌های اختصاصی مانند cbor2 (Python)، cbor-x (Node.js) یا msgpack برای زبان خود استفاده کنید؛ این‌ها استریمینگ، اعتبارسنجی شِما و نگاشت درست نوع‌ها را مدیریت می‌کنند؛ چیزهایی که یک ابزار مرورگری نمی‌تواند فراهم کند.