Donc, j'ai un serveur et un client qui communiquent diverses données et quatrième. Au départ, j'ai eu une méthode compliquée qui a traversé le tableau d'octets et convertit toutes ses variables et toutes ses cordes, une à une, dans ce qu'ils étaient censés être. J'ai appris que je pouvais mettre toutes les variables dans un objet et le convertir en une matrice d'octet à l'aide de et de le convertir en utilisant p> Ce que je veux accomplir ici, c'est avoir Un objet de rien que plusieurs variables et chaînes, convertissez-la en une matrice d'octet, envoyez-la à une autre application et la reconvertissez-la dans l'objet. De cette façon, je n'ai pas à jouer avec le tableau d'octets pour extraire toutes mes variables et chaînes. P> Merci P> P>
4 Réponses :
Ceci fonctionnera si les deux côtés du canal de communication ont une référence à Si vous voulez un mécanisme plus tolérant des inadéquations de version, envisagez d'utiliser Si un format compact est requis, vous pouvez envisager d'envisager tampons de protocole Google . < / p> xmlSerializer code> à la place (mais noter que l'addition / les modifications des champs / propriétés peut entraîner un comportement incorrect si les versions ne correspondent pas à la version. ). p>
Si vous envoyez une liste de chaînes (ou une dict de chaînes) est ce que vous voulez que ce n'est pas un problème, envoyez simplement une liste (ou dict) des chaînes. Votre problème vient parce que vous essayez d'envoyer un type de données que l'autre projet ne reconnaît pas. Vous n'avez même pas besoin de changer de vos fonctions, vous devez simplement modifier ce que vous envoyez. Sinon, vous pouvez faire référence à des tests1s du programme recevant les données. P>
Il existe une myriade de bibliothèques de sérialisation pré-laminées qui aideront ici. BinaryFormatter possède des fonctionnalités indésirables (IMO) indésirables, en particulier, elle ne fonctionnera que avec exactement la même dll (bien, à peu près) aux deux extrémités. P>
XMLSerializer, DatacontractSerializer et JavasCrriptsérializer sont de bonnes implémentations à base de texte et fonctionnent bien avec un contrat compatible em> aux deux extrémités (mêmes propriétés, etc. - pas nécessairement le même type / la même version). P >
Si vous avez des besoins modérés de bande passante, ou si vous avez besoin de meilleures performances de la CPU, je recommanderais ProTobuf-Net (CAVEAT: Je l'ai écrit) qui est un sérialisateur binaire rapide qui peut aider. P>
Écrivez votre propre objet de / à des octets convertisseur au lieu d'utiliser Bilarystream devrait fonctionner. P>
Si vous insistez, déplacez cet objet à son propre assemblage et ajoutez-le aux deux côtés comme référence. De cette manière, .NET Framework devrait pouvoir désexciter / sérialiser l'objet. P>
Si j'étais vous, j'utiliserais un débogueur pour essayer de comprendre celui-ci. À moins que ce soit, c'est-à-dire que vous croyez qu'un débogueur est la mère de tout mal. Si vous ne savez pas ce que je veux dire, obtenez une charge de ceci: Stackoverflow.com/Questtions/602138/...