Je me demande quel mécanisme sérialisé devrions-nous choisir lorsque nous traitons des objets transférés sur le réseau. Quels sont les avantages et inconvénients ?
Je sais que la plupart du temps, nous utilisons JSON
ou XML
pour AJAX
puisque les formats de transfert sont à peu près le format Javascript
et plus JSON
est assez léger avec son faible encombrement, donc la sérialisation Java
est-elle totalement hors de propos?
En général, la question importante est de savoir quel client recevra les objets sérialisés - navigateurs/moteurs JavaScript comme (node-js), Java, clients inconnus/multiples).
JSON - La syntaxe JSON est essentiellement JavaScript et donc tout composant avec un moteur JS gérera très bien son analyse - même les structures de données compliquées seront converties en objets "vivants" efficacement. Les analyseurs JSON existent pour pratiquement toutes les langues et il est facile à utiliser même lorsque vous n'utilisez pas de moteur JS (prenez Google Gson par exemple, qui est capable de convertir JSON en objets correspondants avec facilité), ce qui en fait un bon candidat pour la communication multilingue - par exemple dans une architecture de messagerie .
XML - partage de nombreux avantages de JSON - multilingue, léger, etc. Adobe Flex, par exemple, gère très bien XML, encore mieux que JSON. C'est certainement un substitut approprié pour JSON. Personnellement, je préfère JSON pour sa syntaxe JS, mais XML est également bon.
Sérialisation Java - Ne doit être envisagée que pour la communication Java vers Java. Une note importante est que les définitions de classe devraient être sur les extrémités d'envoi et de réception et souvent vous ne gagneriez pas grand-chose en passant l'objet entier. Je n'écarterais pas RMI comme protocole de communication, cela simplifie le développement. Cependant, les composants d'application résultants seront couplés en dur, ce qui rendra leur remplacement très difficile.
Encore une remarque - La sérialisation en général a ses frais généraux. Cependant, lorsque la communication est effectuée sur un réseau, le goulot d'étranglement est souvent le réseau plutôt que la sérialisation/désérialisation elle-même.
Je pense que cela dépend. Si vous envoyez une requête http ou quelque chose, alors JSON ou XML est évidemment un bon choix. Si vous envoyez simplement un objet Java sur un socket tcp pour un algorithme distribué ou quelque chose, je pense que la sérialisation Java est plus facile/meilleure)
Pendant la sérialisation sur le réseau, xml et json fonctionneraient. Cela dépend du consommateur de ces informations.
Si le consommateur est un navigateur utilisant Ajax pour demander des informations et afficher quelque chose à l'écran, jason est généralement le meilleur choix car il est déjà au format d'objet Javascript et il n'y a pas de frais généraux de conversion en objets compatibles Javascript. En fait, de nombreuses bibliothèques Ajax (par exemple jQuery) ont un bon support pour json.
Si votre consommateur est une autre application qui peut ou non être en Java, alors xml est le mécanisme de sérialisation préféré. Les services Web utilisent très largement xml.
Si votre consommateur est un autre programme Java alors définitivement Java est l'option préférée (par exemple RMI). Donc ce n'est pas encore disponible :-).
Mais oui, il y a une ligne floue entre XML et Json. Ce que j'ai mentionné ici, c'est la pratique générale. Voici un Nice article mettant tout l'aspect sur xml vs jason.
Je pense qu'en tant que développeur, nous n'avons pas besoin de nous occuper de la sérialisation des objets de réponse. mais si nous considérons JSON, il a des avantages décents pour choisir XML.