2010-07-21 4 views
1

Salut les gars Je crée un serveur de socket très simple qui permet à ses clients d'enregistrer son propre état d'objet basé sur les clés en l'envoyant sur le réseau. J'utilise un protocole très simple codant l'objet sérialisé à la chaîne base64 et sera envoyé dans le cadre de mon format xml personnalisé. Je voulais savoir si la sérialisation sera toujours la même si l'application cliente fonctionne sur Windows 32 bits et 64 bits et utilise .net Framework? cela sera-t-il également le cas si toutes les applications clientes sont créées en utilisant C++ mais fonctionnent sur des plateformes différentes?Sérialisation d'objets sur différentes plates-formes

Répondre

1

La sérialisation entre CLR 32 bits et 64 bits ne devrait pas poser de problème, mais si vous souhaitez pouvoir sérialiser sur des plates-formes non-NET, vous ne devez pas utiliser la sérialisation binaire par défaut. Personnellement, je ne l'utilise que de toute façon, car il peut être difficile à gérer en termes de versioning, etc.

Il y a beaucoup d'autres options de sérialisation disponibles:

  • sérialisation XML (soit le ou intégré roulés à la main)
  • Thrift
  • YAML
  • JSON
  • Protocol Buffers
  • (Je déclare un intérêt: J'ai écrit l'un des ports de buffers Protocole à C#)

Tous ces éléments fonctionneront probablement mieux sur plusieurs plates-formes. Certains sont lisibles par l'homme, ce qui peut parfois être utile. (Les tampons de protocole ne sont pas lisibles par un humain, mais il est facile de vider une version texte d'un message de tampon de protocole.)

Certains construisent efficacement leur propre modèle d'objet via un schéma séparé, tandis que d'autres vont faire face (à un plus ou moins degré) avec votre modèle d'objet existant.

+0

+1 pour YAML et Thrift – onof

+0

En fait, je voulais désérialiser des objets créés sur des applications non.net depuis que j'ai fourni un moyen sur mon format xml personnalisé pour me donner quelques informations de base sur l'objet encodé comme la version et son type. Pouvez-vous me dire une meilleure façon de le faire? – powerbox

Questions connexes