ice學習和編碼

2021-06-07 07:35:11 字數 2560 閱讀 1336

工作快一年了,打算把前半年的東西複習下,並且生成blog儲存。

ice是一種物件導向的中介軟體平台。從根本上說,這意味著ice為構建物件導向的客戶-伺服器應用提供了工具、api和庫的支援。ice應用是和在異種環境紅使用:客戶和伺服器可以用不同的程式語言編寫,可以執行在不同的作業系統而後及其架構上,並且可以使用多種網路技術進行通訊。無論部署環境如何,這些應用的編碼都是可移植的。

在下週的任務中,主要完成個人中心的優化,而個人中心是基於ice架構的,為了能夠弄清介面的呼叫機制和原理,打算深入了解下ice架構,但是發現學習能力有限,只能淺顯的談談個人學習感受,希望在今後的日子裡能夠學習到更多關於ice的知識。

服務名

功能

icepack

①把配置器名解析為協議和地質隊

②註冊伺服器

③簡單的物件查詢

icebox

協調許多應用元件的啟動和停止

icestrom

一種發布-訂閱系統

icepatch

軟體修補服務

glacier

ice防火牆,保障客-服之前安全通訊

**實現:

hello.ice

#ifndef hello_ice

#define hello_ice

module demo

;

};

#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()

def run(self, args):

if len(args) > 1:

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方法

實現結果:

主要**:

php客戶端主要**:

$p =  $ice->stringtoproxy("hello:tcp -p 10018:udp -p 10010");#建立乙個**

$hello =  $p->ice_checkedcast('::demo::hello'); #實現向下轉換,詢問伺服器這是hello介面**嗎?如果是返回hello**,如果不是返回乙個空**

$hello->sayhello($delay);#執行方法

結果展示:

ice學習和編碼

工作快一年了,打算把前半年的東西複習下,並且生成blog儲存。ice是一種物件導向的中介軟體平台。從根本上說,這意味著ice為構建物件導向的客戶 伺服器應用提供了工具 api和庫的支援。ice應用是和在異種環境紅使用 客戶和伺服器可以用不同的程式語言編寫,可以執行在不同的作業系統而後及其架構上,並且...

ICE的訊息編碼規則

1 代表size的長度字段 值小於255用1個位元組標示,如果大於255則使用5個位元組,第乙個位元組為255,後續的4個位元組標示真實長度 2 基本資料型別按照小端序進行實際長度編碼 3 字串被編碼成size加utf 8的實際內容,注意不包含結束字元 4 sequence被編碼成size加實際元素...

ice學習筆記

引言 通過使遠地呼叫變得像傳統的方法呼叫一樣容易,現代中介軟體技術力圖 減輕程式設計師在轉向分布式應用開發時的負擔 你呼叫某個物件上的方法,當該方法完成時,就會返回結果,或是丟擲異常。當然,在分布式系統 中,物件的實現可能會駐留在另乙個主機上,從而帶來一些語義上的差 異,程式設計師必須加以注意,比如...