Google-Protokollpuffer: JavaScript-Beispiel

Lesezeit: 4 Minuten

Benutzer-Avatar
nikolakoko

Ist es eine gute Wahl, Google Protocol Buffers in JavaScript zu verwenden, oder ist es besser, dies mit JSON zu tun?

Es wäre auch toll, wenn mir jemand ein einfaches Beispiel zur Implementierung von Protocol Buffers in JavaScript geben könnte. Die Dokumentation auf der Google-Website ist spärlich.

  • Dieser SO-Thread enthält weitere Informationen zum Thema: stackoverflow.com/questions/7074147/…

    – alawrik

    16. August 2011 um 15:21 Uhr

Benutzer-Avatar
Meister

[edit] Die Open-Source-Implementierung von Protokollpuffern von Google ist unter verfügbar github


Das offizielle Protobuf-Projekt unterstützt nur Java, C++ und Python. Nicht Javascript.

Laut dem Wiki des Projekts gibt es drei Projekte, die Protokollpuffer nach Javascript portieren.

Protobuf.js ist aktuell. protobuf-js wurde seit zwei Jahren nicht mehr aktualisiert, daher würde ich Protobuf.js bevorzugen.

Die Frage ist immer noch “warum”?: protobuf mag etwas kleiner sein, besonders wenn viele numerische Werte übertragen werden, aber JSON ist einfach das gebräuchlichere Protokoll im JS-Raum und wahrscheinlich besser unterstützt und einfacher in andere Tools zu integrieren.

  • Zweifellos ist JSON für die meisten Fälle besser geeignet. In meinem Fall ist der Absender der Nachricht jedoch nicht unter meiner Kontrolle und wird in Protobuf-Nachrichten serialisiert, daher müssen wir die Nachrichten von Javascript analysieren.

    – Jan Segre

    4. März 2013 um 11:49 Uhr

  • @Warum: Weil Sie eine Nachricht und Dienstmethoden als Proto schreiben und das Skelett des Codes kostenlos erhalten? Serialisierung und Deserialisierung auf Client-/Serverseite.

    – Pawel Szczur

    20. März 2013 um 12:22 Uhr


  • Warum: Derselbe Grund, Protobuf in jeder anderen Situation zu verwenden. Vergessen Sie nicht, dass Browser jetzt WebSocket haben. Außerdem können Desktop-Anwendungen in JS für Windows 8 geschrieben werden und Anwendungen, einschließlich Server, in Node.

    – Sprague

    19. August 2013 um 12:50 Uhr


  • Code Climate hat eine großartige Beschreibung die Vorteile von protobuf gegenüber JSON

    – Jordanien

    30. August 2014 um 5:13 Uhr

  • Wenn die API Ihres Systems bereits über andere Binär-/Protobuf-Clients verfügt, z. B. Android- oder iOS-Geräte, ist es natürlicher, die vorhandene Proto-API für einen Javascript-Webclient zu verwenden, als eine zweite Kopie der API zu erstellen, die JSON bietet, nur um sie zu unterstützen eine Internetseite.

    – Zero-Trick-Pony

    5. September 2014 um 18:47 Uhr

Benutzer-Avatar
AlikElzin-kilaka

Aktualisieren (28.7.2016):
Version 3.0.0 wurde veröffentlicht – Unterstützung von Javascript und anderen Sprachen – zusätzlich zu einigen anderen Funktionen.

Google hat Protobufs kürzlich Alpha-Unterstützung für JS hinzugefügt: https://github.com/google/protobuf/releases/tag/v3.0.0-beta-2

Verwendungszweck:

protoc -I=$SRC_DIR --js_out=$DST_DIR $SRC_DIR/addressbook.proto

Screenshots aus der Release-Dokumentation:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

  • Beim Ausführen des obigen Befehls erhalte ich den Fehler „Fehlende Eingabedatei“.

    – Zeeshan Ajmal

    19. Juli 2019 um 11:56 Uhr

Protobuf 3.0.0 ist da:
https://github.com/google/protobuf/releases/tag/v3.0.0

Und es unterstützt JavaScript nativ. Die grundlegenden Informationen finden Sie in der Ankündigung.

Wir werden uns bald darum kümmern.

Ja, Protobuf unterstützt Javascript nativ.
https://developers.google.com/protocol-buffers/docs/reference/javascript-generated

Benutzer-Avatar
JeffSpicoli

Versuchen Protostoff!

Ich hatte ein bisschen Schwierigkeiten beim Konfigurieren, aber ich bin mir sicher, dass das eher mein Problem war. Sie können eine protobuff/protostuff-Nachricht in/von JSON serialisieren/deserialisieren. Ich bin in den frühen Stadien der Verwendung, aber es sieht bisher vielversprechend aus.

  • Neugierig. Warum wurde das abgelehnt (ich habe keine Meinung zu Protostuff)?

    – Pimin Konstantin Kefaloukos

    4. März 2013 um 12:49 Uhr


  • @Pimin wahrscheinlich, weil Protostuff Java ist und die Frage JavaScript ist?

    – Marc Kies

    6. September 2013 um 20:08 Uhr

  • @PiminKonstantinKefaloukos Person sucht nach der Protobuf-Implementierung Javascript

    – Holme

    16. Februar 2014 um 15:29 Uhr

  • Erstellen von Javascript-Objekten für GWT mit Protostuff: code.google.com/p/protostuff/wiki/GwtJsonOverlays . Völlig zum Thema.

    – Fuzzy-Analyse

    14. März 2014 um 4:57 Uhr

  • @fuzzyanalysis Fair, obwohl ich diese Antwort dann eher unvollständig als einfach falsch nennen würde. Da Sie nicht erwarten können, dass jeder Besucher weiß, wie man Java in JS kompiliert oder überhaupt weiß, dass GWT existiert, würden Sie zumindest einen Verweis auf GWT erwarten oder idealerweise ein funktionierendes Beispiel, wie es in GWT zum Laufen gebracht wird – denn das könnte durchaus sein das Abenteuer.

    – Chris Moschini

    22. Juli 2014 um 22:07 Uhr

  • Neugierig. Warum wurde das abgelehnt (ich habe keine Meinung zu Protostuff)?

    – Pimin Konstantin Kefaloukos

    4. März 2013 um 12:49 Uhr


  • @Pimin wahrscheinlich, weil Protostuff Java ist und die Frage JavaScript ist?

    – Marc Kies

    6. September 2013 um 20:08 Uhr

  • @PiminKonstantinKefaloukos Person sucht nach der Protobuf-Implementierung Javascript

    – Holme

    16. Februar 2014 um 15:29 Uhr

  • Erstellen von Javascript-Objekten für GWT mit Protostuff: code.google.com/p/protostuff/wiki/GwtJsonOverlays . Völlig zum Thema.

    – Fuzzy-Analyse

    14. März 2014 um 4:57 Uhr

  • @fuzzyanalysis Fair, obwohl ich diese Antwort dann eher unvollständig als einfach falsch nennen würde. Da Sie nicht erwarten können, dass jeder Besucher weiß, wie man Java in JS kompiliert oder überhaupt weiß, dass GWT existiert, würden Sie zumindest einen Verweis auf GWT erwarten oder idealerweise ein funktionierendes Beispiel, wie es in GWT zum Laufen gebracht wird – denn das könnte durchaus sein das Abenteuer.

    – Chris Moschini

    22. Juli 2014 um 22:07 Uhr

1015290cookie-checkGoogle-Protokollpuffer: JavaScript-Beispiel

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy