J'ai une application serveur que je réécris en C++ et qui utilisait XML pour envoyer des données à un client/d'un client. J'ai trouvé que c'était très difficile d'implémenter XML, même en utilisant des bibliothèques existantes. Il semble que c'est juste contre-intuitif parfois et la bibliothèque C++ que j'ai utilisée semble tellement compliquée. Je me demandais si quelqu'un connaissait de meilleures façons d'envoyer des données de client à serveur et de revenir de manière plus simple et plus intuitive, puis d'analyser XML. Les données sont principalement composées uniquement de types de base. Je pensais peut-être juste utiliser une structure avec les types de données nécessaires et juste l'envoyer sur une socket raw. J'ai perdu tellement de temps là-dessus, c'est irréel.Remplacement XML
Répondre
Je voudrais essayer JSON ou tampons de protocole de Google pour voir si elles fonctionnent pour vous.
Je considérerais DBus comme le protocole, car il est plutôt standard.
Comme duffymo dit, JSON est parfaitement adapté à ce que vous essayez de faire. Pour ajouter à sa réponse, il a une représentation saine dans de nombreux langages (je sais que XML le fait aussi, mais le point ici est que le PO trouve que XML est pénible pour les types de données simples).
Vous pouvez en savoir plus sur JSON au http://www.json.org/. Au bas de cette page se trouvent des liens vers des implémentations pour différents langages (y compris C++, par exemple: http://sourceforge.net/projects/jsoncpp/).
En termes simples, JSON est synonyme de JavaScript Object Notation et constitue un moyen simple de décrire des objets. Une adresse pourrait être respresented par:
{
"address1" : "5, The Green",
"address2" : "Some Street",
"town" : "JsonVille"
}
Les tableaux sont pris en charge:
{
"address1" : "5, The Green",
"address2" : "Some Street",
"town" : "JsonVille"
"occupants": ["olivia", "newton", "john"]
}
et des objets plus complexes:
{
"address1" : "5, The Green",
"address2" : "Some Street",
"town" : "JsonVille"
"occupants": [{"name" : "Olivia",
"age" : 24
},{"name" : "Newton",
"age" : 32
},{"name" : "John",
"age" : 42}
]
}
EDIT: erreur de syntaxe :)
Je trouve que JSon gagne contre XML sur tous les points. C'est vraiment facile à lire/écrire, puisqu'il n'y a pas d'entités json à proprement parler, c'est aussi très concis (pas de redondance des tags) grâce à sa syntaxe allégée. –
Il y a quelques alternatives en fonction de ce que votre besoin est. Il est clair que Google Protobuf est la meilleure alternative pour le transfert de données réseau axé sur les performances. Cependant, il est nettement moins facile à utiliser que tout autre alternative que je vais vous donner parce qu'il est fait clairement être efficace, non lisible par l'homme, etc.
Pour les données lisibles par l'homme, il y a:
- JSON
- YAML (alsmot toutes les langues ont au moins une implémentation de l'analyseur)
- format INFO fourni par boost :: property_tree
Je ne dirais pas que les tampons de protocole sont clairement moins faciles à utiliser. Je pense que le fait que vous obteniez des classes personnalisées le rend beaucoup plus facile à utiliser. En outre, la bibliothèque de tampon de protocole prend également en charge un format de texte équivalent (que vous pouvez utiliser pour votre communication réelle si vous le souhaitez, ou simplement pour le débogage). –
Je comparais en utilisant un tel outil de bas niveau qui a besoin de la génération de code, comparé au format de texte lisible par l'homme. Mais je suis d'accord. – Klaim
Si tout ce que vous faites est d'envoyer des données sur un réseau - vous n'avez pas besoin d'une représentation de texte modifiable telle que XML ou JSON - alors regardez boost :: serialization.
- 1. remplacement XML avec XSL
- 2. xml remplacement d'attribut avec xslt
- 3. Remplacement de la valeur XML dans XSLT
- 4. Recherche et remplacement de données XML
- 5. Remplacement du nœud XML dans Actionscript 3
- 6. champ XML de remplacement en C#
- 7. Remplacement d'un élément XML par un autre
- 8. Remplacement XML dans le fichier de « document » en Java
- 9. Recherche textuelle et remplacement dans une colonne XML
- 10. Remplacement d'un * terme spécifique * dans un fichier XML
- 11. Remplacement des valeurs de nœud XML multiples dans TextPad
- 12. Flex: Remplacement d'un nœud dans un objet XML
- 13. remplacement de chaîne
- 14. Remplacement pour ServerXMLHTTP30
- 15. texte Remplacement après noeud
- 16. Regex remplacement
- 17. Remplacement Singleton?
- 18. Remplacement Watij
- 19. Captcha remplacement
- 20. XSLT multiples remplacement
- 21. C remplacement # chaîne, ne fonctionne pas
- 22. Remplacement du code de remplacement Eclipse non mis à jour
- 23. Remplacement de l'image de remplacement actuelle avec la bibliothèque JavaScript
- 24. expression régulière simple remplacement
- 25. Remplacement de JAXMServlet?
- 26. img remplacement avec JQuery
- 27. remplacement variables sed
- 28. remplacement Problème dans VB.NET
- 29. dojo AccordionPane onSelected remplacement
- 30. Remplacement d'un DIV?
Cela donne une bonne comparaison des tampons de protocole vs DBus http://lists.freedesktop.org/archives/dbus/2009-September/011786.html – CashCow