Ice的设计思想非常好,通过slice定义之后产生一堆的通信框架代码来自动化完成对象数据的序列化
由于ice是基于Rpc的,底层通信细节被屏蔽掉了,甚至是连接的自动重复建立,可喜又可悲,有些应用必须要关心这些底部的通信细节,
如果直接用socket又嫌太麻烦了,不同的应用都是在重复的进行开发通信协议,解包和打包花销很很多的精力,这些工作都是重复的,没有技术含量而且容易出错.
之前开发过mtslib通信库来解决socket通信问题,使两端都是以消息包的形式进行通信,解决了socket两段buffer的管理
也看过ice的代码实现,slice2cpp用yacc&lex进行词法语法的处理
对象的自动序列化这是我所感兴趣的,同ice一样提供一个通信环境,然后用户可以自定义自己的通信数据,通过idl的形式自动产生序列化代码并编译进用户工程.
这种方式与ice又不同在于没有那么傻瓜化,但简化了用户处理消息报的过程.
这样要完成一个类似ice的rpc调用也是没有那么简单
yacc/lex,lemon,