工作快一年了,打算把前半年的東西複習下,並且生成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學習筆記
引言 通過使遠地呼叫變得像傳統的方法呼叫一樣容易,現代中介軟體技術力圖 減輕程式設計師在轉向分布式應用開發時的負擔 你呼叫某個物件上的方法,當該方法完成時,就會返回結果,或是丟擲異常。當然,在分布式系統 中,物件的實現可能會駐留在另乙個主機上,從而帶來一些語義上的差 異,程式設計師必須加以注意,比如...