Ice Spanish

  • View
    135

  • Download
    1

Embed Size (px)

Text of Ice Spanish

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

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

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

I

Un vistazo a ICE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56 6 6 19 19 19 21 22 22 23 23 24 24 24 24 26 26 26 27 30 32 33

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

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

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

3

INDICE GENERAL

4

II

Slice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3536 36 37 37 38 39 40 40 41 42 46 46

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 . . . . . . . . . . . . . . . . .

III

ICE avanzado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4748 48 48 49 49 50 50 51 52 53 54 54 54 56 57 58 59 59 60 61 63 63 64

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 . . . .

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

7.3. 7.4. 7.5. 7.6. 7.7. 7.8.

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 . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

66 69 71 72 73 76

IV

Servicios en ICE

7778 78 80 86 86 87 87 88 89 92 92 95 95 99

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

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

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

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

1.1.1.1.1.

Introducci n general a los middlewares oConceptos

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

1

1.1. Introducci n general a los middlewares o

2

Aplicacin

Aplic