Pakiet wiadomości
Oryginalni autorzy | Sadayuki Furuhashi |
---|---|
Magazyn | |
Napisane w | Różne języki |
System operacyjny | Każdy |
Platforma | Międzyplatformowe |
Typ | Wymiana danych |
Licencja | Licencja Apache |
Strona internetowa |
MessagePack to format wymiany danych komputerowych . Jest to forma binarna służąca do reprezentowania prostych struktur danych, takich jak tablice i tablice asocjacyjne . MessagePack ma być tak kompaktowy i prosty, jak to tylko możliwe. Oficjalna implementacja jest dostępna w różnych językach, takich jak C , C++ , C# , D , Erlang , Go , Haskell , Java , JavaScript ( NodeJS ), Lua , OCaml , Perl , PHP , Python , Ruby , Scala , Smalltalk i Swift .
Typy danych i składnia
Struktury danych przetwarzane przez MessagePack luźno odpowiadają tym używanym w formacie JSON . Składają się z następujących typów elementów:
- zero
- bool, boolean (
prawda
ifałsz
) - int, liczba całkowita (do 64 bitów ze znakiem lub bez znaku)
- float, liczby zmiennoprzecinkowe (IEEE pojedyncza/podwójna precyzja)
- str, ciąg UTF-8
- bin, dane binarne (do 2 32 − 1 bajtów)
- szyk
- mapa, tablica asocjacyjna
- ext (dowolne dane w formacie zdefiniowanym przez aplikację, do 2 32 − 1 bajtów)
- znacznik czasu (typ ext = −1) (do 64-bitowych sekund i 32-bitowych nanosekund)
Porównanie z innymi formatami
MessagePack jest bardziej zwarty niż JSON , ale nakłada ograniczenia na rozmiary tablic i liczb całkowitych. Z drugiej strony pozwala na dane binarne i łańcuchy zakodowane w formacie innym niż UTF-8. W JSON klucze map muszą być łańcuchami, ale w MessagePack nie ma takiego ograniczenia i kluczem mapy może być każdy typ, w tym typy takie jak mapy i tablice oraz, jak YAML , liczby .
W porównaniu do BSON , MessagePack zajmuje mniej miejsca. BSON jest przeznaczony do szybkiej manipulacji w pamięci, podczas gdy MessagePack jest przeznaczony do wydajnej transmisji przewodowej. Na przykład BSON wymaga terminatorów o wartości null na końcu wszystkich ciągów i wstawia indeksy ciągów dla elementów listy, podczas gdy MessagePack tego nie robi. BSON reprezentuje wewnętrznie zarówno tablice, jak i mapy jako dokumenty, które są mapami, gdzie tablica jest mapą z kluczami jako ciągami dziesiętnymi liczonymi od 0. MessagePack z drugiej strony reprezentuje zarówno mapy, jak i tablice jako tablice, gdzie każda para klucz-wartość mapy jest ciągła, tworząc klucze elementów nieparzystych, a wartości elementów parzystych.
Format Protocol Buffers ma być kompaktowy i dorównuje MessagePack. Jednak podczas gdy JSON i MessagePack mają na celu serializację dowolnych struktur danych za pomocą znaczników typu, bufory protokołów wymagają schematu do zdefiniowania typów danych. Kompilator Protocol Buffers tworzy szablonowy kod w języku docelowym, aby ułatwić integrację serializacji z kodem aplikacji; MessagePack zwraca tylko dynamicznie wpisaną strukturę danych i nie zapewnia automatycznego sprawdzania struktury.
MessagePack jest wymieniony w dokumencie RFC 7049 firmy CBOR .
Zobacz też
- Oszczędność Apache
- Apache Avro
- BSON
- CBOR
- JSONB
- JSON
- Bufory protokołów
- Uśmiech
- UBJSON
- Porównanie formatów serializacji danych
- YAML
- XDR