Empezar con ZeroC Ice en Debian
En esta receta se describe cómo instalar el middleware ZeroC ICE en Debian SID y cómo ejecutar un ejemplo básico en Python.
Introducción
ZeroC ICE es un middleware orientado a objetos, es decir, ICE proporciona herramientas, APIs, y soporte de bibliotecas para construir aplicaciones cliente-servidor orientadas a objetos. La filosofía de ZeroC ICE es la construcción de una plataforma tan potente como CORBA, pero sin cometer todos los fallos de ésta y evitando una complejidad innecesaria. ICE es software libre y está liberado bajo la licencia GNU/GPL.Instalación
Si somos usuarios de Debian y/o derivados, la instalación es muy sencilla:# apt-get update
# apt-get install zeroc-ice33
¡Hola, mundo!
El lenguaje de especificación de interfaces de ICE es Slice, y se utiliza para definir las interfaces, las operaciones, y los tipos de datos intercambiados entre el cliente y el servidor, entre otras cosas. El clásico ejemplo de ¡Hola, mundo! en Slice sería muy sencillo:module Demo {
interface HolaMundo {
void saludar ();
};
};
¡Hola, mundo! en Python
Cliente:import sys, traceback, Ice
Ice.loadSlice('holaMundo.ice', ['-I' '/usr/share/slice'])
import Demo
class Client (Ice.Application):
def run (self, argv):
basePrx = self.communicator().stringToProxy('HolaMundo:default -p 10000')
holaMundoPrx = Demo.HolaMundoPrx.checkedCast(basePrx)
holaMundoPrx.saludar()
return 0
Client().main(sys.argv)
import sys, traceback, Ice
Ice.loadSlice('../slice/HolaMundo.ice', ['-I' '/usr/share/slice'])
import Demo
class HolaMundoI (Demo.HolaMundo):
def saludar (self, current = None):
print '¡Hola Mundo!'
class Server (Ice.Application):
def run (self, argv):
self.shutdownOnInterrupt()
adapter = self.communicator().createObjectAdapterWithEndpoints(
'HolaMundoAdapter', 'default -p 10000')
adapter.add(HolaMundoI(), self.communicator().stringToIdentity('HolaMundo'))
adapter.activate()
self.communicator().waitForShutdown()
return 0
Server().main(sys.argv)
Ejecución
Servidor:$ python Server.pyCliente:
$ python Client.py
Referencias
ZeroC [ show comments ]
blog comments powered by Disqus