2008-09-30 21 views
42

He escuchado que este concepto se usa con frecuencia, pero no tengo una buena idea de lo que es.¿Qué es la agrupación de objetos?

+0

realmente debería agregar un poco más a esto, como el contexto que está buscando. Ejemplo, un ejemplo: marshalling en .net es el proceso de traducir datos de tipos administrados a tipos no administrados para cruzar los límites. También podría usarse en muchos otros contextos. – mattlant

+0

@mattlant: Marshalling significa lo mismo en cada caso. Esas son solo implementaciones diferentes. – GEOCHET

Respuesta

30

Convertir un objeto en la memoria en un formato que se puede escribir en el disco, o se envía a través del cable, etc.

Wikipedia's description.

+16

Aparentemente esa es la definición de 'serialización'; 'ordenar' es ligeramente diferente: http://stackoverflow.com/questions/770474/what-is-the-difference-between-serialization-and-marshalling –

+0

@StephThirion ¿Quiere decir que un objeto, si no se serializa, puede tener un estado , no habrá ninguna base de código, es decir, no se podrá llamar a ninguna de sus funciones, solo se trata de un tipo de datos estructurados. Y, si el mismo objeto es ordenado, ¿tendrá su base de código junto con la estructura y uno puede llamar a sus funciones? – bjan

33

Discuto, Wikipedia es bastante clara en esto.

En informática, cálculo de referencias (similar a la serialización) es el proceso de transformar la representación de memoria de un objeto a un datos formato adecuado para almacenamiento o transmisión . Normalmente se usa cuando los datos se deben mover entre diferentes partes de un programa de computadora o de un programa a otro.

http://en.wikipedia.org/wiki/Marshalling_(computer_science)

+19

¿Con qué estás en desacuerdo? –

+0

Sin embargo, la definición puede variar ligeramente según el contexto. – david

+2

@david: ¡Definción! = Implementación. – GEOCHET

1

Significa convertir los datos en otro tipo de datos para transferir a otro sistema.

P. ej., Organizar una estructura en un documento XML para enviar al servicio web o coordinar un puntero para enviarlo a un apartamento de subprocesos diferente.

1

En un sentido muy genérico en la programación, simplemente significa tomar datos en un formato y transformarlos a un formato que sea aceptable por algún otro subsistema.

3

Aclaré una búsqueda en google para "recopilación de datos" y el primer hit fue on some place called webopedia, que es bastante bueno. Lo esencial es transformar datos de ida y vuelta a un formulario para cosas como la transmisión a través de una red. El problema que resuelve es que realmente no puede transmitir datos a través de una red en una forma que pueda usar un programa. Tienes que resolver una serie de problemas, como datos de endianidad de datos, cómo almacenar tipos de datos complejos como cadenas, etc.

Marshalling no es solo para resolver problemas de transmisión de red, sino también otros problemas como pasar de una arquitectura a otra , tal vez diferentes idiomas, especialmente aquellos que podrían usar cosas como máquinas virtuales, y otros problemas de "traducción".

3

Marshalling es el proceso de transformación de la representación de memoria de un objeto a un formato de datos que podría almacenarse o transmitirse. También se llama serialization (aunque podría ser diferente en ciertos contextos). La representación de la memoria del objeto se puede almacenar como binario o XML o cualquier formato adecuado para el almacenamiento y/o la transmisión de una manera que le permita desempaquetarlo y recuperar el objeto original.

Para un ejemplo de uso, si tiene algún juego en línea con componentes de cliente y servidor y desea enviar el objeto del jugador que contiene estadísticas de jugador y coordenadas mundiales del cliente al servidor (o al revés), simplemente puede ordenarlo en el cliente, enviarlo a través de la red y desempaquetarlo en el otro extremo y aparecerá para el servidor como si el objeto se hubiera creado en el servidor mismo. Aquí está un ejemplo rubí:

srcplayer = Player.new 
# marshal (store it as string) 
str = Marshal.dump(srcplayer) 
#unmarshal (get it back) 
destplayer = Marshal.load(str) 
2

Básicamente se trata de una expresión para la transformación de forma genérica un objeto (o similar) en otra representación que (por ejemplo) puede ser enviada a través del cable o se almacena en el disco (típicamente cadena o secuencia binaria.Lo opuesto, desasociación, describe la dirección opuesta a la lectura de la representación ordenada y la recreación de un objeto o cualquier estructura in-memory existente anteriormente.

Otro ejemplo cotidiano corriente es JSON

3

Marshalling es el proceso de transferencia de datos a través de límites de aplicaciones o entre diferentes formatos de datos. La clasificación es muy común, por ejemplo, la escritura de datos en el disco o en una base de datos se organiza técnicamente, sin embargo, el término tiende a usarse para describir la conversión de datos para API "extranjeras" o para la comunicación entre procesos. Por ejemplo, en .NET, la comunicación entre código administrado y no administrado (como el acceso a ciertas API win32) probablemente requiera una clasificación para convertir entre objetos C# administrados y objetos de estilo C/C++ (estructuras, controladores, etc.) , búferes de salida, etc.) La ayuda para el estático Marshal class podría ser útil.

10

Las personas ya han definido la clasificación con bastante claridad, así que omitiré la definición y daré un ejemplo.

Llamada a procedimiento remoto utiliza clasificación. Cuando invoque funciones remotas, deberá ordenar los argumentos en algún tipo de formato estándar para que pueda ser transportado a través de la red.

Cuestiones relacionadas