Quel est l'objet de triage?
J'ai entendu ce concept utilisé fréquemment, mais je n'ai pas vraiment une bonne compréhension de ce qu'il est.
9 réponses
Conversion d'un objet en mémoire dans un format qui peut être écrit sur le disque, ou envoyé sur le fil, etc.
Je vous prie de différer, Wikipedia est assez clair à ce sujet.
En informatique, marshalling (similaire à la sérialisation) est le processus de transformation de la mémoire représentation d'un objet de données format approprié pour le stockage ou transmission. Il est généralement utilisé lorsque les données doivent être déplacées entre différentes parties d'un programme informatique ou d'un programme à un autre.
Les gens ont déjà défini le marshalling assez clairement, donc je vais sauter la définition et passer à un exemple.
L'appel de procédure distant utilise le marshalling. Lorsque vous appelez des fonctions distantes, vous devrez marshall les arguments à une sorte de format standard afin qu'il puisse être transport à travers le réseau.
J'ai clarifié une recherche google pour "Data marshalling" et le premier coup était sur un endroit appelé webopedia qui est assez bon. L'essentiel est que vous transformez les données en une forme pour des choses comme la transmission sur un réseau. Le problème qu'il résout est que vous ne pouvez pas vraiment transmettre des données sur un réseau sous une forme utilisable par un programme. Vous devez résoudre un certain nombre de problèmes, y compris des choses comme endianness of data, comment vous stockez des types de données complexes comme les chaînes, etc.
Le Marshalling n'est pas seulement pour résoudre des problèmes de transmission réseau, mais d'autres problèmes tels que le passage d'une architecture à une autre, peut-être différentes langues en particulier celles qui pourraient utiliser des machines virtuelles, et d'autres problèmes de "traduction".
Le Marshalling {[3] } est le processus de transformation de la représentation mémoire d'un objet en un format de données pouvant être stocké ou transmis. Il est également appelé sérialisation (bien qu'il puisse être différent dans certains contextes). La représentation de la mémoire de l'objet peut être stockée en tant que binaire ou XML ou tout format approprié pour le stockage et/ou la transmission d'une manière qui vous permet de le démarshal et de récupérer l'objet d'origine.
Pour un exemple d'utilisation, si vous avez un jeu en ligne avec des composants client et serveur et vous vouliez envoyer l'objet joueur contenant les statistiques du Joueur et les coordonnées du monde du client au serveur( ou l'inverse), vous pouvez simplement le marshaler au client, l'envoyer sur le réseau, et le démarshaler à l'autre extrémité et il apparaîtrait pour le serveur comme si l'objet avait été créé sur le serveur lui-même. Voici un exemple de ruby:
srcplayer = Player.new
# marshal (store it as string)
str = Marshal.dump(srcplayer)
#unmarshal (get it back)
destplayer = Marshal.load(str)
Le Marshalling est le processus de transfert de données au-delà des limites de l'application ou entre différents formats de données. Le Marshalling est très commun, par exemple écrire des données sur le disque ou dans une base de données est techniquement marshalling, mais le terme a tendance à être utilisé pour décrire la conversion de données pour les API "étrangères" ou pour la communication interprocess.
Par exemple, dans. NET, la communication entre le code géré et le code non géré (comme l'accès à certaines API win32) nécessitera probablement un afin de convertir en arrière entre les objets c# gérés et les objets de style C / C++ (structures, poignées,tampons de sortie, etc.) L'aide pour la classe Marshal statique pourrait être utile.
Fondamentalement, c'est une expression pour transformer génériquement un objet (ou similaire) en une autre représentation qui (par exemple) peut être envoyée sur le fil ou stockée sur le disque (généralement chaîne ou flux binaire. Le contraire, unmarshalling, décrit la direction opposée de la lecture de la représentation marshalled et de la recréation d'un objet ou de toute structure en mémoire existant auparavant.
Un autre exemple quotidien actuel est JSON
Dans un sens très générique de la programmation, cela signifie simplement prendre des données dans un format et les transformer en un format acceptable par un autre sous-système.
Cela signifie transformer toutes les données en un autre type de données pour les transférer vers un autre système.
E. g., le marshaling d'un struct dans un document XML à envoyer au service web, ou de l'ordonnancement d'un pointeur pour l'envoyer à un thread différent de l'appartement.