ice学习和编码

梦想的初衷 提交于 2020-03-23 15:43:06

 工作快一年了,打算把前半年的东西复习下,并且生成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);#执行方法

结果展示:

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!