ice学习和编码

工作快一年了,打算把前半年的东西复习下,并且生成blog保存。

转载请注明:http://blog.csdn.net/lengzijian/article/details/7688903

2.1ice简介

Ice是一种面向对象的中间件平台。从根本上说,这意味着ice为构建面向对象的客户-服务器应用提供了工具、API和库的支持。Ice应用是和在异种环境红使用:客户和服务器可以用不同的编程语言编写,可以运行在不同的操作系统而后及其架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这些应用的编码都是可移植的。

2.2为什么学习ice

在下周的任务中,主要完成个人中心的优化,而个人中心是基于ice架构的,为了能够弄清接口的调用机制和原理,打算深入了解下ice架构,但是发现学习能力有限,只能浅显的谈谈个人学习感受,希望在今后的日子里能够学习到更多关于ice的知识。

2.3ice的服务

服务名

功能

IcePack

把配置器名解析为协议和地质队

注册服务器

简单的对象查找

IceBox

协调许多应用组件的启动和停止

IceStrom

一种发布-订阅系统

IcePatch

软件修补服务

Glacier

Ice防火墙,保障客-服之前安全通信

2.3python创建客户-服务器应用

代码实现:

Hello.ice

#ifndef HELLO_ICE

#define HELLO_ICE

module Demo

{

interface Hello

{

idempotent void sayHello(int delay);

void shutdown();

};

};

#endif

服务端主要代码:

class HelloI(Demo.Hello): #定义接口方法的实现

def sayHello(self, delay, current=None):

if delay != 0:

time.sleep(delay / 1000.0)

print "Hello World!!!!"

def shutdown(self, current=None):

current.adapter.getCommunicator().shutdown()

class Server(Ice.Application):

def run(self, args):

if len(args) > 1:

print self.appName() + ": too many arguments"

return 1

adapter = self.communicator().createObjectAdapter("Hello")#创建对象适配器

adapter.add(HelloI(), self.communicator().stringToIdentity("hello"))#配置器的add方法加入一个新的servant

adapter.activate() #激活适配器

self.communicator().waitForShutdown()#挂起发出调用的线程,知道服务器实现终止为止

return 0

客户端主要代码

twoway=Demo.HelloPrx.checkedCast( self.communicator().propertyToProxy('Hello.Proxy').ice_twoway().ice_timeout(-1).ice_secure(False))#实现向下转换,询问服务器这是Hello接口代理吗?如果是返回hello代理,如果不是返回一个空代理

twoway.sayHello(delay)#调用sayHello方法

实现结果:

2.4php创建客户,python创建服务器应用

主要代码:

Php客户端主要代码:

$p = $ICE->stringToProxy("hello:tcp -p 10018:udp -p 10010");#创建一个代理

$hello = $p->ice_checkedCast('::Demo::Hello'); #实现向下转换,询问服务器这是Hello接口代理吗?如果是返回hello代理,如果不是返回一个空代理

$hello->sayHello($delay);#执行方法

结果展示:

你可能感兴趣的:(ice学习和编码)