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);#執行方法

結果展示:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章