Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Inicio
Casa
Índices
Buscar
Artículo al azar
Cambios recientes
English
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Marshalling
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
El '''Marshalling''' o '''Marshaling''' (presentación) es el proceso de transformación de la representación de datos a un formato adecuado, realizado según unas normas específicas y que su objetivo más primordial es la transferencia de estos a través de la red. El uso principal del marshalling lo veremos en [[sistemas distribuidos]], ya que en este tipo de sistemas podemos encontrarnos distintos tipos de [[hardware]], debido a los cuales podemos tener problemas en la interpretación de los datos recibidos al guardarlos en disco, lo que nos llevaría a un error. Este problema se debe a que las diferentes CPU's utilizan cada una sus propias reglas para el posicionamiento de los campos de las estructuras en memoria. El mecanismo que sigue el marshalling para que el envío se haga satisfactoriamente seria, primero tenemos la información en el formato de la plataforma utilizada por el emisor, convertimos estos datos a un formato estándar que usaremos para la transferencia, una vez transferidos el receptor tendrá que decodificar esos datos y crear un dato nuevo en su plataforma. Dentro del concepto marshalling, podemos definir 2 subprocesos, codificación y decodificación a los que nos podemos referir como marshalling y unmarshalling. == Uso == El marshalling es utilizado principalmente en las llamadas a procedimientos remotos ([[Llamada a procedimiento remoto|RPC]]), en las que necesitaremos mecanismos para que la comunicación entre procesos sea exitosa. El marshalling está soportado por muchos lenguajes como son [[C (lenguaje de programación)|C]], [[C++]], [[Java (lenguaje de programación)|Java]], [[C Sharp|C#]], [[PERL]], [[Python]], [[Scala (lenguaje de programación)|Scala]] entre otros muchos,que han ido incluyendo paquetes, módulos y API para dar este servicio a sus usuarios. == Diferencias con serialización == En muchos lenguajes se usa el término de [[serialización]] como sinónimo de marshalling, ya que ambos procedimientos pudiera parecer que hacen lo mismo, ambos transforman datos a otro formato que los beneficie ya sea para el envío o para almacenarlos. Pero veremos que son mecanismos similares pero que tienen propósitos distintos. En la serialización, copiamos los datos estructurados desde o hacia una primitiva en forma de flujo de bytes, sin tener en cuenta el tipo de datos. Esto nos puede venir bien cuando nos comunicamos dentro de un mismo entorno. En cambio, el marshalling, está principalmente pensado para sistemas distribuidos y, por eso, debemos tener más información aparte de los datos propiamente dichos. Para poder interpretar los datos necesitaremos enviar junto a estos [[metadatos]], los cuales serán los encargados de que los datos se muestren tal y como fueron enviados. == Tipos de representación == Para poder realizar el marshalling con la información que queremos enviar, necesitamos un formato estándar y bien estructurado, al cual transformar nuestros datos para que después del envío, la transformación inversa sea satisfactoria y que se logre el envío de datos satisfactorio. === CORBA === [[CORBA]] es un estándar definido por la [[OMG]]. Este método lo que hace es crear un objeto remoto propio de CORBA en representación del objeto local, de manera que la comunicación entre diferentes equipos sea satisfactoria.Esto podemos hacerlo entre diferentes máquinas, pero no todos los lenguajes están soportados por CORBA. Debido a fallos de implementación y problemas de diseño de CORBA se fue quedando en desuso. === Serialización de Java === Aquí vemos como en [[Java (lenguaje de programación)|Java]] se utiliza el término serialización de manera indiferente para ambos procesos. En este caso podremos realizar el marshalling entre diferentes equipos pero tenemos la desventaja de que sólo funciona dentro de java, no podremos tener comunicación entre lenguajes. === XML === El [[XML]], principal formato para el marshalling, esto se debe a que no hay incompatibilidades de comunicación entre lenguajes ni plataformas. De hecho es tan popular, que muchos lenguajes ya tienen APIs para facilitar este tipo de marshalling, por ejemplo tenemos [[JAXB]] en java o XmlSerializer para C#. == Unmarshalling == Dentro del proceso de marshalling tenemos el subproceso del unmarshalling. Éste trata de la parte del receptor que reconstruye el elemento a través de la información recibida en un formato estándar. Este proceso puede ser algo más complicado que el de marshalling, ya que no es una traducción directa. Esto se debe a que no sólo enviamos un dato sino [[metadato]]s. Esta diferencia hace que el marshalling y unmarshalling no sean simétricos y que el unmarshalling tenga una carga de trabajo mayor. == Véase también == *[[CORBA]] *[[JAXB]] *[[Component Object Model]] == Referencias == {{References}} {{Control de autoridades}} [[Categoría:Computación distribuida]] [[Categoría:Programación]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Marshalling
»
Añadir idiomas
Añadir tema