10
votes

Effacement: Est-il possible de faire uniquement la sérialisation avec la bibliothèque de l'épargne C ++?

avec la bibliothèque d'épargne C ++ Apache, est-il possible d'utiliser uniquement la sérialisation / la désérialisation et ne pas utiliser les services RPC?

Si je comprends de Cette page , il est possible de faire avec la bibliothèque Java. Cependant, je n'ai pas pu trouver les classes similaires pour la bibliothèque C ++.


0 commentaires

5 Réponses :


8
votes

Oui, c'est possible. L'épargne manque de documentation sur ce sujet. Eh bien, à propos de quelque chose vraiment.

Ici, j'ai trouvé ceci:

http://mail-archives.apache.org/mod_mbox/thrift-user/201010.mbox/%3C5Ef8f634-79a2-45c4-9a04-6d96d3b7a84f@manbert.com%3e

J'utilise personnellement Boost :: Sérialisation S'il n'y a pas besoin de transférer des données sur le réseau. Syntaxe très claire et supporte JSON, XML et une sortie binaire / entrée.


2 commentaires

Merci. La documentation de l'épargne est presque inexistante.


Entre-temps (depuis 2012), il y a beaucoup de documents disponibles. Néanmoins, il y a quelque chose qui envisage de "sérialiser seulement". Alttuhag Dériférable de la solution complète avec RPC, nous pouvons faire mieux => THIFT-4128




4
votes

in c ++, vous pouvez utiliser le TFileTransport: xxx

ou xxx


0 commentaires

3
votes

Si vous voulez simplement sérialiser en octets (sans avoir à écrire dans un fichier), vous pouvez utiliser tmemorybuffer code>.

boost::shared_ptr<TMemoryBuffer> buffer(new TMemoryBuffer());
boost::shared_ptr<TBinaryProtocol> binaryProtcol(new TBinaryProtocol(buffer));

obj->write(binaryProtcol.get());
obj->read((binaryProtcol.get()));


1 commentaires

Est-ce que le obj doit être une instance de TBASE? En outre, une fois que le obj a été sérialisé à des octets à l'aide de l'appel d'écriture (), comment accéder à ces octets? Merci.



1
votes

Je me rends compte que cette question a été posée il y a quelque temps. J'ai récemment rencontré un cas d'utilisation similaire (avec une exigence supplémentaire - en envoyant les octets sérialisés à un cluster de Kafka). Voici mon Réponse avec plus complète Code des extraits qui illustrent la manière dont la sérialisation et l'envoi de tâches peuvent être effectuées.


2 commentaires

L'un d'eux est un duplicata comme c'est aujourd'hui. Ma recommandation serait d'envisager de reformuler l'autre question d'une manière qui en fait un non-dupliqué, c'est-à-dire de se concentrer sur la partie de la Kafka du problème.


Merci d'avoir fait remarquer cela. J'ai reformulé l'autre question à se concentrer sur Kafka. Faites-moi savoir si plus de changements sont nécessaires.