Ice的設(shè)計(jì)思想非常好,通過slice定義之后產(chǎn)生一堆的通信框架代碼來自動(dòng)化完成對(duì)象數(shù)據(jù)的序列化
由于ice是基于Rpc的,底層通信細(xì)節(jié)被屏蔽掉了,甚至是連接的自動(dòng)重復(fù)建立,可喜又可悲,有些應(yīng)用必須要關(guān)心這些底部的通信細(xì)節(jié),
如果直接用socket又嫌太麻煩了,不同的應(yīng)用都是在重復(fù)的進(jìn)行開發(fā)通信協(xié)議,解包和打包花銷很很多的精力,這些工作都是重復(fù)的,沒有技術(shù)含量而且容易出錯(cuò).
之前開發(fā)過mtslib通信庫來解決socket通信問題,使兩端都是以消息包的形式進(jìn)行通信,解決了socket兩段buffer的管理
也看過ice的代碼實(shí)現(xiàn),slice2cpp用yacc&lex進(jìn)行詞法語法的處理
對(duì)象的自動(dòng)序列化這是我所感興趣的,同ice一樣提供一個(gè)通信環(huán)境,然后用戶可以自定義自己的通信數(shù)據(jù),通過idl的形式自動(dòng)產(chǎn)生序列化代碼并編譯進(jìn)用戶工程.
這種方式與ice又不同在于沒有那么傻瓜化,但簡(jiǎn)化了用戶處理消息報(bào)的過程.
這樣要完成一個(gè)類似ice的rpc調(diào)用也是沒有那么簡(jiǎn)單
yacc/lex,lemon,