Ice Spanish

  • Published on
    19-Jul-2015

  • View
    131

  • Download
    1

Embed Size (px)

Transcript

<p>c David Vallejo Fern ndez. Se permite la copia, distribuci n y/o modicaci n de este documento a o o bajo los t rminos de la licencia de documentaci n libre GNU, versi n 2 o cualquier versi n posterior e o o o publicada por la Free Software Foundation, sin secciones invariantes. Puede consultar esta licencia en http://www.gnu.org.A Este documento fue compuesto con LTEX. Im genes generadas con OpenOfce. a</p> <p> Indice general1. Introducci n o 1.1. Introducci n general a los middlewares o 1.1.1. Conceptos . . . . . . . . . . . . 1.1.2. Fundamentos b sicos . . . . . . a 1.2. Caractersticas generales de ICE . . . . 1.3. Organizaci n de este documento . . . . o 1 1 1 2 3 4</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>I</p> <p>Un vistazo a ICE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</p> <p>56 6 6 19 19 19 21 22 22 23 23 24 24 24 24 26 26 26 27 30 32 33</p> <p>2. Toma de contacto con ICE 2.1. La arquitectura de ICE . . . . . . . . . . . . . . . 2.1.1. Terminologa . . . . . . . . . . . . . . . . 2.1.2. Slice (Lenguaje de especicaci n para ICE) o 2.1.3. Mappings de lenguajes . . . . . . . . . . . 2.1.4. Estructura cliente-servidor . . . . . . . . . 2.1.5. El protocolo ICE . . . . . . . . . . . . . . 2.1.6. Persistencia de objetos . . . . . . . . . . . 2.2. Servicios ofrecidos por ICE . . . . . . . . . . . . . 2.2.1. IceGrid . . . . . . . . . . . . . . . . . . . 2.2.2. IceBox . . . . . . . . . . . . . . . . . . . 2.2.3. IceStorm . . . . . . . . . . . . . . . . . . 2.2.4. IcePatch2 . . . . . . . . . . . . . . . . . . 2.2.5. Glacier2 . . . . . . . . . . . . . . . . . . . 2.3. Benecios arquitect nicos de ICE . . . . . . . . . o</p> <p>3. Un ejemplo sencillo de aplicaci n con ICE o 3.1. Hola mundo! con ICE . . . . . . . . . . . . . . . . . . . . 3.1.1. Escribiendo la denici n en Slice . . . . . . . . . . o 3.1.2. Escribiendo la aplicaci n en Python . . . . . . . . . o 3.1.3. Escribiendo la aplicaci n en C++ . . . . . . . . . . o 3.1.4. Escribiendo la aplicaci n en Java . . . . . . . . . . o 3.1.5. Escribiendo la parte cliente de la aplicaci n en Ruby o</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>3</p> <p> INDICE GENERAL</p> <p>4</p> <p>II</p> <p>Slice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</p> <p>3536 36 37 37 38 39 40 40 41 42 46 46</p> <p>4. El lenguaje Slice 4.1. Introducci n . . . . . . . . . . . . . . . . . . o 4.2. Aspectos b sicos . . . . . . . . . . . . . . . a 4.2.1. Compilaci n . . . . . . . . . . . . . o 4.2.2. Ficheros fuente . . . . . . . . . . . . 4.2.3. Reglas l xicas . . . . . . . . . . . . . e 4.2.4. M dulos . . . . . . . . . . . . . . . o 4.2.5. Tipos b sicos en Slice . . . . . . . . a 4.2.6. Tipos denidos por el usuario . . . . 4.2.7. Interfaces, operaciones, y excepciones 4.3. Aspectos avanzados . . . . . . . . . . . . . . 4.3.1. Clases . . . . . . . . . . . . . . . . .</p> <p>III</p> <p>ICE avanzado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</p> <p>4748 48 48 49 49 50 50 51 52 53 54 54 54 56 57 58 59 59 60 61 63 63 64</p> <p>5. Propiedades de ICE y conguraci n o 5.1. Introducci n . . . . . . . . . . . o 5.2. Propiedades . . . . . . . . . . . 5.3. Archivos de conguraci n . . . o 5.4. La propiedad Ice.Cong . . . .</p> <p>6. Programaci n asncrona o 6.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.1.1. Invocaci n de m todos asncrona o AMI (Asynchronous Method Ino e vocation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2. Tratamiento de m todos asncrono o AMD (Asynchronous Method e Dispatch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3. Controlando la generaci n de c digo utilizando metadatos . . . . . . o o 6.1.4. Transparencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1. Simulando AMI utilizando invocaciones oneway . . . . . . . . . . . 6.2.2. Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.3. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4. Cuestiones asociadas a la concurrencia . . . . . . . . . . . . . . . . 6.2.5. Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. AMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1. Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Transferencia eciente de cheros 7.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 7.2. Versi n inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o</p> <p>7.3. 7.4. 7.5. 7.6. 7.7. 7.8.</p> <p>Usando AMI . . . . . . . . . . . . . . . . . . . . . Incrementando la eciencia con dos llamadas AMI . Uso de la caracterstica zero-copy del mapping a C++ Utilizando AMD en el servidor . . . . . . . . . . . . A n m s eciente . . . . . . . . . . . . . . . . . . . u a Conclusiones . . . . . . . . . . . . . . . . . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>. . . . . .</p> <p>66 69 71 72 73 76</p> <p>IV</p> <p>Servicios en ICE</p> <p>7778 78 80 86 86 87 87 88 89 92 92 95 95 99</p> <p>8. IceGrid 8.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 8.2. Ejemplo de aplicaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 9. Freeze 9.1. Introducci n . . . . . . . . . . o 9.2. Freeze map . . . . . . . . . . 9.2.1. Ejemplo de aplicaci n o 9.3. Freeze evictor . . . . . . . . . 9.3.1. Ejemplo de aplicaci n o 10. Glacier2 10.1. Introducci n . . . . . . . . o 10.2. Ejemplos de aplicaciones . 10.2.1. Ejemplo b sico . . a 10.2.2. Ejemplo avanzado</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>. . . .</p> <p>11. IceBox 101 11.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 o 11.2. Ejemplo de aplicaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 o 12. IceStorm 104 12.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 o 12.2. Ejemplo de aplicaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 o 13. IcePatch2 110 13.1. Introducci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 o 13.2. Ejemplo de aplicaci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 o Bibliografa 113</p> <p>Captulo 1 Introducci n o1.1. Introducci n general a los middlewares o 1.1.1. Conceptos 1.1.2. Fundamentos b sicos a 1.2. Caractersticas generales de ICE 1.3. Organizaci n de este documento o</p> <p>1.1.1.1.1.</p> <p>Introducci n general a los middlewares oConceptos</p> <p>Se puede entender un middleware como un software de conectividad que hace posible que aplicaciones distribuidas pueden ejecutarse sobre distintas plataformas heterog neas, es decir, e sobre plataformas con distintos sistemas operativos, que usan distintos protocolos de red y, que incluso, involucran distintos lenguajes de programaci n en la aplicaci n distribuida. o o Desde otro punto de vista distinto, un middleware se puede entender como una abstracci n en la complejidad y en la heterogeneidad que las redes de comunicaciones imponen. o De hecho, uno de los objetivos de un middleware es ofrecer un acuerdo en las interfaces y en los mecanismos de interoperabilidad, como contrapartida de los distintos desacuerdos en hardware, sistemas operativos, protocolos de red, y lenguajes de programaci n. o</p> <p>1</p> <p>1.1. Introducci n general a los middlewares o</p> <p>2</p> <p>Aplicacin</p> <p>Aplicacin</p> <p>APIs Middleware Serviciosdesistemas distribuidosInterfaz plataforma Interfaz plataforma</p> <p>Plataforma Sistema operativo</p> <p>Plataforma Sistema operativo</p> <p>Figura 1.1: Esquema general de un middleware</p> <p>1.1.2.</p> <p>Fundamentos b sicos a</p> <p>La mayora de los middlewares tratan de acercar el modelo de programaci n a un punto o de vista local, es decir, enmascarando la llamada a los procedimientos remotos. Por otra parte, el enfoque m s extendido es el de la generaci n de un proxy en la parte del cliente y a o de un esqueleto en la parte del servidor. Para ello, el cliente utiliza un objeto proxy con la misma interfaz denida en la parte del servidor, y que act a como intermediario. El servidor, u por otro lado, utiliza un esqueleto encargado de traducir los eventos de la red a invocaciones sobre el objeto en cuesti n. Como se puede apreciar, existe un gran acercamiento de la versi n o o distribuida a la versi n centralizada. o Las principales responsabilidades de un proxy son las siguientes: Codicar la invocaci n y los argumentos en un mensaje. o Esperar la respuesta y decodicar el valor o los valores de retorno. Por otra parte, las principales responsabilidades de un esqueleto son las siguientes: Esperar una invocaci n y decodicar el mensaje y los argumentos. o</p> <p>1.2. Caractersticas generales de ICE Invocar el m todo real. e Codicar el valor o los valores de retorno en un mensaje de respuesta.</p> <p>3</p> <p>Una cuesti n importante a tener en cuenta es la codicaci n de los datos en la red. Por o o ejemplo, es posible tener distintas representaciones de un mismo tipo de datos dependiendo del computador empleado. Para solucionar este problema, se suele denir una representaci n o externa can nica, y transformar a y desde un formato binario a partir de la representaci n o o externa. Este proceso es conocido como proceso de marshalling y unmarshalling. Por otra parte, el middleware tambi n ha de gestionar problemas inherentes a las comue nicaciones, como por ejemplo la identicaci n de mensajes, la gesti n de retransmisiones, la o o gesti n de conexiones, y la identicaci n de objetos. Por todo ello, la soluci n m s extendida o o o a se basa en un n cleo de comunicaciones gen rico y de un generador autom tico de proxies y u e a esqueletos.</p> <p>1.2.</p> <p>Caractersticas generales de ICE </p> <p>ICE (Internet Communication Engine) [4] es un middleware orientado a objetos, es decir, ICE proporciona herramientas, APIs, y soporte de bibliotecas para construir aplicaciones cliente-servidor orientadas a objetos. Una aplicaci n ICE se puede usar en entornos o heterog neos: los clientes y los servidores pueden escribirse en diferentes lenguajes de proe gramaci n, pueden ejecutarse en distintos sistemas operativos y en distintas arquitecturas, o y pueden comunicarse empleando diferentes tecnologas de red. Adem s, el c digo fuente a o de estas aplicaciones puede portarse de manera independiente al entorno de desarrollo. Los principales objetivos de diseno de ICE son los siguientes: Proporcionar un middleware listo para usarse en sistemas heterog neos. e Proveer un conjunto completo de caractersticas que soporten el desarrollo de aplica ciones distribuidas reales en un amplio rango de dominios. Evitar una complejidad innecesaria, haciendo que ICE sea f cil de aprender y de usar. a</p> <p>1.3. Organizaci n de este documento o</p> <p>4</p> <p>Proporcionar una implementaci n eciente en ancho de banda, en uso de memoria, y o en carga de CPU. Proporcionar una implementaci n basada en la seguridad, de forma que se pueda usar o sobre redes no seguras. Se puede decir que la losofa de ICE se basa en construir una plataforma tan potente como CORBA, pero sin cometer todos los fallos de esta y evitando una complejidad innecesaria.</p> <p>1.3.</p> <p>Organizaci n de este documento o</p> <p>Este documento est estructurado en cuatro partes: a Parte I, Un vistazo a ICE, realiza una toma de contacto con el middleware ZeroC ICE y expone un ejemplo sencillo de aplicaci n en ICE. o Parte II, Slice, alude al lenguaje de denici n de interfaces de ZeroC ICE, comentando o los aspectos b sicos por un lado y algunos de los aspectos m s avanzados por otro. a a Parte III, ICE avanzado, expone ciertos aspectos avanzados de ZeroC ICE. Parte IV, Servicios en ICE, realiza un estudio de los servicios propuestos por el middleware ZeroC ICE desde una perspectiva eminentemente pr ctica. a</p> <p>Parte I Un vistazo a ICE</p> <p>5</p> <p>Captulo 2 Toma de contacto con ICE2.1. La arquitectura de ICE 2.1.1. Terminologa 2.1.2. Slice (Lenguaje de especicaci n para ICE) o 2.1.3. Mappings de lenguajes 2.1.4. Estructura cliente-servidor 2.1.5. El protocolo ICE 2.1.6. Persistencia de objetos 2.2. Servicios ofrecidos por ICE 2.2.1. IceGrid 2.2.2. IceBox 2.2.3. IceStorm 2.2.4. IcePatch2 2.2.5. Glacier2 2.3. Benecios arquitect nicos de ICE o</p> <p>2.1.2.1.1.</p> <p>La arquitectura de ICETerminologa </p> <p>ICE introduce una serie de conceptos t cnicos que componen su propio vocabulario, como e ocurre con cualquier nueva tecnologa. Sin embargo, el objetivo perseguido fue reutilizar la </p> <p>6</p> <p>2.1. La arquitectura de ICE</p> <p>7</p> <p>mayor parte de terminologa existente en sistemas de este tipo, de forma que la cantidad de t rminos introducidos fuera mnima. De hecho, si el lector ha trabajado con tecnologas e relacionadas como CORBA, la terminologa aqu descrita le ser muy familiar. a 2.1.1.1. Clientes y servidores</p> <p>Los t rminos cliente y servidor no est n directamente asociados a dos partes distintas de e a una aplicaci n, sino que m s bien hacen referencia a los roles que las diferentes partes de una o a aplicaci n pueden asumir durante una petici n: o o L...</p>

Recommended

View more >