Un sistema distribuido consta de numerosos componentes ubicados en diferentes máquinas que se comunican y coordinan operaciones para parecer un solo sistema para el usuario final.
Representación de datos externos:
Las estructuras de datos se utilizan para representar la información contenida en las aplicaciones en ejecución. La información consiste en una secuencia de bytes en mensajes que se mueven entre componentes en un sistema distribuido. Por lo tanto, se requiere la conversión de la estructura de datos a una secuencia de bytes antes de la transmisión de datos. A la llegada del mensaje, los datos también deberían poder volver a convertirse a su estructura de datos original.
En las computadoras se manejan diferentes tipos de datos, y estos tipos no son los mismos en todas las posiciones donde se deben transmitir los datos. Los elementos de datos primitivos individuales pueden tener una variedad de valores de datos, y no todas las computadoras almacenan valores primitivos como números enteros en el mismo orden. Las diferentes arquitecturas también representan números de punto flotante de manera diferente. Los números enteros se ordenan de dos maneras, orden big-endian, en el que el byte más significativo (MSB) se coloca primero, y orden little-endian, en el que el byte más significativo (MSB) se coloca en último lugar o el byte menos significativo (LSB). ) se coloca primero. Además, una cuestión más es el conjunto de códigos que se utilizan para representar los caracteres. La mayoría de las aplicaciones en los sistemas UNIX utilizan la codificación de caracteres ASCII, que utiliza un byte por carácter,
Debe haber un medio para convertir todos estos datos a un formato estándar para que puedan enviarse con éxito entre computadoras. Si se sabe que las dos computadoras son del mismo tipo, la conversión de formato externo se puede omitir; de lo contrario, antes de la transmisión, los valores se convierten a un formato externo acordado, que luego se convierte al formato local al recibirlo. Para eso, los valores se envían en el formato del remitente, junto con una descripción del formato, y el destinatario los convierte si es necesario. Sin embargo, vale la pena señalar que los bytes nunca se cambian durante la transmisión. Cualquier tipo de datos que se pueda proporcionar como un parámetro o devolver, como resultado, debe poder convertirse y los valores de datos primitivos individuales expresarse en un formato aceptado para admitir los mecanismos de llamada a procedimiento remoto (RPC) o invocación de método remoto (RMI). . Asi que,
- Marshalling: Marshalling es el proceso de transferir y formatear una colección de estructuras de datos en un tipo de representación de datos externo apropiado para la transmisión en un mensaje.
- Unmarshalling: lo contrario de este proceso es unmarshalling, que implica volver a formatear los datos transferidos a su llegada para recrear las estructuras de datos originales en el destino.
Enfoques:
Hay tres formas de comunicarse con éxito entre varios tipos de datos entre computadoras.
1. Arquitectura de agente de solicitud de objetos comunes (CORBA):
CORBA es una especificación definida por Object Management Group (OMG) que actualmente es el middleware más utilizado en la mayoría de los sistemas distribuidos. Permite que sistemas con diversas arquitecturas, sistemas operativos, lenguajes de programación y hardware informático trabajen juntos. Permite que las aplicaciones de software y sus objetos se comuniquen entre sí. Es un estándar para crear y usar objetos distribuidos. Se compone de cinco componentes principales. Los componentes y su función se dan a continuación:
- Agente de solicitud de objetos (ORB): proporciona una infraestructura de comunicación para que los objetos se comuniquen a través de una red.
- Lenguaje de definición de interfaz (IDL): es un lenguaje de especificación utilizado para proporcionar una interfaz en un componente de software. Por ejemplo, permite la comunicación entre componentes de software escritos en C++ y Java.
- Interfaz de invocación dinámica (DII): al usar DII, las aplicaciones cliente pueden usar objetos de servidor sin siquiera conocer sus tipos en el momento de la compilación. Aquí el cliente obtiene una instancia de un objeto CORBA y luego las requests de invocación se pueden realizar dinámicamente en el objeto correspondiente.
- Repositorio de interfaz (IR): como su nombre lo indica, las interfaces se pueden agregar al repositorio de interfaz. El propósito de IR es que un cliente pueda encontrar un objeto que no se conoce en tiempo de compilación y la información sobre su interfaz, luego se realiza la solicitud para enviarla a ORB.
- Adaptador de objetos (OA): se utiliza para acceder a servicios ORB como la generación de referencias de objetos.
Representación de datos en CORBA:
La representación de datos comunes (CDR) se utiliza para describir tipos de datos primitivos o estructurados que se proporcionan como argumentos o resultados durante invocaciones remotas en objetos distribuidos de CORBA. Permite que los lenguajes informáticos integrados de clientes y servidores se comuniquen entre sí. Por ejemplo, convierte little-endian en big-endian.
Hay 15 tipos primitivos: corto (16 bits), largo (32 bits), corto sin signo, largo sin signo, flotante (32 bits), doble (64 bits), char, booleano (VERDADERO, FALSO), octeto (8 bits) y any (que puede representar cualquier tipo básico o construido), así como una variedad de tipos compuestos.
CORBA CDR Tipos Construidos:
Echemos un vistazo a los Tipos con su representación:
- secuencia: Se refiere a la longitud (largo sin signo) que deben seguir los elementos en orden
- string: Se refiere a la longitud (largo sin firmar) seguido de caracteres en orden (también puede tener caracteres anchos)
- array: los elementos de la array siguen un orden y la longitud es fija, por lo que no se especifica.
- struct: en el orden de declaración de los componentes
- enumerated: Es unsigned long y aquí, los valores se especifican por el orden declarado.
- unión: escriba la etiqueta seguida del miembro seleccionado
Ejemplo:
struct Person { string name; string place; long year; };
Clasificación de CORBA:
A partir de la especificación de las categorías de elementos de datos a transmitir en un mensaje, se pueden producir automáticamente operaciones de Marshalling CORBA. CORBA IDL describe los tipos de estructuras de datos y elementos de datos fundamentales y proporciona un lenguaje/notación para especificar los tipos de argumentos y resultados de los métodos RMI.
2. Serialización de objetos de Java:
La invocación de métodos remotos de Java (RMI) le permite pasar objetos y valores de datos primitivos como argumentos y llamadas a métodos. En Java, el término serialización se refiere a la actividad de colocar un objeto (una instancia de una clase) o un conjunto de objetos relacionados en un formato de serie adecuado para guardar en el disco o enviar un mensaje.
Java proporciona un mecanismo llamado serialización de objetos. Esto permite representar un objeto como una secuencia de bytes que contienen información sobre los datos del objeto y el tipo de objeto y el tipo de datos almacenados en el objeto. Una vez que el objeto serializado se escribe en el archivo, se puede leer del archivo y deserializar. Puede recrear un objeto en la memoria con información de tipo y bytes que representan el objeto y sus datos.
Además, los objetos se pueden serializar en una plataforma y deserializar en plataformas completamente diferentes, ya que todo el proceso es independiente de JVM.
Por ejemplo, la clase Java equivalente a la estructura Person definida en CORBA IDL podría ser:
Java
import java.io.*; public class Person implements Serializable { public String name; public String place; public int phonenumber; public void letter() { System.out.println("Issue a letter to " + name + " " + place); } }
3. Lenguaje de marcado extensible (XML):
Los clientes se comunican con los servicios web mediante XML, que también se utiliza para definir las interfaces y otros aspectos de los servicios web. Sin embargo, XML se utiliza en una variedad de aplicaciones diferentes, incluidos los sistemas de archivo y recuperación; mientras que un archivo XML es más grande que un archivo binario, tiene la ventaja de ser legible en cualquier máquina. Otras aplicaciones XML incluyen el diseño de interfaces de usuario y la codificación de archivos de configuración del sistema operativo.
A diferencia de HTML, que emplea un conjunto fijo de etiquetas, XML es extensible en el sentido de que los usuarios pueden construir sus etiquetas. Si un documento XML está destinado a ser utilizado por varias aplicaciones, los nombres de las etiquetas deben ser únicos.
Los clientes, por ejemplo, suelen interactuar con los servidores web a través de mensajes SOAP. SOAP es un estándar XML con etiquetas que pueden utilizar los servicios web y sus clientes. Debido a que se espera que el cliente y el servidor que comparten un mensaje tengan conocimiento previo del orden y los tipos de información que contiene, algunas representaciones de datos externos (como CORBA CDR) no necesitan ser autodescriptivas. Por otro lado, XML fue diseñado para ser utilizado por una variedad de aplicaciones por una variedad de razones. Esto ha sido posible gracias a la inclusión de etiquetas y el uso de espacios de nombres para especificar el significado de las etiquetas. Además, el uso de etiquetas permite que las aplicaciones seleccionen solo las partes de un documento que necesitan procesar.
Ejemplo:
XML definition of the Person struct: <person id="9865"> <name>John</name> <place>England</place> <year>1876</year> <!-- comment --> </person>
Uso:
Marshalling se utiliza para crear varios protocolos de llamadas a procedimientos remotos (RPC), donde los procesos y subprocesos separados a menudo tienen distintos formatos de datos, lo que requiere la necesidad de ordenar entre ellos.
Para transmitir datos a través de los límites de los objetos COM, los punteros de la interfaz del Modelo de objetos componentes (COM) de Microsoft emplean clasificación. Cuando un tipo basado en tiempo de ejecución de lenguaje común tiene que conectarse con otros tipos no administrados a través de la ordenación, sucede lo mismo en el marco .NET. DCOM significa Modelo de objetos de componentes distribuidos.
Las secuencias de comandos y las aplicaciones basadas en la tecnología del Modelo de objetos de componentes multiplataforma (XPCOM) son otros dos ejemplos en los que la ordenación es crucial. Mozilla Application Framework hace un uso intensivo de XPCOM, que hace un uso considerable de la clasificación.
Entonces, XML (Lenguaje de marcado extensible) es un formato basado en texto para expresar datos estructurados. Fue diseñado para representar datos enviados en mensajes intercambiados por clientes y servidores en servicios web.
Los tipos de datos primitivos se organizan en forma binaria en las dos primeras formas: CORBA y serialización de objetos de Java. Los tipos de datos primitivos se expresan textualmente en la tercera técnica (XML). La representación textual de un valor de datos normalmente será más larga que su representación binaria. El protocolo HTTP es otro ejemplo del enfoque textual.
Por otro lado, la información de tipo se incluye tanto en la serialización de Java como en XML, pero de formas distintas. Aunque Java serializa toda la información de tipo esencial, los documentos XML pueden hacer referencia a espacios de nombres, que son grupos de nombres (con tipos) especificados externamente.
Publicación traducida automáticamente
Artículo escrito por annieahujaweb2020 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA