Les tampons de protocole pour JavaScript?

Existe-t-il un moyen de faire des tampons de protocole en JavaScript?

Pourquoi pour .js?

Si vous pensez à des besoins scientifiques pour un moment, des situations s'affichent où vous pourriez vouloir envoyer un grand bloc de données au client. Avec le style CRUD, cela n'a pas vraiment autant d'importance que vous utilisez. Avec des connaissances scientifiques, cela importe (au moins, je pense que cela l'est).

Compromis:

  • Protobuffs équilibre la compacité, sérialise et désérialise bien les vitesses.

  • Les protocoles basés sur le texte (xml / json) ont une taille de message plus grande … mais avec javascript, je me demande qui est plus efficace.

référence:

  • Code.google.com/p/protobuf-plugin-closure

  • Google Protocol Buffers ou quelque chose de similaire pour .net / javascript

  • Https://github.com/sirikata/protojs

  • Google Protocol Buffers – JavaScript

  • Http://www.vitaliykulikov.com/2011/02/gwt-friendly-protocol-buffers.html

  • Http://benhakala.blogspot.com/2010/05/converting-google-protocol-buffers-to.html (fait allusion aux google maps éventuellement à l'aide de protobufs)

Des références supplémentaires fournies par la communauté (voir ci-dessous pour plus de contexte):

  • Https://github.com/dcodeIO/ProtoBuf.js

  • Http://blog.ltgt.net/exploring-using-protobuf-in-the-browser/

  • Http://blog.ltgt.net/using-protobuf-client-side-with-gwt

  • Http://code.google.com/p/protobuf-gwt/

J'ai cherché protobuf pour javascript. Il y a un projet ici: https://github.com/dcodeIO/ProtoBuf.js

Google utilise fortement les tampons de protocole dans JS (GMail, etc.) à travers leur bibliothèque de fermeture, générant un code JS avec un protoc modifié (malheureusement non ouvert) (il devrait probablement être porté à une extension protoc avant d'être ouvert -sourced).

Apache Wave (dont le client webapp est construit avec GWT) utilise également Protocol Buffers pour ses communications avec le serveur, générant du code Java en réfléchissant sur les classes Java produites par protoc (c'est le PST, aka protobuf-stringtemplate, sous-projet).
Auparavant, Wave utilisait protostuff (et je ne sais pas pourquoi ils ont changé leur propre solution, je soupçonne que PST est dérivé de ce que Google Wave original utilisait, et protostuff n'était qu'une étape intermédiaire pendant le passage à open source) .

Comme note secondaire, j'ai commencé à explorer l'utilisation de Protocol Buffers sur le côté du navigateur il y a quelque temps: http://blog.ltgt.net/exploring-using-protobuf-in-the-browser/ & http: //blog.ltgt. Net / using-protobuf-client-side-with-gwt avec un code presque fonctionnel à http://code.google.com/p/protobuf-gwt/ que vous pourriez vouloir ressusciter.

Enfin, il existe des travaux en cours pour rendre les proxies GWT RequestFactory compatibles avec les classes Java côté serveur générées par protoc (et vous pourriez utiliser une extension protoc ou une approche similaire à Wave's PST pour générer vos proxies RequestFactory). Il devrait déjà être possible, pourvu que vous utilisiez les constructeurs sur le côté serveur (ce qui n'est pas tout à fait l'API de protocole Buffers Java conçue).

Historiquement, javascript a travaillé avec une douleur binaire, ce qui explique probablement en partie un manque relatif d'outillage – mais avec des tableaux dactylographiés javascript, cela pourrait bien être beaucoup plus facile maintenant. Je suis d'accord que si vous devez obtenir le même volume de données (via un certain format), utiliser moins de bande passante est un plus – mais avant de vous lancer dans tout ce dont vous auriez besoin, vérifier que la bande passante / traitement était un véritable goulet d'étranglement (et si la bande passante : Avez-vous essayé gzip / deflate en premier).

Je suis un fan de protobuf – et j'aimerais bien voir un outil plus fort pour le navigateur, mais json est si omniprésent que vous auriez besoin d'une raison impérieuse pour contester le statu quo. Aussi; Pense "jsonp".