python and ice

讲解使用python进行Ice中间件服务的编写,前提是你已经理解了Ice并在自己的机器上搭建好了针对python的Ice扩展,否则下面的内容你将一头雾水!~
本人的环境:centos5.5+python2.4.3+Ice3.4.2

使用Ice,当然少不了slice文件(也就是*.ice文件)啦,这里做一个简单的定义,在Demo模块中定义了Printer接口,接口中有一个代实现方法printString,接收一个s参数.
Hello.ice--
module Demo {
interface Printer {
void printString(string s);
};
};
然后,我们创建一个config.server文件作为配置文件,内容如下,
config.server--
Printer.Endpoints=tcp -h 192.168.48.128  -p 50110
接着,可以开始编写服务端代码了,Ice可以使用C++\JAVA\PYTHON等进行服务端代码的编写,下面是PYTHON服务端程序iceServer.py的代码,
iceServer.py--
#coding=gbk
import sys, traceback, time, Ice
Ice.loadSlice('Hello.ice')   #加载slice文件并编译,其实是把slice2py该干的事情都干好了,
                           #下面就直接用import Demo引入模块
import Demo
class PrinterI(Demo.Printer): #继承 Printer接口
    def printString(self,str,current=None): #实现了接口的printString函数
        print str
class Server(Ice.Application):
    def run(self,args):
        if len(args)>1:
            print self.appName() + ": too many arguments"
            return 1
        adapter = self.communicator().createObjectAdapter("Printer")
        adapter.add(PrinterI(), self.communicator().stringToIdentity("Printer"))
        adapter.activate()
        self.communicator().waitForShutdown()
        return 0
sys.stdout.flush()
app=Server()
app.main(sys.argv,"config.server")
用下面的命令执行服务端程序,没有任何输出,也没有退出(如下图),说明已经正常的启动了服务了,在执行完之后不要去中断它,保持如图所示状态就好。
python iceServer.py
python编写的Ice服务--python客户端访问

有了服务端,我们当然就可以写客户端程序去访问服务端了,和服务端一样,C++\JAVA\PYTHON等语言都可以编写客户端,这里说明一下,php也可以而且只可以编写Ice的客户端,道理就不多说了。这里我们仍然用python编写iceClient.py,内容如下,
iceClient.py--
import os,sys,traceback,Ice
Ice.loadSlice("Hello.ice")
import Demo
ic=Ice.initialize(sys.argv)
base=ic.stringToProxy("Printer:tcp -h 192.168.48.128 -p 50110")
printer=Demo.PrinterPrx.checkedCast(base)
if not printer:
       raise RuntimeError("Invalid proxy")
printer.printString("Hello World!")
写好代码,咱们来执行一下~
python iceClient.py
python编写的Ice服务--python客户端访问





没有任何输出?没事,在看看刚才执行的iceServer.py这边,客户端传过来的“Hello World!”打印出来了,完成,拍手~!


搞个结构体或者类,会觉得比较复杂,主要是python 类型的对应管理,没啥可以说了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值